How accurate is receipt OCR? Limits, error sources and checks

Receipt OCR accuracy depends on the paper, the photo and the field being read. Learn which errors are typical, why the total is tricky and how to check results in seconds.

In short: Receipt OCR accuracy is high on a clean, well-photographed receipt, but drops noticeably with faded thermal paper, creases, poor light and unusual formats. The most common errors are confused digits, the wrong amount (subtotal instead of total) and the date. Results only become reliable with a quick check, which takes seconds when the app does not guess.

"Does the app get the amount right?" is the question almost everyone asks before they start scanning receipts. The honest answer: usually yes, but not always, and the exceptions follow clear patterns. Once you know those patterns, you know when a second look is needed and when it is not.

This article shows what accuracy depends on, which OCR errors happen most often on receipts, and how to check extracted receipts efficiently.

How accurate is receipt OCR really?

There is no single percentage that applies to all receipts, because accuracy depends on three things at once: the condition of the paper, the quality of the photo and the field being read. A fresh supermarket receipt, photographed flat in daylight, is read correctly almost every time. A three-month-old, crumpled thermal receipt from the bottom of a wallet often is not.

On top of that, OCR reads characters but does not understand the receipt. It does not know that "Total" matters more than "Subtotal", or that a date in the footer might be the print date of the receipt template. That interpretation is handled by the software afterwards, and the errors there differ from those in pure character recognition. Reading receipts automatically: how receipt OCR works explains how the two steps fit together.

Which OCR errors happen most often on receipts?

Most recognition errors fall into one of six groups. Knowing them helps you spot them faster when checking:

Error sourceTypical exampleEffect
Similar characters8 becomes 3, 0 becomes O, 1 becomes l, 5 becomes SWrong amount or date
Faint printThermal paper after weeks in the carCharacters missing entirely
Creases and foldsFold running through the total lineNumber split up or skipped
Decimal separators1'250.00, 1.250,00 or 1250.00Amount off by a factor of 1000
Several amountsSubtotal, total, cash given, changeWrong amount picked
Date formats03.04.2026 or 04/03/2026Day and month swapped

Confused digits are the classic OCR errors and occur mainly with weak contrast. The other groups are interpretation errors: the characters were read correctly, but the wrong line or format was chosen. For everyday use the distinction does not matter; for checking it does. A better photo fixes digit errors, while interpretation errors need an app that understands the layout of a receipt.

Why is the amount the hardest field?

The amount is hard because a receipt rarely shows just one amount. A typical supermarket receipt contains item prices, a subtotal, possibly a discount, the total, the amount paid ("cash given") and the change. Then come the VAT lines with net, tax and gross amounts per rate. Finding the one correct number among 15 on a receipt is the real achievement, not reading the digits.

An example: you pay CHF 63.20 in cash and hand over CHF 70.00. The receipt then shows 63.20 (total), 70.00 (given) and 6.80 (change). Software that simply takes the largest number records 70.00. Software that takes the last number records 6.80. The correct value is 63.20, and only software that considers the label of the line gets it right. How to read a receipt: abbreviations and lines explained lists the abbreviations and lines that appear on receipts.

Then there is the decimal separator. Swiss receipts often print 1'250.00, German ones 1.250,00, and some till systems 1250.00. An OCR engine that reads the apostrophe as a full stop can quickly turn 1'250.00 into 1.25 or 1250000. That is why amounts above 1,000 francs always deserve a glance.

Guess or leave empty: the key difference in receipt recognition

Whether an app guesses when uncertain or leaves the field empty has more influence on your data quality than the recognition rate itself. That sounds paradoxical but is easy to explain: an empty field is a visible error that you correct immediately. A wrong value is an invisible error that travels onward.

Belego is deliberately cautious for that reason: amount, date, merchant and category are read automatically, but whatever cannot be read with certainty stays empty and is added by hand in a moment. Everything can be overridden. In practice this means: on a clean receipt you confirm the values in two seconds, on a poor one you type in the missing amount. Both are faster than hunting for a wrong value in the annual overview.

AI receipt recognition: what it can do, what it cannot explains why AI models in particular tend to guess confidently and what that means for receipts.

How do you check extracted receipts efficiently?

Check right after scanning rather than at year end, and it takes a few seconds per receipt. The receipt is still in front of you, you still remember what you bought, and an error is fixed with one tap. This order has proven useful:

  1. Compare the amount with the total line on the receipt. For card payments, also with the amount on the card terminal slip.
  2. Check the date, especially on receipts that print time, receipt number and date on one line.
  3. Glance at the merchant: is it the company name or the shop name? Either is fine, as long as you will recognise it later.
  4. Confirm or change the category.
  5. For amounts above 1,000 francs, check the decimal separator.

A monthly plausibility check adds a safety net: does the sum of your receipts roughly match your card debits? Does one receipt with an unusually high amount stand out in the monthly overview? Such outliers are almost always recognition errors and take a minute to find.

What you can influence when taking the photo

Accuracy starts before OCR: a good photo prevents most digit errors before they arise. Three things make the biggest difference:

  • Light: even, with no shadow of the phone on the receipt, and no flash reflecting off thermal paper.
  • Surface: lay the receipt flat on a dark background and smooth out creases, especially around the total and the date.
  • Time: scan thermal paper within days. Once it has faded, no software can read it, as Scan paper receipts before they fade explains.

How to photograph receipts so they stay readable: 7 practical tips has the full list with examples.

Frequently asked questions

Does OCR recognise receipts in other languages and currencies?

Character recognition works for Latin script regardless of language. Interpretation is harder: "Total", "Somme", "Totale" and "Importo" all mean the final amount, and the app has to know these terms. Receipts from abroad in EUR, USD or GBP can be recorded in Belego in multiple currencies; after reading, take a quick look to confirm the currency is correct.

Why is the merchant sometimes wrong or missing?

Many shops print only a logo as a graphic at the top of the receipt, which OCR cannot read as text. Others print the legal company name ("Sample Retail AG") instead of the shop name you know. An empty or unfamiliar merchant name is therefore not a sign of poor OCR. Enter the name by hand once; you will find the receipt via search later.

Can a better phone improve OCR accuracy?

Only to a limited degree. Current phone cameras have long been good enough for receipts; the difference between a three-year-old model and a new one is barely noticeable when reading. Even light, a receipt lying flat and a photo showing the whole slip make far more difference. Get those right and any device produces a clean result.

Are the extracted data or the scan the actual receipt?

The scan is the receipt; the extracted data are its summary. For the tax office and your accountant, what counts is the image of the original showing merchant, date, amount and VAT. The extracted fields make searching, analysis and export easier. A recognition error therefore does not invalidate the receipt, it just needs correcting in the data.

Keep reading
© 2026 Belego · Built by Noa Walser
Swiss software, made in Zurich.