CoolFace
Apppublic

hashirlodhi/BankNote_Authentication

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes
app.py66 linesDownload Raw Back to root
1import os2import gradio as gr3import google.generativeai as genai4from PIL import Image5 6# Configure the Gemini API with environment variable7GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY")8if not GOOGLE_API_KEY:9    raise ValueError("GOOGLE_API_KEY environment variable not set. Please configure it in the Hugging Face Space settings.")10 11genai.configure(api_key=GOOGLE_API_KEY)12 13# Use Gemini 1.5 Flash model14model = genai.GenerativeModel('gemini-1.5-flash-latest')15 16def identify_banknote_denomination(image):17    if image is None:18        return "Error: Please upload or capture a banknote image."19    20    # Resize image for consistency (optional, Gemini handles various sizes)21    image = image.resize((224, 224))22    23    prompt = """24    You are an image analysis assistant tasked with identifying the denomination (worth) of a banknote from an image. 25    Analyze the image for visual elements like currency symbols, colors, numbers, or portraits to determine the denomination.26    Return the response in this format:27    28    Denomination: [Value, e.g., $10, €20]29    Reason: [Brief explanation]30 31    Examples:32    Image Description: A banknote with a green color scheme, a portrait of a historical figure, and "$100" printed prominently.33    Denomination: $10034    Reason: The green color scheme, portrait, and "$100" text are consistent with a U.S. $100 note.35 36    Image Description: A banknote with a blue color scheme, a bridge image, and "€50" printed.37    Denomination: €5038    Reason: The blue color scheme, bridge image, and "€50" text indicate a Euro €50 note.39 40    Image Description: A banknote with a purple color scheme, a specific building, and "£20" printed.41    Denomination: £2042    Reason: The purple color scheme, building image, and "£20" text are consistent with a British £20 note.43 44    Analyze the provided image.45    Denomination:46    Reason:47    """48 49    try:50        response = model.generate_content([prompt, image])51        return response.text.strip()52    except Exception as e:53        return f"Error: {str(e)}\nTip: Ensure your API key is valid at https://aistudio.google.com/"54 55# Define Gradio interface56iface = gr.Interface(57    fn=identify_banknote_denomination,58    inputs=gr.Image(type="pil", label="Upload or capture a banknote image", sources=["upload", "webcam"]),59    outputs=gr.Textbox(label="Banknote Denomination Result"),60    title="Banknote Denomination Predictor",61    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."62)63 64# Launch the interface65if __name__ == "__main__":66    iface.launch()