All work
case studyAI & Agents

OCR document analyzer — waste-manifest ticket intake

A vision-LLM system that reads ~50 WhatsApp scale-ticket scans a day and replaces manual re-typing with validated extraction and one-click export.

Role
Full-stack AI engineer
Timeline
Production system in daily use
Stack
React / Vite · FastAPI · EasyOCR · Kimi K3 (vision) · Tesseract OSD · Supabase · Docker · PWA
OCR document analyzer cover — waste scale ticket being processed
project coverAI & Agents

A live system in daily operation for waste-management ticket intake — this page embeds the running demo.

Launch live demoUpload the sample tickets or your own scans — full extraction, validation and export.
Problem

What was broken

A waste-management operator receives ~50 photos of scale tickets (boletas de báscula) over WhatsApp every day. Operators re-typed folio, client, weight and cost from each photo into spreadsheets — slow, error-prone, and impossible to audit at volume.

Approach

How it was fixed

Built a preprocessing pipeline that normalizes EXIF orientation, detects document rotation with Tesseract OSD, and crops each photo to the ticket region before OCR. Extraction runs on a vision LLM (Kimi K3) with parallel batch processing and per-file failure isolation; results are saved to Supabase and cross-validated (weight, cost expectations, folio duplicates) before operators approve or edit inline.

Constraints

  • Photos arrive rotated, skewed and mixed with WhatsApp UI chrome — the input is messy by default.
  • Weight fields must cross-validate (Neto vs Toneladas x 1000) or a dropped decimal silently inflates a bill.
  • Operators are not power users: upload a batch, get a validated table, export to Excel.
Stack

Tools in the system

  • React / Vite
  • FastAPI
  • EasyOCR
  • Kimi K3 (vision)
  • Tesseract OSD
  • Supabase
  • Docker
  • PWA
Outcome

What changed

The daily intake flow that took hours of re-typing now runs as upload → validate → export. Batches of 50 scans are processed in minutes with sub-minute per-file extraction, and cross-field validation catches the decimal and unit errors that used to slip into invoices.

≈50Scans handled per day
< 60 sExtraction per file
cross-fieldWeight validation
Lessons

What carries forward

  1. 01A dropped decimal in '2.240' vs '2240' changes the bill by 1000x — validation guards are as important as the model.
  2. 02Rotation and cropping before OCR matter more than the model choice; the pipeline made the model's reads reliable.
  3. 03Operators trust the tool when every value can be edited inline and every export is auditable.
All work