Sanjayraju30 commited on
Commit
33c8720
·
verified ·
1 Parent(s): 77bb0dd

Update ocr_engine.py

Browse files
Files changed (1) hide show
  1. ocr_engine.py +3 -5
ocr_engine.py CHANGED
@@ -1,9 +1,8 @@
1
  from transformers import DonutProcessor, VisionEncoderDecoderModel
2
  from PIL import Image
3
  import re
4
- import torch
5
 
6
- # Load processor + model
7
  processor = DonutProcessor.from_pretrained("naver-clova-ix/donut-base-finetuned-cord-v2")
8
  model = VisionEncoderDecoderModel.from_pretrained("naver-clova-ix/donut-base-finetuned-cord-v2")
9
 
@@ -11,16 +10,15 @@ def extract_weight(image: Image.Image) -> str:
11
  image = image.convert("RGB")
12
  pixel_values = processor(image, return_tensors="pt").pixel_values
13
 
14
- # Generate text prediction
15
  outputs = model.generate(pixel_values, max_length=512)
16
  decoded = processor.batch_decode(outputs, skip_special_tokens=True)[0]
17
 
18
- # Clean & extract weight
19
  cleaned = decoded.lower().replace(" ", "")
20
  match = re.search(r"(\d+(\.\d+)?)", cleaned)
21
  weight = match.group(1) if match else None
22
 
23
- # Detect unit
24
  if any(u in cleaned for u in ["kg", "kgs", "kilogram", "kilo"]):
25
  unit = "kg"
26
  elif any(u in cleaned for u in ["g", "gram", "grams"]):
 
1
  from transformers import DonutProcessor, VisionEncoderDecoderModel
2
  from PIL import Image
3
  import re
 
4
 
5
+ # Load OCR processor and model (pretrained on receipts, good for 7-segment)
6
  processor = DonutProcessor.from_pretrained("naver-clova-ix/donut-base-finetuned-cord-v2")
7
  model = VisionEncoderDecoderModel.from_pretrained("naver-clova-ix/donut-base-finetuned-cord-v2")
8
 
 
10
  image = image.convert("RGB")
11
  pixel_values = processor(image, return_tensors="pt").pixel_values
12
 
 
13
  outputs = model.generate(pixel_values, max_length=512)
14
  decoded = processor.batch_decode(outputs, skip_special_tokens=True)[0]
15
 
16
+ # Extract weight number
17
  cleaned = decoded.lower().replace(" ", "")
18
  match = re.search(r"(\d+(\.\d+)?)", cleaned)
19
  weight = match.group(1) if match else None
20
 
21
+ # Smart unit detection
22
  if any(u in cleaned for u in ["kg", "kgs", "kilogram", "kilo"]):
23
  unit = "kg"
24
  elif any(u in cleaned for u in ["g", "gram", "grams"]):