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%})")