Spaces:
Sleeping
Sleeping
| import os | |
| import streamlit as st | |
| import google.generativeai as genai | |
| import pandas as pd | |
| from io import StringIO | |
| import fitz # PyMuPDF | |
| # Configure Google Generative AI | |
| genai.configure(api_key=os.getenv("GOOGLE_API_KEY")) | |
| model = genai.GenerativeModel('gemini-1.5-flash') | |
| def extract_text_from_pdf(file): | |
| """Extract text from PDF.""" | |
| text = "" | |
| doc = fitz.open(stream=file.read(), filetype="pdf") | |
| for page in doc: | |
| text += page.get_text() | |
| return text | |
| def get_gemini_response(prompt): | |
| """Function to load Google Gemini model and provide queries as response.""" | |
| response = model.generate_content([prompt]) | |
| return response[0]['text'] # Adjust this line based on actual response structure | |
| def extract_skills(resume_text): | |
| prompt = f"Extract the skills from the following resume:\n\n{resume_text}" | |
| skills = get_gemini_response(prompt) | |
| return skills | |
| def match_job_description(resume_text, job_description): | |
| prompt = f"Compare the following resume with the job description and provide a match score:\n\nResume:\n{resume_text}\n\nJob Description:\n{job_description}" | |
| score = get_gemini_response(prompt) | |
| return score | |
| # Streamlit application layout | |
| st.title('Resume Analyzer for Recruiters') | |
| st.header('Upload Resume') | |
| uploaded_file = st.file_uploader('Choose a file', type=['pdf', 'docx', 'txt']) | |
| if uploaded_file is not None: | |
| if uploaded_file.type == "application/pdf": | |
| resume_text = extract_text_from_pdf(uploaded_file) | |
| else: | |
| resume_text = uploaded_file.getvalue().decode("utf-8") | |
| st.subheader('Resume Text') | |
| st.write(resume_text) | |
| st.subheader('Extract Skills') | |
| if st.button('Extract Skills'): | |
| skills = extract_skills(resume_text) | |
| st.write('Skills:', skills) | |
| st.subheader('Match with Job Description') | |
| job_description = st.text_area('Enter Job Description') | |
| if st.button('Match'): | |
| score = match_job_description(resume_text, job_description) | |
| st.write('Match Score:', score) | |
| st.sidebar.header('About') | |
| st.sidebar.write(""" | |
| This application uses the Google Generative AI Gemini-pro model to analyze resumes, extract key skills, and match resumes with job descriptions. It helps recruiters quickly evaluate candidates and streamline the recruitment process. | |
| """) |