Resume-Parser / app.py
Sher1988's picture
Update app.py
aa4d982 verified
import streamlit as st
import pandas as pd
import tempfile
from core.ingestion.docling_loader import load_and_convert_cv
from core.parsing.extractor import extract_resume
from core.processing.dataframe import resume_to_df, resume_to_dfs
st.title("📊 Resume Details Extractor")
# ---- session state init ----
if "processed" not in st.session_state:
st.session_state.processed = False
if "dfs" not in st.session_state:
st.session_state.dfs = None
uploaded_file = st.file_uploader("Upload CV (PDF)", type=["pdf"])
if not uploaded_file:
st.session_state.processed = False
st.session_state.dfs = None
# ---- process only once ----
if uploaded_file and not st.session_state.processed:
with tempfile.NamedTemporaryFile(delete=False, suffix=".pdf") as tmp:
tmp.write(uploaded_file.read())
pdf_path = tmp.name
text = load_and_convert_cv(pdf_path)
data = extract_resume(text)
dfs = resume_to_dfs(data)
st.session_state.data = data
st.session_state.dfs = dfs
st.session_state.processed = True
# ---- display from session (no recompute) ----
if st.session_state.processed and st.session_state.dfs is not None:
dfs = st.session_state.dfs
data = st.session_state.data # Ensure data is pulled from state
# Display other tables (Experience, Education, etc.)
for label, df in dfs.items():
st.subheader(label.replace("_", " ").title())
st.dataframe(df, use_container_width=True)
csv = df.to_csv(index=False).encode("utf-8")
st.download_button(
"Download CSV",
data=csv,
file_name=f"{label}.csv",
mime="text/csv"
)