36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
import pdfreader
|
|
import textdistance
|
|
from pdfreader import PDFDocument, SimplePDFViewer
|
|
|
|
# Preparing resume parsing
|
|
file_name = "example_resume.pdf"
|
|
fd = open(file_name, "rb")
|
|
doc = SimplePDFViewer(fd)
|
|
doc.render()
|
|
|
|
# Getting the string content from the file
|
|
resume_content_dump = " ".join(doc.canvas.strings)
|
|
sucky_resume_content = " ".join(doc.canvas.strings[:5])
|
|
# print(resume_content_dump)
|
|
|
|
# Example inputs from the company
|
|
previous_roles = ["technical product manager", "product manager"]
|
|
previous_skills = ["react", "sql"]
|
|
previous_roles.extend(previous_skills)
|
|
client_interests = previous_roles
|
|
print(client_interests)
|
|
|
|
# Test of text distance algo
|
|
print(textdistance.levenshtein.normalized_similarity('ass', 'a s s'))
|
|
|
|
# Finding total final score for words
|
|
list_norm_scores = [textdistance.jaro_winkler(resume_content_dump, word) for word in client_interests]
|
|
avg_normalized_score = sum(list_norm_scores) / len(list_norm_scores)
|
|
|
|
# sucky resume
|
|
sucky_list_norm_scores = [textdistance.jaro_winkler(sucky_resume_content, word) for word in client_interests]
|
|
sucky_avg_normalized_score = sum(sucky_list_norm_scores) / len(sucky_list_norm_scores)
|
|
|
|
print('stud resume: ', avg_normalized_score * 100)
|
|
print('sucky: ', sucky_avg_normalized_score * 100)
|