Spaces:
Running
Running
File size: 1,410 Bytes
a481416 27ed571 4e7dfd4 a481416 7ec4a88 a481416 eff70bd 4e7dfd4 eff70bd 4e7dfd4 |
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 51 |
import gradio as gr
import easyocr
import re
import cv2
import numpy as np
from PIL import Image
from datetime import datetime
reader = easyocr.Reader(['en'], gpu=False)
def detect_weight(image):
if image is None:
return "No image uploaded", "N/A", None
# Convert PIL to OpenCV
image_np = np.array(image)
gray = cv2.cvtColor(image_np, cv2.COLOR_RGB2GRAY)
# Optional: Enhance contrast
gray = cv2.equalizeHist(gray)
# OCR
results = reader.readtext(gray, detail=1)
weight = None
max_conf = 0
for (bbox, text, conf) in results:
text = text.strip()
match = re.search(r'\d+\.\d+', text)
if match and conf > max_conf:
weight = match.group()
max_conf = conf
if weight:
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
return f"Weight: {weight} kg (Confidence: {round(max_conf*100, 2)}%)", now, image
else:
return "No weight detected kg (Confidence: 0.0%)", "N/A", image
gr.Interface(
fn=detect_weight,
inputs=gr.Image(type="pil", label="Upload or Capture Weight Image"),
outputs=[
gr.Text(label="Detected Weight"),
gr.Text(label="Captured At (IST)"),
gr.Image(label="Snapshot")
],
title="Auto Weight Logger",
description="Upload or capture a weight scale image. The app will detect and log the weight automatically."
).launch()
|