How We Test ReceiptIQ Against Real Receipts From Four Countries
A receipt from Tokyo, one from Taipei, one from Kralendijk and one from Calgary have almost nothing in common except the word "total" in four languages. Version 2.2.0 is the first ReceiptIQ release whose scanning pipeline was measured, receipt by receipt, against real receipts from four countries before it shipped. Here is what that test found, and what it fixed.
Receipts are not international
ReceiptIQ started in Canada, and for a long time its rules quietly assumed Canadian receipts: prices look like 12.34, the total line says TOTAL, tax is added at the bottom. Then users in the Netherlands, Bonaire, Japan and Taiwan arrived, and their receipts break every one of those assumptions.
- Japan and Taiwan print no decimals at all. A yen price is
¥1,190; a Taiwanese one is483or198TX. Japanese receipts also print tax that is already included (内税) as an information line, and the word 合計 (total) appears in several other roles: 合計点数 is the item count, 合計P is loyalty points. - The Netherlands and Bonaire use a comma as the decimal separator:
16,50,Totaal € 54,68, and on Bonaire the dollar sign sits a space away from the digits:$ 55,00. - Taiwan issues a government-standard e-invoice (統一發票) with an invoice number, a random code and a QR block above the itemized part, none of which are prices.
None of this is exotic. It is simply what the paper looks like in those places, and a scanner that was never measured against it will fail in ways its developer never sees.
How we measure
We built a small test rig on a Mac that runs the exact same code the app runs on your iPhone: Apple's on-device text recognition, ReceiptIQ's own logic that pairs item names with prices by their position on the receipt, the "does this look like a receipt?" check, and the arithmetic fixers that repair discounts, misaligned prices and totals. It feeds each receipt through that pipeline and compares the result with what is actually printed.
What went through it:
- 1,148 real Japanese receipts from a public, openly licensed research dataset, photographed on phones in shops and restaurants, with the store, date, items, tax and total labeled by people.
- 973 real Malaysian receipts from the ICDAR 2019 research benchmark, the format our Singapore and Malaysia users scan.
- 40 Taiwanese e-invoices rendered from the official layout, because no public photo set exists yet.
- Receipts users reported to support over the summer, mostly from the Caribbean Netherlands, which now run as regression tests before every release.
One thing we do not do: train a model on any of this. ReceiptIQ's text recognition is Apple's, and the parsing rules are code we can read and test. The datasets stay on one Mac, and receipts users send us stay private.
What the test found
| Finding | Before | After |
|---|---|---|
| Japanese receipts where items got paired with their prices | 19% | 93% |
| Taiwanese e-invoices accepted as a receipt | 33 of 40 | 40 of 40 |
| Taiwanese e-invoices with items paired | 25 of 40 | 40 of 40 |
| Japanese receipts given a phantom tax line (out of 40) | 12 | 4, and those 4 really are tax-excluded |
| Dutch receipts with a comma total read correctly | depended on luck | all of them |
| Times the total-correction step overrode a correct total on 194 receipts | 18 | 0 |
The last row is the one we are proudest of. A safety net that occasionally replaces a right answer with a wrong one is worse than no safety net, and it was the test rig that caught it, the same evening it was written.
What changed in 2.2.0
- Yen and New Taiwan dollar prices are recognized as prices, so item names and amounts reach the parser already paired. That was the single biggest source of mismatched line items on Japanese receipts.
- Japanese tax-included receipts no longer gain an invented consumption-tax item; 小計 is never mistaken for the total; お預り and お釣り are read as cash tendered and change.
- Comma decimals and a space after the currency symbol are accepted everywhere: in the receipt check, in the pairing step and in the total correction.
- Total, subtotal, tender and discount words in Dutch, Spanish, Japanese and Traditional Chinese are recognized, so they stop showing up as things you bought.
- If a scan is still rejected as "not a receipt", the alert now offers to send the photo and the recognized text to support, with your consent, so we can add it to the test set.
What is next
Real Taiwanese receipt photos, a Spanish set, and a better capture experience so that the photo going into this pipeline is as clean as the one coming out of your printer. If you scan receipts in a country we have not measured yet, the report button is the fastest way to get your format into the next test run.