hashirlodhi/BankNote_Authentication
0
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()