hashirlodhi's picture
Update app.py
cfbb031 verified
import os
import gradio as gr
import google.generativeai as genai
from PIL import Image
# Configure the Gemini API with environment variable
GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY")
if not GOOGLE_API_KEY:
raise ValueError("GOOGLE_API_KEY environment variable not set. Please configure it in the Hugging Face Space settings.")
genai.configure(api_key=GOOGLE_API_KEY)
# Use Gemini 1.5 Flash model
model = genai.GenerativeModel('gemini-1.5-flash-latest')
def identify_banknote_denomination(image):
if image is None:
return "Error: Please upload or capture a banknote image."
# Resize image for consistency (optional, Gemini handles various sizes)
image = image.resize((224, 224))
prompt = """
You are an image analysis assistant tasked with identifying the denomination (worth) of a banknote from an image.
Analyze the image for visual elements like currency symbols, colors, numbers, or portraits to determine the denomination.
Return the response in this format:
Denomination: [Value, e.g., $10, €20]
Reason: [Brief explanation]
Examples:
Image Description: A banknote with a green color scheme, a portrait of a historical figure, and "$100" printed prominently.
Denomination: $100
Reason: The green color scheme, portrait, and "$100" text are consistent with a U.S. $100 note.
Image Description: A banknote with a blue color scheme, a bridge image, and "€50" printed.
Denomination: €50
Reason: The blue color scheme, bridge image, and "€50" text indicate a Euro €50 note.
Image Description: A banknote with a purple color scheme, a specific building, and "£20" printed.
Denomination: £20
Reason: The purple color scheme, building image, and "£20" text are consistent with a British £20 note.
Analyze the provided image.
Denomination:
Reason:
"""
try:
response = model.generate_content([prompt, image])
return response.text.strip()
except Exception as e:
return f"Error: {str(e)}\nTip: Ensure your API key is valid at https://aistudio.google.com/"
# Define Gradio interface
iface = gr.Interface(
fn=identify_banknote_denomination,
inputs=gr.Image(type="pil", label="Upload or capture a banknote image", sources=["upload", "webcam"]),
outputs=gr.Textbox(label="Banknote Denomination Result"),
title="Banknote Denomination Predictor",
description="Upload or capture a banknote image to identify its denomination using the Gemini API. Set your GOOGLE_API_KEY in the Hugging Face Space settings. Note: This is for demonstration purposes only and not for real-world banking use."
)
# Launch the interface
if __name__ == "__main__":
iface.launch()