Spaces:
Running
Running
File size: 2,062 Bytes
0590b95 d55b56b 9bbac2d d55b56b 0590b95 d55b56b a4391a6 2e709f8 91bcc4e 9bbac2d 77bb0dd 2e709f8 b6c69fc 2e709f8 91bcc4e 2e709f8 d55b56b 77bb0dd 2e709f8 77bb0dd b61209f 77bb0dd b61209f 136c114 77bb0dd b6c69fc 77bb0dd 9bbac2d 77bb0dd 2e709f8 f32159a 2e709f8 0590b95 77bb0dd b6c69fc 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 45 46 47 48 49 50 |
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, gr.update(visible=True)
try:
weight = extract_weight(image)
ist = pytz.timezone('Asia/Kolkata')
timestamp = datetime.now(ist).strftime("%Y-%m-%d %H:%M:%S IST")
if not weight or "No valid" in weight:
return "β Unable to detect. Try again with clearer image.", "", image, gr.update(visible=True)
return weight, timestamp, image, gr.update(visible=False)
except Exception as e:
return f"Error: {str(e)}", "", None, gr.update(visible=True)
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;'>Upload or capture a digital weight image. Detects weight with 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., 97.9 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")
retake_btn = gr.Button("π Retake / Try Again", visible=False)
detect_btn.click(fn=process_image, inputs=image_input, outputs=[weight_out, time_out, snapshot, retake_btn])
retake_btn.click(fn=lambda: ("", "", None, gr.update(visible=False)),
inputs=[], outputs=[weight_out, time_out, snapshot, retake_btn])
gr.Markdown("""
<p style='text-align: center; color: gray;'>Tip: Ensure image is clear and flat.<br>Developed by Shalu β’ Hugging Face OCR β‘</p>
""")
demo.launch()
|