stem / app.py
pentarosarium's picture
test new backend
419a8ba
import streamlit as st
import pandas as pd
import os
import modal
from modal import Function
def init_modal():
"""Initialize Modal with direct token"""
try:
token = os.environ.get('MODAL_TOKEN')
if not token:
st.error("MODAL_TOKEN not found in environment variables")
return False
# Set Modal token directly
modal.config.token = token
st.success("Modal token set successfully")
return True
except Exception as e:
st.error(f"Failed to initialize Modal: {str(e)}")
st.exception(e)
return False
def main():
st.title("Financial Statement Analyzer")
# Initialize Modal
if not init_modal():
return
uploaded_files = st.file_uploader(
"Choose PDF files",
type="pdf",
accept_multiple_files=True,
help="Upload Consolidated Financial Statements in Russian"
)
if uploaded_files:
for file in uploaded_files:
with st.expander(f"Processing {file.name}", expanded=True):
progress_bar = st.progress(0)
status = st.empty()
try:
status.info("Starting PDF processing...")
progress_bar.progress(25)
# Process PDF through Modal backend
pdf_processor = Function.lookup("stem", "process_pdf")
financial_data = pdf_processor.remote(file)
progress_bar.progress(75)
if financial_data:
# Display results in tabs
tab1, tab2 = st.tabs(["Financial Ratios", "Raw Data"])
with tab1:
st.subheader("Key Financial Ratios")
st.dataframe(pd.DataFrame([financial_data]))
with tab2:
st.subheader("Extracted Financial Data")
st.json(financial_data)
status.success("Processing complete!")
else:
status.error("Failed to extract financial data")
except Exception as e:
st.error("Error during processing")
st.exception(e)
progress_bar.empty()
if __name__ == "__main__":
main()