File size: 3,709 Bytes
75bc0c6
683d9b9
75bc0c6
ae96c08
cd29886
2cfe4d6
 
fdd5782
ae96c08
 
2cfe4d6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b1d9e65
2cfe4d6
 
 
 
2755fa4
2cfe4d6
 
 
 
 
 
 
 
 
 
ae96c08
 
2cfe4d6
 
 
 
 
 
ae96c08
 
e777cf2
2cfe4d6
 
 
 
 
 
 
 
 
 
d7f192b
75bc0c6
 
2cfe4d6
 
2755fa4
2cfe4d6
 
 
 
 
 
 
 
 
75bc0c6
 
683d9b9
 
ae96c08
38c866d
683d9b9
 
 
75bc0c6
 
2cfe4d6
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
import gradio as gr
import openai
import os
import fitz  # PyMuPDF
openai.api_key = "sk-1E6ExsyFb-cdU8jPNDP1dsEq_ra_bazU-EXQZQ86pJT3BlbkFJ4zURsV0t--3qNM7A-P57NUqZIBosrL7POwzpjR5EQA"
# Set OpenAI API key from environment variable



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-4o",
            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-4o",
            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()