Spaces:
Sleeping
Sleeping
import gradio as gr | |
from PIL import Image, ImageEnhance, ImageOps | |
import numpy as np | |
import easyocr | |
import re | |
from datetime import datetime | |
import pytz | |
# Load EasyOCR | |
reader = easyocr.Reader(['en'], gpu=False) | |
# Enhance image | |
def enhance_image(image): | |
image = image.convert("L") | |
image = ImageOps.invert(image) | |
image = ImageEnhance.Contrast(image).enhance(2.5) | |
image = ImageEnhance.Sharpness(image).enhance(2.5) | |
image = image.resize((image.width * 2, image.height * 2)) | |
return image | |
# Main detection | |
def detect_weight(image): | |
try: | |
processed = enhance_image(image) | |
np_img = np.array(processed) | |
result = reader.readtext(np_img, detail=0) | |
full_text = " ".join(result) | |
match = re.search(r"\d{1,4}(?:\.\d{1,4})?", full_text) | |
weight = match.group(0) if match else "Not detected" | |
ist = pytz.timezone("Asia/Kolkata") | |
now = datetime.now(ist).strftime("%Y-%m-%d %H:%M:%S") | |
return f"Weight: {weight} kg\nCaptured At: {now} (IST)", image | |
except Exception as e: | |
return f"Error: {str(e)}", image | |
# UI | |
interface = gr.Interface( | |
fn=detect_weight, | |
inputs=gr.Image(type="pil", label="Upload or Capture Image"), | |
outputs=[gr.Textbox(label="Weight Info"), gr.Image(label="Snapshot")], | |
title="⚖️ Auto Weight Detector", | |
description="Detects weight from image (e.g., 52.75 kg) and shows IST time using EasyOCR (no Tesseract)." | |
) | |
interface.launch() | |