pradeepodela's picture
Create app.py
4b1e832 verified
Raw
History Blame Contribute Delete
2.89 kB
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)