Add a receipt photo and a few seconds later the date, store and total appear in the table. Knowing what happens in between explains why some cells are highlighted and how to take photos that read better. Here's how ReceiptMoa reads a receipt, step by step.

1. Cleaning up the photo

Phone photos are large, sometimes sideways, and receipts are rarely shot perfectly straight. Before reading anything, the photo is prepared.

  • It's rotated upright using the orientation stored in the photo.
  • Very large photos are scaled down to a size that's still sharp enough to read, which saves memory on phones.
  • If the background is visible, the bright paper area is found and its four corners are flattened so the receipt looks as if it were shot straight on.
  • If the lines of text are tilted, the angle is measured and the image is straightened.

2. Finding where the text is

Next, a detection model looks for areas that contain text. It estimates how likely each part of the image is to be text, then groups the likely parts into boxes. A typical receipt produces dozens of them.

3. Reading the text

Each box is cropped and passed to a recognition model that reads the characters. The English page uses an English model, and the Korean page uses a model that reads Korean and English together. The results are assembled line by line into text in the same order as the receipt, along with how confident the model was about each character.

That's the part usually called OCR, optical character recognition. What comes out is still just a block of text. Working out which part is the date and which is the total happens next.

4. Picking out the three values

Date

The reader looks for anything shaped like a date, such as 2026-09-13, 09/13/2026 or Sep 13, 2026, and checks that the month and day actually exist. When there are several, a line labeled Date is preferred. A date like 03/04/2026 could be March 4 or April 3, so on this page it's read as month first and always flagged for a check.

Total

This is the hardest value because receipts are full of amounts. Lines labeled Grand Total, Amount Due, Balance Due or Total Due are trusted first, then plain Total. Lines such as Subtotal, Tax, Tip, Cash, Tendered, Change, Discount and Savings are skipped. Phone numbers, masked card numbers, authorization codes and times are also filtered out so they aren't mistaken for money.

Keyword matching respects word boundaries, so "Subtotal" is never read as "Total". If no labeled total is found, the largest remaining amount is used and flagged.

Store

The store name is usually near the top, mixed in with addresses, phone numbers and words like "Receipt". A name after a label such as Store or Merchant is used first. Otherwise the reader picks the most name-like line from the top of the receipt, skipping address, phone and website lines, and flags it so you can confirm.

5. Yellow means "not sure"

A wrong value is less of a problem than a wrong value that looks right. So a cell is highlighted when:

  • the characters it came from had low confidence,
  • the date is ambiguous or has no year,
  • the total wasn't found next to a clear label, or
  • the store name was a best guess from the top lines.

Checking only the yellow cells against the photos is much faster than checking everything. Once you edit a cell the highlight disappears, and adding more photos later never overwrites it.

6. Common causes of misreads

Cause What happens Fix
Crumpled or curled receipt Text lines bend and boxes are misplaced Flatten it and shoot straight on
Faded thermal paper A digit or two is read as another digit Bright light and tap to focus
Long receipt shot from far away Text is too small and the total is missed Fold the items back
Shadows or glare Parts of the text disappear Move, tilt and skip the flash
Store name printed as a logo Another line is picked as the store Fix it once in the table

7. Why it runs in your browser

Many receipt scanners upload photos to a server for processing. ReceiptMoa downloads the recognition models to your browser and runs every step on your own device. Partial card numbers and names on your receipts never leave it. The trade-off is that the first run takes a little longer while the models download, and speed depends on your device.

Summary

Reading a receipt goes clean up the photo → find text → read text → pick the date, store and total → flag anything uncertain. The flatter and brighter the photo, the more accurate the early steps are and the fewer yellow cells you'll see. For photo tips, see How to photograph receipts for better recognition.