34 lines
938 B
Python
34 lines
938 B
Python
import os
|
|
import fitz # PyMuPDF
|
|
import spacy
|
|
import requests
|
|
from recruitment import models
|
|
from django.conf import settings
|
|
|
|
nlp = spacy.load("en_core_web_sm")
|
|
|
|
def extract_text_from_pdf(pdf_path):
|
|
text = ""
|
|
with fitz.open(pdf_path) as doc:
|
|
for page in doc:
|
|
text += page.get_text()
|
|
return text
|
|
|
|
def extract_summary_from_pdf(pdf_path):
|
|
if not os.path.exists(pdf_path):
|
|
return {'error': 'File not found'}
|
|
|
|
text = extract_text_from_pdf(pdf_path)
|
|
doc = nlp(text)
|
|
summary = {
|
|
'name': doc.ents[0].text if doc.ents else '',
|
|
'skills': [chunk.text for chunk in doc.noun_chunks if len(chunk.text.split()) > 1],
|
|
'summary': text[:500]
|
|
}
|
|
return summary
|
|
|
|
def match_resume_with_job_description(resume, job_description,prompt=""):
|
|
resume_doc = nlp(resume)
|
|
job_doc = nlp(job_description)
|
|
similarity = resume_doc.similarity(job_doc)
|
|
return similarity |