Karthikeyan
Update app.py
885e79a
raw
history blame
3.54 kB
import gradio as gr
import PyPDF2
import os
import openai
def extract_text_from_file(file_path):
# Get the file extension
file_extension = os.path.splitext(file_path)[1]
if file_extension == '.pdf':
with open(file_path, 'rb') as file:
# Create a PDF file reader object
reader = PyPDF2.PdfFileReader(file)
# Create an empty string to hold the extracted text
extracted_text = ""
# Loop through each page in the PDF and extract the text
for page_number in range(reader.getNumPages()):
page = reader.getPage(page_number)
extracted_text += page.extractText()
return extracted_text
elif file_extension == '.txt':
with open(file_path, 'r') as file:
# Just read the entire contents of the text file
return file.read()
else:
return "Unsupported file type"
def responce_from_ai(textjd, textcv):
resume = extract_text_from_file(textjd)
job_description = extract_text_from_file(textcv)
response = openai.Completion.create(
engine="text-davinci-003",
prompt=f"""
Given the job description and the resume, assess the matching percentage and approximate percentage of the resume for the job.**Job Description:**{job_description}**Resume:**{resume}**Matching Assessment:**Based on an analysis of the resume and the job description,
the overall matching percentage is estimated to be approximately [insert approximate percentage here].
**Detailed Analysis:**
the result should be in this format:
matched percentage: [matching percentage]
reason : [reason for this result]
keywords : [matched key words from job_description and resume]
""",
temperature=0,
max_tokens=100,
n=1,
stop=None,
)
generated_text = response.choices[0].text.strip()
return generated_text
def matching_percentage(job_description_path, resume_path):
job_description_path = job_description_path.name
resume_path = resume_path.name
generated_text = responce_from_ai(job_description_path, resume_path)
return generated_text
with gr.Blocks(css="style.css",theme=gr.themes.Soft()) as app:
gr.HTML("""<img class="leftimage" align="left" src="https://companieslogo.com/img/orig/RAND.AS_BIG-0f1935a4.png?t=1651813778" alt="Image" width="210" height="210">
<img class="rightimage" align="right" src="https://workllama.com/wp-content/uploads/2022/05/WL_Logo.svg" alt="Image" width="210" height="210">""")
with gr.Row():
with gr.Column(elem_id="col-container"):
gr.HTML(
"""<br style="color:white;">"""
)
gr.HTML(
"""<h2 style="text-align:center; color:"white">Workllama Resume Matcher</h2> """
)
gr.HTML("<br>")
with gr.Row():
with gr.Column(scale=0.45, min_width=150, ):
jobDescription = gr.inputs.File(label="Job Description")
with gr.Column(scale=0.45, min_width=150):
resume = gr.inputs.File(label="Resume")
with gr.Column(scale=0.10, min_width=150):
find = gr.Button("Analyze")
with gr.Row():
with gr.Column(scale=1.0, min_width=150):
output = gr.outputs.Textbox(label="Matching Percentage")
find.click(matching_percentage, [jobDescription, resume], [output])
app.launch()