|
import os |
|
import openai |
|
import PyPDF2 |
|
import gradio as gr |
|
import docx |
|
|
|
class CourseGenarator: |
|
def __init__(self): |
|
openai.api_key = os.getenv("OPENAI_API_KEY") |
|
|
|
def extract_text_from_file(self,file_path): |
|
|
|
file_extension = os.path.splitext(file_path)[1] |
|
|
|
if file_extension == '.pdf': |
|
with open(file_path, 'rb') as file: |
|
|
|
reader = PyPDF2.PdfFileReader(file) |
|
|
|
|
|
extracted_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: |
|
|
|
return file.read() |
|
|
|
elif file_extension == '.docx': |
|
doc = docx.Document(file_path) |
|
text = [] |
|
for paragraph in doc.paragraphs: |
|
text.append(paragraph.text) |
|
return '\n'.join(text) |
|
|
|
else: |
|
return "Unsupported file type" |
|
|
|
def response(self,resume_path): |
|
resume_path = resume_path.name |
|
resume = self.extract_text_from_file(resume_path) |
|
|
|
|
|
|
|
prompt = f"""Analyze the resume to write the summary for following resume delimitted by triple backticks. |
|
```{resume}``` |
|
""" |
|
|
|
|
|
response = openai.Completion.create( |
|
engine='text-davinci-003', |
|
prompt=prompt, |
|
max_tokens=200, |
|
temperature=0, |
|
n=1, |
|
stop=None, |
|
) |
|
|
|
|
|
generated_text = response.choices[0].text.strip() |
|
|
|
return generated_text |
|
|
|
def gradio_interface(self): |
|
with gr.Blocks(css="style.css",theme='karthikeyan-adople/hudsonhayes-gray') as app: |
|
gr.HTML("""<center class="darkblue" style='background-color:rgb(0,1,36); text-align:center;padding:30px;'><center> |
|
<img class="leftimage" align="left" src="https://companieslogo.com/img/orig/RAND.AS_BIG-0f1935a4.png?t=1651813778" alt="Image" width="210" height="210"> |
|
<h1 class ="center" style="color:#fff">ADOPLE AI</h1></center> |
|
<br><center><h1 style="color:#fff">Resume Summarizer</h1></center>""") |
|
|
|
with gr.Row(elem_id="col-container"): |
|
with gr.Column(): |
|
resume = gr.File(label="Resume",elem_classes="heightfit") |
|
|
|
with gr.Column(): |
|
analyse = gr.Button("Analyze") |
|
|
|
with gr.Column(): |
|
result = gr.Textbox(label="Summarized",lines=8) |
|
|
|
analyse.click(self.response, [resume], result) |
|
print(result) |
|
|
|
app.launch() |
|
|
|
ques = CourseGenarator() |
|
ques.gradio_interface() |