Two local, GPU-backed tools that talk to a local ollama server (no cloud,
no API key):
- receipt_ocr.py: receipt image -> ordered list of rows of text, via
Qwen2.5-VL 7B. Zero deps (stdlib + ollama HTTP API).
- receipt_group.py: OCR rows -> structured receipt (store, line items with
multi-row details merged, total, metadata), via Mistral Small 24B. Detail
rows are attached by arithmetic reconciliation, not position; a prompt
completeness clause guards against dropped rows; a deterministic --json
reconciliation pass audits item math, subtotal/total, and unit count.
README documents setup, an ollama operating runbook, and design rationale.
Includes the ALDI example image + its OCR rows.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>