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)