Short answer: optical character recognition does two things, and only the first one is about shapes. It finds the letterforms, and then it leans on language to decide between the ones it cannot tell apart. That second step is doing far more work than people realise — and it stops working completely in exactly the places you needed it most.
Nothing in English is spelled c0st, so a recogniser that read a zero there fixes it without telling you. An invoice number is not a word. Neither is a postcode, a serial number, a sort code or an amount. There is nothing to check against, so whatever the shapes suggested is what you get.
Where the errors actually land
This is the practical consequence, and it is worth internalising before you trust a scan: OCR is most accurate in prose and least accurate in data. Backwards from what you want.
A page of writing comes out very well, because every ambiguous letter sits inside a word that either exists or does not. A table of part numbers comes out worse, and nothing warns you, because the recogniser has no way to know it was wrong. So proofread the numbers and skim the sentences, not the other way round.
Two habits that cost nothing: check anything you are going to pay, post or type into a system, and be suspicious of any digit that is a 0, 1, 5 or 8.
What ruins a scan before recognition starts
- Not enough resolution. The single biggest factor. Recognition wants a capital letter to be somewhere around twenty to thirty pixels tall; below that the distinguishing parts of a glyph stop existing. A page photographed to fill the frame is usually fine; a page photographed from across a desk is not.
- Skew. A page held at an angle. Most engines straighten a small tilt, and most struggle past a few degrees. Square the camera to the page rather than the page to the room.
- Uneven light. A shadow across half the sheet, or your own shadow leaning over it. Thresholding a page with a gradient across it eats the text on the dark side.
- Glare. Glossy paper under a ceiling light. Move sideways rather than adding light.
- Heavy JPEG compression. JPEG is at its worst on exactly this — hard black-on-white edges — and a screenshot re-saved a few times has smeared letterforms before OCR sees them. Our guide on JPG and PNG shows what that does to text.
- Handwriting. A different problem, not a harder version of this one. Ordinary OCR is built for printed type and will make things up.
How to photograph a page so it works
The whole list, in order of how much it helps:
- Fill the frame with the page. Resolution is everything, and this is free.
- Shoot from directly above, square to the paper. Not at an angle from a seated position.
- Use daylight, indirect. Next to a window, not under one lamp. Watch for your own shadow.
- Flatten the page. A curled sheet bends the lines of text, which is worse than tilting them.
- One page at a time. Two pages in one photograph halves the resolution of each.
If the photograph already exists, cropping to the block of text you actually need helps for the same reason cropping helps a cutout: fewer pixels wasted on the desk means more of them on the letters.
Columns, tables and receipts
Recognisers read in lines. A receipt with an item on the left and a price on the right may come back as one line containing both, or as two separate blocks, depending on how much space is between them — and a table with narrow gutters can come back with columns interleaved.
There is no setting that fixes this, because the layout is being inferred from spacing and the spacing is genuinely ambiguous. If you need a table, expect to fix the structure by hand, and treat the recognition as having saved you the typing rather than the formatting.
Languages and accents
A recogniser is trained on a language, and it uses that language's vocabulary in the second step. Run Spanish through an English model and the letters come out roughly right while every accented character becomes a guess — ó and o differ by a couple of pixels, and the dictionary check that would have caught it is looking up the wrong dictionary.
So pick the language before running it, if the tool lets you. It changes the answer more than any other setting.
Doing it without uploading the document
The documents people most want to convert are the ones they least want to send anywhere: payslips, contracts, medical letters, bank statements. Most OCR sites need the file on their server to do the work.
The tool here runs the recognition in your browser instead. The first use downloads the language model, which takes a moment; after that the page is read on your own machine and nothing about it is transmitted. Which also means you can photograph the same page three times and try all three.