Spaces:
Running
Running
File size: 1,619 Bytes
0590b95 d55b56b 9bbac2d d55b56b 0590b95 d55b56b a4391a6 91bcc4e 9bbac2d 77bb0dd 91bcc4e a4391a6 d55b56b 77bb0dd b61209f 77bb0dd b61209f 77bb0dd b61209f 136c114 77bb0dd 9bbac2d 77bb0dd f32159a 0590b95 77bb0dd b61209f 77bb0dd b61209f |
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 |
import gradio as gr
from PIL import Image
from datetime import datetime
import pytz
from ocr_engine import extract_weight
def process_image(image):
if image is None:
return "No image provided", "", None
try:
weight = extract_weight(image)
ist = pytz.timezone('Asia/Kolkata')
timestamp = datetime.now(ist).strftime("%Y-%m-%d %H:%M:%S IST")
return weight, timestamp, image
except Exception as e:
return f"Error: {str(e)}", "", None
with gr.Blocks(css=".gr-button {background-color: #2e7d32 !important; color: white !important;}") as demo:
gr.Markdown("""
<h1 style='text-align: center; color: #2e7d32;'>π· Auto Weight Logger</h1>
<p style='text-align: center;'>Detect weights (kg or grams) from digital balance display using AI OCR.</p>
<hr style='border: 1px solid #ddd;'/>
""")
with gr.Row():
image_input = gr.Image(type="pil", label="π Upload or Capture Image")
detect_btn = gr.Button("π Detect Weight")
with gr.Row():
weight_out = gr.Textbox(label="π¦ Detected Weight", placeholder="e.g., 72.4 kg", show_copy_button=True)
time_out = gr.Textbox(label="π Captured At (IST)", placeholder="e.g., 2025-06-30 14:32:10")
snapshot = gr.Image(label="πΈ Snapshot Preview")
detect_btn.click(fn=process_image, inputs=image_input, outputs=[weight_out, time_out, snapshot])
gr.Markdown("""
<br><p style='text-align: center; color: gray;'>Developed by Shalu β’ Powered by Hugging Face OCR π</p>
""")
# π¨ REQUIRED for Hugging Face to recognize the app
demo.launch()
|