Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import pandas as pd | |
| from io import BytesIO | |
| from toshiba import extract_toshiba_table | |
| from bhel import extract_bhel_table | |
| from federal_electric import extract_federal_electric_table | |
| from al_nisf import extract_al_nisf_table | |
| from others import extract_others_table | |
| # Streamlit app | |
| def main(): | |
| st.title("PO Data Processor") | |
| st.markdown("### Extract and Format PO Data") | |
| # Dropdown for PO type | |
| po_options = ["Toshiba", "BHEL", "Federal Electric", "AL NISF", "Others"] | |
| selected_po_type = st.selectbox("Select a PO type:", po_options) | |
| # File upload | |
| uploaded_file = st.file_uploader("Upload your PO PDF file:", type=["pdf"]) | |
| if not uploaded_file: | |
| st.info("Please upload a PDF file to proceed.") | |
| return | |
| # Process based on selected PO type | |
| st.write(f"Processing PO type: {selected_po_type}") | |
| try: | |
| iif selected_po_type == "Toshiba": | |
| df = extract_toshiba_table(uploaded_file) # Indented 4 spaces | |
| elif selected_po_type == "BHEL": | |
| df = extract_bhel_table(uploaded_file) # Indented 4 spaces | |
| elif selected_po_type == "Federal Electric": | |
| df = extract_federal_electric_table(uploaded_file) # Indented 4 spaces | |
| elif selected_po_type == "AL NISF": | |
| df = extract_al_nisf_table(uploaded_file) # Indented 4 spaces | |
| else: | |
| st.warning("Other PO types are not yet implemented. Please use a supported format.") | |
| return # Indented 4 spaces | |
| if df.empty: | |
| st.warning("No tabular data found in the uploaded PDF.") | |
| return | |
| except Exception as e: | |
| st.error(f"Error processing the PDF: {e}") | |
| return | |
| # Display the extracted data | |
| st.write("### Extracted Data:") | |
| st.dataframe(df) | |
| # Export options | |
| # CSV Export | |
| csv_data = df.to_csv(index=False).encode("utf-8") | |
| st.download_button( | |
| label="Download as CSV", | |
| data=csv_data, | |
| file_name=f"{selected_po_type.lower()}_po_data.csv", | |
| mime="text/csv" | |
| ) | |
| # Excel Export | |
| output = BytesIO() | |
| with pd.ExcelWriter(output, engine='openpyxl') as writer: | |
| df.to_excel(writer, index=False, sheet_name="Sheet1") | |
| output.seek(0) # Reset buffer pointer | |
| excel_data = output.getvalue() | |
| st.download_button( | |
| label="Download as Excel", | |
| data=excel_data, | |
| file_name=f"{selected_po_type.lower()}_po_data.xlsx", | |
| mime="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" | |
| ) | |
| if __name__ == "__main__": | |
| main() | |