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)