Spaces:
Sleeping
Sleeping
File size: 2,044 Bytes
ce975c6 1294440 c1dab52 474d16e c1dab52 beccc93 02d2e37 c1dab52 1294440 c1dab52 36d2263 c1dab52 c4687cc ce975c6 beccc93 882162a 1fb09ab 9fa7dd6 e270e80 882162a c7647cf beccc93 f65a369 beccc93 | 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 | import streamlit as st
from PIL import Image
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
import torch
import easyocr
# Load the question-answering model and tokenizer
#model_name = "t5-base"
model_name = "google/flan-t5-base"
qa_model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
qa_tokenizer = AutoTokenizer.from_pretrained(model_name)
reader = easyocr.Reader(['en'])
# Function to extract text from image using easyocr
def extract_text_from_image(image):
# Perform OCR on the image using easyocr
ocr_result = reader.readtext(image, detail=0)
text = " ".join(ocr_result)
return text
# Function to get response from the language model
def get_response_from_llm(extracted_text, question):
# Prepare the input for the model
input_text = f"question: {question} context: {extracted_text}"
inputs = qa_tokenizer.encode(input_text, return_tensors="pt", max_length=512, truncation=True)
# Generate the response
with torch.no_grad():
outputs = qa_model.generate(inputs, max_length=150, num_return_sequences=1)
# Decode the response
response = qa_tokenizer.decode(outputs[0], skip_special_tokens=True)
return response
# Streamlit App
st.set_page_config(page_title="Invoice Extractor")
st.header("Invoice Extractor")
# Sidebar for uploading image and entering question
st.sidebar.header("Upload Your Image")
uploaded_file = st.sidebar.file_uploader("Upload an invoice image...", type=["jpg"])
if uploaded_file is not None:
image = None
image = Image.open(uploaded_file)
st.sidebar.image(image, caption="Uploaded Image.", use_column_width=True)
st.subheader("Enter your question about the invoice:")
question = st.text_input("")
submit = st.button("Generate Response")
if submit:
if image is None:
st.warning("Please upload an image.")
else:
extracted_text = extract_text_from_image(image)
response = get_response_from_llm(extracted_text, question)
st.subheader("Extracted Information:")
st.write(response) |