Skip to content
BillFresh
Back to blog
Engineering 2026-04-30 · 8 min read

Inside our two-second receipt OCR

Inside our two-second receipt OCR

Receipt photos are a uniquely hostile input: thermal paper that fades in weeks, curled edges, greasy fingerprints, and a photographer who is usually walking. Our first pipeline achieved 91% field accuracy in the lab — and 64% in the wild.

The breakthrough was not a bigger model. It was accepting that the photo is only half the signal. The merchant's name on the receipt is often truncated ('7-ELEVEN ST' or 'WELLCOME 12'), but combined with time, currency, and the user's history, the full identity becomes obvious.

So the pipeline runs in two passes. First, a vision model transcribes every character verbatim — no guessing, no 'helpful' completion. Then a second model reasons over that transcript with context: is this total or subtotal? Is 'DEPARTURE' a vendor or a header? Should a faded character be a 3, an 8, or honestly a '?'.

Verbatim-first matters more than it sounds. An OCR that confidently invents a plausible number is worse than one that admits uncertainty, because the invented number silently poisons your books. Our rule: a '?' is a feature, a hallucination is a bug.

Today the median end-to-end time from photo to filed receipt is 1.8 seconds, with 98.7% field accuracy across the eleven writing systems we see most. The remaining 1.3% is why we keep the 'reply wrong to correct' loop one message away.

Stop chasing paper

Ready to retire your receipt chaos?

Set up takes 5 minutes. Your first 30 receipts are on us.