Spaces:
Build error
Build error
File size: 2,893 Bytes
4b1e832 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | import streamlit as st
import pandas as pd
import re
import pdfplumber
import os
from langchain.vectorstores import Chroma
from langchain.embeddings.sentence_transformer import SentenceTransformerEmbeddings
embedding_function = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2")
db3 = Chroma(persist_directory="./eldassresumes", embedding_function=embedding_function)
page_content_list = []
source_list = []
Emails=[]
Phone_numbers=[]
def extract_contact_info_from_resume(pdf_path):
# Open the PDF file
with pdfplumber.open(pdf_path) as pdf:
# Initialize variables to store extracted information
email = ''
phone_number = ''
mytext = ''
# Extract text from each page
for page in pdf.pages:
text = page.extract_text()
# Use regular expressions to extract email and phone number
mytext += text
email_match = re.search(r'(\S+@\S+)', text)
phone_match = re.search(r'(\d{10,})', text)
# print(phone_match)
# Update variables if matches are found
if email_match:
email = email_match.group(1)
# else:print('Match not found')
if phone_match:
phone_number = phone_match.group(1)
# print(phone_number)
# else:print('Match Not found')
# Return the extracted information
# print({'Email': email, 'Phone Number': phone_number , 'Source':pdf_path})
return {'Email': email, 'Phone Number': phone_number , 'Source':pdf_path}
st.title("Resume Search Engine")
st.subheader("Search for a resume")
query = st.text_input("Enter your search query")
number = st.number_input("Enter number of results", min_value=1, max_value=10, value=5)
if st.button("Search"):
retriever = db3.as_retriever(search_kwargs={"k": number})
docs = retriever.get_relevant_documents(query)
for i in range(len(docs)):
if len(docs[i].page_content) > 7:
page_content_list.append(docs[i].page_content)
source_list.append(docs[i].metadata['source'])
data = extract_contact_info_from_resume(docs[i].metadata['source'])
# Emails.append(data['Email'])
if data['Email'] != None:
Emails.append(data['Email'])
else:
Emails.append('No Email available')
if data['Phone Number'] != None:
Phone_numbers.append(data['Phone Number'])
else:
Phone_numbers.append('No Phone Number available')
else:
page_content_list.append('No data available')
source_list.append('No source available')
df = pd.DataFrame({'Page Content': page_content_list, 'Source': source_list , 'PHNO':Phone_numbers , 'Emails':Emails })
st.dataframe(df)
|