Sanjayraju30's picture
Update app.py
12d76b5 verified
raw
history blame
2.08 kB
import gradio as gr
from paddleocr import PaddleOCR
from PIL import Image
import numpy as np
import cv2
import re
from datetime import datetime
from pytz import timezone
ocr = PaddleOCR(use_angle_cls=False, lang='en') # cls removed
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)
result = ocr.ocr(rgb_image)
best_match = None
best_conf = 0
for line in result:
for box in line:
if len(box) > 1 and isinstance(box[1], tuple):
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
with gr.Blocks() as demo:
gr.Markdown("## Auto Weight Logger\nUpload or capture a digital scale image. This app detects the weight automatically using AI.")
with gr.Row():
image_input = gr.Image(type="pil", label="Upload or Capture Weight Image", tool="editor", sources=["upload", "camera"])
with gr.Column():
output_text = gr.Textbox(label="Detected Weight")
output_time = gr.Textbox(label="Captured At (IST)")
snapshot_output = gr.Image(label="📷 Snapshot")
image_input.change(fn=detect_weight, inputs=image_input, outputs=[output_text, output_time, snapshot_output])
demo.launch()