Sanjayraju30's picture
Update app.py
57ffefc verified
raw
history blame
1.81 kB
import gradio as gr
import cv2
import numpy as np
from paddleocr import PaddleOCR
from datetime import datetime
from pytz import timezone
import re
from PIL import Image
# Initialize PaddleOCR
ocr = PaddleOCR(use_angle_cls=True, lang='en')
def detect_weight(image):
try:
if image is None:
return "No image uploaded", "N/A", None
image = image.convert("RGB")
image_np = np.array(image)
gray = cv2.cvtColor(image_np, cv2.COLOR_RGB2GRAY)
enhanced = cv2.equalizeHist(gray)
rgb_image = cv2.cvtColor(enhanced, cv2.COLOR_GRAY2RGB)
# OCR (without cls= argument for compatibility)
result = ocr.ocr(rgb_image)
best_match = None
best_conf = 0
for line in result:
for box in line:
text, conf = box[1]
match = re.search(r"\d+\.\d+", text)
if match and conf > best_conf:
best_match = match.group()
best_conf = conf
if best_match:
now_ist = datetime.now(timezone('Asia/Kolkata')).strftime("%Y-%m-%d %H:%M:%S IST")
return f"Weight: {best_match} kg (Confidence: {round(best_conf * 100, 2)}%)", now_ist, image
else:
return "No weight detected kg (Confidence: 0.0%)", "N/A", image
except Exception as e:
return f"Error: {str(e)}", "Error", None
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 digital scale image. This app detects the weight automatically using AI."
).launch()