## Invoice Extractor.. from dotenv import load_dotenv load_dotenv() ## load all environment variables into the project import streamlit as st import os from PIL import Image import google.generativeai as genai ## Configuring API key genai.configure(api_key = os.getenv("GOOGLE_API_KEY")) ## Function to load Gemini Pro Vision Model and get Response def get_gemini_response(input, image, prompt): # Loading the Gemini Model model = genai.GenerativeModel('gemini-pro-vision') response = model.generate_content([input, image[0], prompt]) return response.text def input_image_setup(uploaded_file): if uploaded_file is not None: # read the file into bytes bytes_data = uploaded_file.getvalue() image_part = [{ "mime_type": uploaded_file.type, "data": bytes_data }] return image_part else: raise FileNotFoundError("No File Uploaded...") # Initialize our streamlit app st.set_page_config(page_title= "Invoice Extractor") st.markdown("

Query with LangChain & GenAI: Image file(Jpeg,Jpg,Png)

", unsafe_allow_html=True) # st.header("Gemini Application") 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('Tell Me about the Invoice') input_prompt = """ you are an expert in understanding invoices. you will receive input images as invoices and you will have to answer questions based on the input image. """ ## If Submit button is clicked... if submit: image_data = input_image_setup(uploaded_file) response = get_gemini_response(input_prompt, image_data, input) st.subheader("The Response is :") st.write(response)