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)