Spaces:
No application file
No application file
File size: 2,127 Bytes
fd5e85b 1e38b2d |
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 |
import streamlit as st
from pdf_parser import parse_resume
st.set_page_config(page_title="Resume Parser", layout="centered")
st.title("Resume Parser")
uploaded_file = st.file_uploader("Upload your resume (PDF)", type=["pdf"])
if uploaded_file:
with open("temp_resume.pdf", "wb") as f:
f.write(uploaded_file.getbuffer())
try:
result = parse_resume("temp_resume.pdf")
except Exception as e:
st.error(f"Error parsing resume: {str(e)}")
st.stop()
# Prepare structured output
structured_output = {
"name": result.get("name", {}).get("value"),
"email": result.get("email", {}).get("value"),
"phone": result.get("phone", {}).get("value"),
"linkedin": result.get("linkedin", {}).get("value"),
"skills": result.get("skills", {}).get("value") or [],
"education": result.get("education", {}).get("value"),
"experience": result.get("experience", {}).get("value"),
"projects": result.get("projects", {}).get("value"),
"certifications": result.get("certifications", {}).get("value"),
}
# Display results
st.subheader("Parsed Resume Data")
st.json(structured_output)
st.subheader("Detailed Analysis")
fields = [
("Personal Info", ["name", "email", "phone", "linkedin"]),
("Skills", ["skills"]),
("Professional History", ["experience", "projects"]),
("Education & Certifications", ["education", "certifications"])
]
for category, field_keys in fields:
st.markdown(f"### {category}")
cols = st.columns(2)
for i, field in enumerate(field_keys):
data = result.get(field, {})
value = data.get("value", "NIL")
conf = data.get("confidence", 0)
if value == "NIL" or conf == 0:
cols[i%2].error(f"{field.title()}: Not detected")
elif conf < 0.7:
cols[i%2].warning(f"{field.title()}: {value} (Confidence: {conf:.0%})")
else:
cols[i%2].success(f"{field.title()}: {value} (Confidence: {conf:.0%})")
|