File size: 2,577 Bytes
bbf2928
 
ded1fc2
ca609d2
c228a82
ded1fc2
c228a82
ca609d2
e4c8347
cba456b
 
37fc8c9
c228a82
2c5fe24
ca609d2
a4161cb
c228a82
ca609d2
c228a82
 
2c5fe24
c228a82
2c5fe24
c228a82
bbf2928
 
 
a6966e2
 
 
 
c228a82
 
e4c8347
ded1fc2
a6966e2
bbf2928
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c228a82
 
bbf2928
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9f7c458
2c5fe24
bbf2928
 
 
 
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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()