File size: 3,385 Bytes
75bc0c6
683d9b9
75bc0c6
ae96c08
75bc0c6
6d28c28
 
 
 
 
fdd5782
 
ae96c08
 
6d28c28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ae96c08
 
6d28c28
 
 
 
 
 
ae96c08
 
e777cf2
6d28c28
 
 
 
 
 
 
 
 
 
d7f192b
75bc0c6
 
6d28c28
 
 
 
 
 
 
 
 
 
 
 
75bc0c6
 
683d9b9
 
ae96c08
38c866d
683d9b9
 
 
75bc0c6
 
6d28c28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import gradio as gr
import openai
import os
import fitz  # PyMuPDF

# Set OpenAI API key from environment variable
api_key = os.getenv("OPENAI_API_KEY")

if not api_key:
    raise ValueError("OpenAI API key not found. Please set it in the environment variables.")

openai.api_key = api_key

def extract_text_from_pdf(pdf_file):
    try:
        # Open the PDF file
        document = fitz.open(pdf_file.name)
        text = ""
        # Extract text from each page
        for page_num in range(len(document)):
            page = document.load_page(page_num)
            text += page.get_text()
        return text
    except Exception as e:
        return f"Error extracting text from PDF: {e}"

def extract_keywords(job_description):
    prompt = f"""به عنوان یک تحلیلگر حرفه‌ای، لطفا مهم‌ترین کلمات کلیدی را از شرح شغل زیر استخراج کنید:
    شرح شغل: {job_description}
    پاسخ را به صورت یک لیست از کلمات کلیدی ارائه دهید.
    """
    
    try:
        response = openai.ChatCompletion.create(
            model="gpt-4",
            messages=[
                {"role": "system", "content": "You are a helpful assistant."},
                {"role": "user", "content": prompt}
            ],
            temperature=0
        )
        keywords = response.choices[0].message['content']
        return keywords
    except Exception as e:
        return f"Error during keyword extraction: {e}"

def evaluate_resume(pdf_file, job_description):
    # Extract keywords from job description
    keywords = extract_keywords(job_description)
    
    if "Error" in keywords:
        return keywords
    
    # Extract text from PDF
    resume_text = extract_text_from_pdf(pdf_file)
    
    if "Error" in resume_text:
        return resume_text
    
    prompt = f"""به عنوان یک تحلیلگر با تجربه سیستم ردیابی متقاضی (ATS)، نقش شما شامل ارزیابی رزومه در برابر شرح شغل و کلمات کلیدی استخراج شده است.
    لطفاً رزومه فرد را با کلمات کلیدی زیر مطابقت دهید و درصد تطابق را بر اساس معیارهای کلیدی و همچنین تعداد کلمات کلیدی گمشده و منطبق را محاسبه کنید.
    
    کلمات کلیدی: {keywords}
    رزومه: {resume_text}
    
    من پاسخ را در یک رشته با ساختار زیر می‌خواهم:
    {{"تطابق شرح شغل با رزومه فرد ":"%"، "تعداد کلمات کلیدی غیر منطبق  ":""، "تعداد کلمات کلیدی منطبق   ":" }}
    """
    
    try:
        response = openai.ChatCompletion.create(
            model="gpt-4",
            messages=[
                {"role": "system", "content": "You are a helpful assistant."},
                {"role": "user", "content": prompt}
            ],
            temperature=0
        )
        return response.choices[0].message['content']
    except Exception as e:
        return f"Error during resume evaluation: {e}"

iface = gr.Interface(
    fn=evaluate_resume,
    inputs=[
        gr.File(label="Upload Resume PDF"),
        gr.Textbox(lines=10, label="Job Description")
    ],
    outputs="text",
    title="Resume Evaluator"
)

iface.launch()