Spaces:
Build error
Build error
| 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) | |