DreamStream-1 commited on
Commit
c4c5b60
·
verified ·
1 Parent(s): b415874

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +14 -23
app.py CHANGED
@@ -3,7 +3,6 @@ import requests
3
  import os
4
  import csv
5
  from sentence_transformers import util
6
- import fitz # PyMuPDF for PDF extraction
7
 
8
  # Set up API endpoint and API Key
9
  api_key = os.getenv("GOOGLE_API_KEY") # Store your API Key in environment variables
@@ -31,20 +30,12 @@ def get_gemini_embeddings(text):
31
  return []
32
 
33
  def extract_text_from_resume(resume_file):
34
- # Extract text from PDF resume file using PyMuPDF
35
- text = ""
36
- try:
37
- # Open the PDF file
38
- with fitz.open(resume_file.name) as doc:
39
- for page in doc:
40
- text += page.get_text()
41
- except Exception as e:
42
- print(f"Error extracting text from {resume_file.name}: {e}")
43
- return text
44
 
45
  def extract_leadership_experience(resume_text):
46
  # Logic to extract leadership experience from resume text
47
- # (For simplicity, we'll just return a placeholder)
48
  return "Leadership Experience Example"
49
 
50
  def extract_entities_via_gemini(resume_text):
@@ -52,7 +43,6 @@ def extract_entities_via_gemini(resume_text):
52
  return {"name": "John Doe", "email": "john.doe@example.com", "contact": "123-456-7890"}
53
 
54
  def save_results_to_csv(results):
55
- # Save the results to a CSV file and return the file path
56
  csv_file_path = "/tmp/results.csv"
57
  with open(csv_file_path, mode='w', newline='') as file:
58
  writer = csv.writer(file)
@@ -63,24 +53,25 @@ def save_results_to_csv(results):
63
 
64
  def check_similarity(job_description, resume_files):
65
  results = []
66
-
67
  # Get embeddings for the job description using Gemini 1.5 Flash
68
  job_emb = get_gemini_embeddings(job_description)
69
 
70
  if not job_emb:
71
- return "Error in embedding job description using Gemini 1.5 Flash API."
 
72
 
73
  for resume_file in resume_files:
74
  resume_text = extract_text_from_resume(resume_file)
75
  if not resume_text:
76
- results.append((resume_file.name, 0, "Not Eligible", None, "No leadership experience", "No Email", "No Contact"))
77
  continue
78
 
79
  # Get embeddings for the resume using Gemini 1.5 Flash
80
  resume_emb = get_gemini_embeddings(resume_text)
81
 
82
  if not resume_emb:
83
- results.append((resume_file.name, 0, "Not Eligible", None, "No leadership experience", "No Email", "No Contact"))
84
  continue
85
 
86
  # Calculate similarity score between job description and resume
@@ -92,7 +83,7 @@ def check_similarity(job_description, resume_files):
92
 
93
  if similarity_score >= 0.50:
94
  candidate_name = contact_info.get('name', 'Unknown Candidate')
95
- results.append((
96
  resume_file.name,
97
  similarity_percentage,
98
  "Eligible",
@@ -100,9 +91,9 @@ def check_similarity(job_description, resume_files):
100
  leadership_experience,
101
  contact_info.get('email', 'No Email'),
102
  contact_info.get('contact', 'No Contact')
103
- ))
104
  else:
105
- results.append((
106
  resume_file.name,
107
  similarity_percentage,
108
  "Not Eligible",
@@ -110,9 +101,9 @@ def check_similarity(job_description, resume_files):
110
  leadership_experience,
111
  contact_info.get('email', 'No Email'),
112
  contact_info.get('contact', 'No Contact')
113
- ))
114
-
115
- # Return results and the path to the CSV file
116
  csv_file_path = save_results_to_csv(results)
117
  return results, csv_file_path
118
 
 
3
  import os
4
  import csv
5
  from sentence_transformers import util
 
6
 
7
  # Set up API endpoint and API Key
8
  api_key = os.getenv("GOOGLE_API_KEY") # Store your API Key in environment variables
 
30
  return []
31
 
32
  def extract_text_from_resume(resume_file):
33
+ # Extract text from resume (for example, using PyPDF2 or textract for PDFs)
34
+ # This placeholder should be replaced with actual code for resume text extraction
35
+ return "Sample resume text"
 
 
 
 
 
 
 
36
 
37
  def extract_leadership_experience(resume_text):
38
  # Logic to extract leadership experience from resume text
 
39
  return "Leadership Experience Example"
40
 
41
  def extract_entities_via_gemini(resume_text):
 
43
  return {"name": "John Doe", "email": "john.doe@example.com", "contact": "123-456-7890"}
44
 
45
  def save_results_to_csv(results):
 
46
  csv_file_path = "/tmp/results.csv"
47
  with open(csv_file_path, mode='w', newline='') as file:
48
  writer = csv.writer(file)
 
53
 
54
  def check_similarity(job_description, resume_files):
55
  results = []
56
+
57
  # Get embeddings for the job description using Gemini 1.5 Flash
58
  job_emb = get_gemini_embeddings(job_description)
59
 
60
  if not job_emb:
61
+ # In case of an error, return an empty DataFrame and an error message
62
+ return [["Error in embedding job description using Gemini 1.5 Flash API."]], None
63
 
64
  for resume_file in resume_files:
65
  resume_text = extract_text_from_resume(resume_file)
66
  if not resume_text:
67
+ results.append([resume_file.name, 0, "Not Eligible", None, "No leadership experience", "No Email", "No Contact"])
68
  continue
69
 
70
  # Get embeddings for the resume using Gemini 1.5 Flash
71
  resume_emb = get_gemini_embeddings(resume_text)
72
 
73
  if not resume_emb:
74
+ results.append([resume_file.name, 0, "Not Eligible", None, "No leadership experience", "No Email", "No Contact"])
75
  continue
76
 
77
  # Calculate similarity score between job description and resume
 
83
 
84
  if similarity_score >= 0.50:
85
  candidate_name = contact_info.get('name', 'Unknown Candidate')
86
+ results.append([
87
  resume_file.name,
88
  similarity_percentage,
89
  "Eligible",
 
91
  leadership_experience,
92
  contact_info.get('email', 'No Email'),
93
  contact_info.get('contact', 'No Contact')
94
+ ])
95
  else:
96
+ results.append([
97
  resume_file.name,
98
  similarity_percentage,
99
  "Not Eligible",
 
101
  leadership_experience,
102
  contact_info.get('email', 'No Email'),
103
  contact_info.get('contact', 'No Contact')
104
+ ])
105
+
106
+ # Save results to CSV and return them
107
  csv_file_path = save_results_to_csv(results)
108
  return results, csv_file_path
109