LEAHWA's picture
Update app.py
5daa7b8 verified
raw
history blame
2.37 kB
import streamlit as st
from dataclasses import dataclass
import pytesseract
from PIL import Image
import io
import re
import cv2
import numpy as np
import OCR
import os
from OCR import *
# Initialize chat history
if "messages" not in st.session_state:
st.session_state.messages = [{"role": "Invoice Reader", "content": "Submit an invoice and I will read it."}]
# Display chat messages from history on app rerun
for message in st.session_state.messages:
with st.chat_message(message["role"]):
st.markdown(message["content"])
HF_TOKEN = os.environ.get("HF_TOKEN")
USER = "user"
ASSISTANT = "Invoice Reader"
# Accept file uploads
uploaded_file = st.file_uploader("Upload an invoice", type=["pdf", "png", "jpg", "jpeg"])
if uploaded_file is not None:
# Display uploaded file content
file_content = uploaded_file.getvalue()
st.session_state.messages.append({"role": USER, "content": f"Uploaded file: {uploaded_file.name}"})
with st.chat_message(USER):
st.markdown(f"Uploaded file: {uploaded_file.name}")
# Preprocess and extract text from image or PDF
try:
if uploaded_file.type == "application/pdf":
text = extract_text_from_pdf(file_content)
else:
text = extract_text_from_image(file_content)
# Extract specific details
details = extract_invoice_details(text)
# Create and display assistant's response to extracted text
assistant_response = (
f"Extracted text from the uploaded file:\n\n{text}\n\n"
f"**Extracted Details:**\n"
f"**Invoice Number:** {details['Invoice Number']}\n"
f"**Amount:** {details['Amount']}\n"
f"**Invoice Date:** {details['Invoice Date']}\n"
f"**Due Date:** {details['Due Date']}"
)
st.session_state.messages.append({"role": ASSISTANT, "content": assistant_response})
with st.chat_message(ASSISTANT):
st.markdown(assistant_response)
except Exception as e:
error_message = f"An error occurred while processing the file: {e}"
st.session_state.messages.append({"role": ASSISTANT, "content": error_message})
with st.chat_message(ASSISTANT):
st.markdown(error_message)
#streamlit run C:/Users/leahw/PycharmProjects/Int-to-Artificial-Intelligence-Final-Project/app.py