try: from paddleocr import PaddleOCR import re ocr = PaddleOCR(use_angle_cls=True, lang='en') except Exception as e: print(f"❌ PaddleOCR failed to load: {e}") ocr = None def extract_weight_from_image(image): if ocr is None: return ("OCR not initialized", 0.0) result = ocr.ocr(image, cls=True) debug_texts = [] if not result or not result[0]: return ("No weight detected", 0.0) for line in result[0]: text, confidence = line[1][0], line[1][1] debug_texts.append(f"{text} (Conf: {confidence:.2f})") # Regex: number with optional kg/g match = re.search(r'(\d+\.?\d*)\s*(kg|g)?', text.lower()) if match: weight = match.group(1) unit = match.group(2) if match.group(2) else "g" return (f"{weight} {unit}", confidence) print("🧪 OCR DEBUG:") for t in debug_texts: print(t) return ("No weight detected", 0.0)