Sanjayraju30 commited on
Commit
06308c8
·
verified ·
1 Parent(s): f219388

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -50
app.py CHANGED
@@ -1,53 +1,32 @@
1
  import gradio as gr
2
- import numpy as np
3
- from PIL import Image
4
- import cv2
5
- import re
6
- from paddleocr import PaddleOCR
7
  from datetime import datetime
 
 
8
 
9
- # Load OCR model
10
- ocr = PaddleOCR(use_angle_cls=True, lang='en')
11
-
12
- def preprocess_image(image):
13
- img = np.array(image.convert("RGB"))
14
- gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
15
- _, thresh = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY)
16
- return Image.fromarray(thresh)
17
-
18
- def extract_weight_text(image):
19
- try:
20
- results = ocr.ocr(np.array(image), cls=True)
21
- texts = []
22
- for line in results[0]:
23
- text = line[1][0]
24
- texts.append(text)
25
- match = re.search(r"\d+\.\d+", text)
26
- if match:
27
- return match.group(), texts
28
- return None, texts
29
- except Exception as e:
30
- return f"Error: {str(e)}", []
31
-
32
- def detect_weight(image):
33
- if image is None:
34
- return "No image uploaded.", "", None, ""
35
- pre_img = preprocess_image(image)
36
- weight, texts = extract_weight_text(pre_img)
37
- if weight and "Error" not in weight:
38
- return f"Detected Weight: {weight} kg", datetime.now().strftime("Captured At: %Y-%m-%d %H:%M:%S"), pre_img, "\n".join(texts)
39
- else:
40
- return "Weight Not Detected", "", pre_img, "\n".join(texts)
41
-
42
- gr.Interface(
43
- fn=detect_weight,
44
- inputs=gr.Image(type="pil", label="Upload or Capture Image"),
45
- outputs=[
46
- gr.Textbox(label="Weight"),
47
- gr.Textbox(label="Timestamp"),
48
- gr.Image(label="Preprocessed Image"),
49
- gr.Textbox(label="Detected Text (Debug)")
50
- ],
51
- title="Auto Weight Logger (Debug Mode)",
52
- description="Upload a clear image of a digital scale. This version shows detected text for debugging."
53
- ).launch()
 
1
  import gradio as gr
 
 
 
 
 
2
  from datetime import datetime
3
+ import pytz
4
+ from ocr_engine import extract_weight_from_image
5
 
6
+ def process_image(img):
7
+ if img is None:
8
+ return "No image uploaded", None, None, "No OCR output"
9
+
10
+ ist_time = datetime.now(pytz.timezone("Asia/Kolkata")).strftime("%d-%m-%Y %I:%M:%S %p")
11
+ weight, confidence, raw_text = extract_weight_from_image(img)
12
+ return f"{weight} kg (Confidence: {confidence}%)", ist_time, img, raw_text
13
+
14
+ with gr.Blocks(title="⚖️ Auto Weight Logger") as demo:
15
+ gr.Markdown("## ⚖️ Auto Weight Logger")
16
+ gr.Markdown("📷 **Upload or capture an image of a digital weight scale.** The app will auto-detect the weight in kilograms using OCR.")
17
+
18
+ with gr.Row():
19
+ image_input = gr.Image(type="pil", label="Upload / Capture Image")
20
+ output_weight = gr.Textbox(label="⚖️ Detected Weight (in kg)")
21
+
22
+ with gr.Row():
23
+ timestamp = gr.Textbox(label="🕒 Captured At (IST)")
24
+ snapshot = gr.Image(label="📸 Snapshot Image")
25
+
26
+ with gr.Row():
27
+ debug_output = gr.Textbox(label="🪵 Raw OCR Output")
28
+
29
+ submit = gr.Button("🔍 Detect Weight")
30
+ submit.click(process_image, inputs=image_input, outputs=[output_weight, timestamp, snapshot, debug_output])
31
+
32
+ demo.launch()