To turn a receipt photo into structured JSON, open Zro7 Receipt Scanner, drop the image, and Zro7 runs OCR plus a receipt-specific parser to extract merchant, date, currency, line items, subtotal, tax, tip, and total. The output is copyable JSON, no cloud API, no receipt-scanning subscription.
The pipeline
- Preprocess — auto-crop, deskew, and boost contrast for thermal-print receipts.
- OCR — Tesseract.js with a single-column page-segmentation mode (thermal receipts are always one column).
- Layout parse — group tokens by Y-coordinate to reconstruct rows; align columns via clustered X-positions.
- Semantic extract — regex + heuristics for date formats, currency symbols, tax lines ('SUBTOTAL', 'TAX', 'TOTAL', 'AMOUNT DUE', translated), and line-item price detection.
- JSON emit — a schema close to popular expense APIs (Ramp, Brex, Expensify) so you can paste it in.
Sample output
For a Starbucks receipt you'll get roughly:
{ "merchant": "Starbucks Coffee", "date": "2026-11-14", "currency": "USD", "items": [{"name": "Grande Latte", "qty": 1, "price": 5.45}, ...], "subtotal": 12.90, "tax": 1.16, "tip": 2.50, "total": 16.56 }
What works well
- Standard thermal receipts from restaurants, cafes, gas stations, and retail.
- Multi-page receipts (Zro7 parses each and merges).
- USD, EUR, GBP, JPY, INR, and other common currencies (auto-detected by symbol).
What still trips it up
- Very faded thermal print — bring the receipt closer to a window or scan with the camera flash.
- Handwritten totals — Tesseract skips them; edit the JSON manually.
- Non-Latin scripts — enable the extra language (e.g. Japanese) in the settings drawer.
- Split checks — parsed as one receipt; split the JSON manually.
Steps
- Open Receipt Scanner.
- Take or drop a photo of the receipt.
- Wait for OCR + parse (usually 3–8 seconds).
- Copy the JSON, or export as CSV for a spreadsheet.
Zro7