File size: 2,511 Bytes
11e1c78
 
 
 
 
 
 
 
 
 
eee62a6
 
 
11e1c78
 
 
 
 
 
 
 
eee62a6
11e1c78
 
 
 
eee62a6
11e1c78
 
 
 
 
 
 
 
eee62a6
11e1c78
 
 
eee62a6
097c6ff
 
 
 
 
 
 
 
 
 
eee62a6
11e1c78
 
 
 
 
 
 
3201bd8
11e1c78
 
f20ff69
eee62a6
 
 
11e1c78
 
eee62a6
 
11e1c78
 
eee62a6
3201bd8
eee62a6
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import streamlit as st
import os
import pathlib
import textwrap
from PIL import Image

import google.generativeai as genai

genai.configure(api_key='AIzaSyCeNgXfZx0kJ736XFVtxXxev_RdscB0i5s')

## Function to load OpenAI model and get respones

def get_gemini_response(input,image,prompt):
    model = genai.GenerativeModel('gemini-pro-vision')
    response = model.generate_content([input,image[0],prompt])
    return response.text
   

def input_image_setup(uploaded_file):
    # Check if a file has been uploaded
    if uploaded_file is not None:
        # Read the file into bytes
        bytes_data = uploaded_file.getvalue()

        image_parts = [
            {
                "mime_type": uploaded_file.type,  # Get the mime type of the uploaded file
                "data": bytes_data
            }
        ]
        return image_parts
    else:
        raise FileNotFoundError("No file uploaded")


##initialize our streamlit app

st.set_page_config(page_title="Gemini Image Demo")

st.header("Generative AI : Business card Reader")
# Display sample input images
sample_images_folder = pathlib.Path(__file__).parent / "examples"
sample_images = [sample_image for sample_image in sample_images_folder.glob("*.jpg") if sample_image.is_file()]

if len(sample_images) > 0:
    st.subheader("Sample Input Images")
    for i, sample_image in enumerate(sample_images):
        image = Image.open(sample_image)
        st.image(image, caption=f"Sample Image {i+1}", use_column_width=True)
        
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("Submit")

input_prompt = """
               You are an expert in understanding business cards.
               You will receive input images of business card & you will have to answer questions based on the input image.
               You have to extract information from business card images and give correct tag to the output text 
               like person name, company name, occupation, address, telephone number, mobile number, email, website, etc. Give output in json format.
               """

## If ask button is clicked

if submit:
    image_data = input_image_setup(uploaded_file)
    response=get_gemini_response(input_prompt,image_data,input)
    st.subheader("Output :")
    st.write(response)