File size: 1,468 Bytes
a481416
8b5815c
7ec4a88
27ed571
 
a481416
 
 
e6e3c3a
7ec4a88
a481416
e6e3c3a
8b5815c
e6e3c3a
94a9b1b
 
27ed571
94a9b1b
27ed571
 
e6e3c3a
eff70bd
 
e6e3c3a
 
6a56695
e6e3c3a
94a9b1b
a481416
94a9b1b
7ec4a88
8c50e18
7ec4a88
e6e3c3a
27ed571
e6e3c3a
eff70bd
 
a481416
e6e3c3a
eff70bd
 
 
94a9b1b
e6e3c3a
 
eff70bd
 
 
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, 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()