-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.py
54 lines (40 loc) · 1.64 KB
/
app.py
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
from dotenv import load_dotenv
load_dotenv()
import streamlit as st
import os
from PIL import Image
import google.generativeai as genai
genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
model = genai.GenerativeModel('gemini-pro-vision')
def get_gemini_response(input, image, prompt):
response = model.generate_content([input, image[0], prompt])
return response.text
def input_image_details(uploaded_file):
if uploaded_file is not None:
bytes_data = uploaded_file.getvalue()
image_parts = [
{
"mime_type": uploaded_file.type,
"data": bytes_data
}
]
return image_parts
else:
raise FileNotFoundError("No file uploaded")
####streamlit initialization
st.set_page_config(page_title="Multilanguage Invoice Extractor")
st.header("Multilanguage Invoice Extractor")
input = st.text_input("Input prompt: ", key="input")
uploaded_file = st.file_uploader("choose an image", type=["jpg", "jpeg", "png"])
image = ""
if uploaded_file is not None:
image = Image.open(uploaded_file)
st.image(image, caption="uploaded image", use_column_width=True)
submit = st.button("Talk to me")
input_prompt = """You are an expert accountant who is excellent at understanding invoices. We will upload an image as invoices and you will have to answer any questions based on the uploaded invoice image."""
### if submit is pressed
if submit:
image_data = input_image_details(uploaded_file)
response = get_gemini_response(input_prompt, image_data, input)
st.subheader("The response is:")
st.write(response)