Spaces:
Running
Running
File size: 1,128 Bytes
6b14fa5 65ed4c1 8fe1b94 a71f519 6b14fa5 65ed4c1 363a646 65ed4c1 363a646 65ed4c1 66afd91 363a646 029a668 376b89d 029a668 33069a9 66afd91 f0bddce a71f519 66afd91 33069a9 66afd91 65ed4c1 f0bddce 029a668 66afd91 029a668 f0bddce 8fe1b94 65ed4c1 |
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 |
import easyocr
import numpy as np
import cv2
import re
reader = easyocr.Reader(['en'], gpu=False)
def extract_weight_from_image(pil_img):
try:
img = np.array(pil_img)
# Preprocessing for OCR
gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
gray = cv2.resize(gray, None, fx=2, fy=2, interpolation=cv2.INTER_LINEAR)
gray = cv2.equalizeHist(gray)
gray = cv2.GaussianBlur(gray, (3, 3), 0)
inverted = cv2.bitwise_not(gray)
# OCR read
result = reader.readtext(inverted, detail=0)
combined_text = " ".join(result)
print("OCR Raw Text:", combined_text)
# First try matching with "kg"
match = re.search(r"(\d{1,4}(?:\.\d{1,2})?)\s*(kg|KG|Kg)", combined_text)
if match:
return f"{match.group(1)} kg", 95.0
# Then try fallback match: only numbers
fallback = re.search(r"\d{1,4}(?:\.\d{1,2})?", combined_text)
if fallback:
return f"{fallback.group(0)} kg", 75.0
return "No weight detected kg", 0.0
except Exception as e:
return f"Error: {str(e)}", 0.0
|