Spaces:
Runtime error
Runtime error
import gradio as gr | |
from PIL import Image | |
import pytesseract | |
import json | |
import google.generativeai as genai | |
google_api = 'AIzaSyAMlYqwvuQgekl8nlqc56XTqJVBufszrBU' | |
genai.configure(api_key=google_api) | |
from pathlib import Path | |
# from IPython.display import Markdown | |
from PIL import Image | |
import io | |
# Model Configuration | |
MODEL_CONFIG = { | |
"temperature": 0.2, | |
"top_p": 1, | |
"top_k": 32, | |
"max_output_tokens": 4096, | |
} | |
## Safety Settings of Model | |
safety_settings = [ | |
{ | |
"category": "HARM_CATEGORY_HARASSMENT", | |
"threshold": "BLOCK_MEDIUM_AND_ABOVE" | |
}, | |
{ | |
"category": "HARM_CATEGORY_HATE_SPEECH", | |
"threshold": "BLOCK_MEDIUM_AND_ABOVE" | |
}, | |
{ | |
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", | |
"threshold": "BLOCK_MEDIUM_AND_ABOVE" | |
}, | |
{ | |
"category": "HARM_CATEGORY_DANGEROUS_CONTENT", | |
"threshold": "BLOCK_MEDIUM_AND_ABOVE" | |
} | |
] | |
model = genai.GenerativeModel(model_name='gemini-2.5-flash', | |
generation_config=MODEL_CONFIG, | |
safety_settings=safety_settings) | |
def gemini_output(image_path, | |
system_prompt, | |
user_prompt): | |
input_prompt = [system_prompt, image_path, user_prompt] | |
response = model.generate_content(input_prompt) | |
return response.text | |
custom_css = """ | |
.image_preview { | |
max-height: 700px; overflow-y: auto !important; | |
} | |
.big-font textarea { | |
font-size: 20px !important; | |
} | |
""" | |
def extract_text(image_path): | |
system_prompt = """ | |
You are a specialist in comprehending receipts. | |
Input images in the form of receipts will be provided to you, | |
and your task is to respond to questions based on the content of the input image. | |
""" | |
user_prompt = "Convert Invoice data into json format with appropriate json tags as required for the data in image " | |
output = gemini_output(image_path, system_prompt, user_prompt) | |
output = output.replace("```json", "") | |
output = output.replace("```", "") | |
print(f">>>>>>> {output}") | |
return output | |
# Create the Gradio interface | |
iface = gr.Interface( | |
fn=extract_text, | |
inputs=gr.Image(type="pil", elem_classes=["image_preview"]), # Accept PIL images directly | |
outputs=gr.Textbox(lines=20, | |
max_lines=10, | |
label='Extracted Text', | |
elem_classes=["big-font"] | |
), | |
title="Text Extraction", | |
description="Upload an image to extract text", | |
allow_flagging='never', | |
css=custom_css, | |
) | |
# Launch the app | |
iface.launch() |