OCR (optical character recognition) turns a scanned or photographed bank statement into editable text in three stages: it cleans up the image, recognises the shape of each character as a letter or digit, then works out the table layout so amounts stay in the right column. Only an image statement needs this — a PDF downloaded from online banking already stores its dates, descriptions and amounts as real text, so OCR is skipped and the characters are read straight out of the file. The step most converters don't build in comes after the read: Export Bank Statement rebuilds the running balance from the recognised figures and flags the statement if it doesn't reconcile, so a misread digit can't slip through unnoticed.
That last part is the whole point. OCR is good, but on an image it's making educated guesses about pixels, and guesses can be wrong. Knowing how it works tells you where the errors come from, and why a balance check is what catches them.
What OCR is, and when a statement actually needs it
Optical character recognition is software that looks at a picture of text and converts it into characters a computer can search, copy and drop into a spreadsheet. The key word is *picture*. OCR only has a job when the statement is an image — a page run through a scanner, or a photo taken on a phone. There's no text inside those files, just dots of ink and shadow, so something has to read the shapes.
Most PDFs from online banking aren't like that. Open one, try to select a row, and the text highlights. That tells you the dates and amounts are stored as real characters, and the converter lifts them directly: no recognition, no guessing, effectively exact. So before anything else, a good converter checks whether there's a text layer — if there is, it uses it; if the page is just an image, it switches to OCR. People often assume every PDF gets "scanned". It doesn't, and the ones that do are where accuracy gets interesting.
Step one: cleaning up the image
Raw scans are messy, and OCR reads a clean image far better than a noisy one. So the first step is preprocessing, before a single character is identified. A few things get fixed here:
- Deskew. Pages fed in at an angle, or photos taken off-square, get rotated back to level. A tilted page pushes rows out of line, and on a statement that means an amount drifting into the wrong row.
- Greyscale and thresholding. The image is stripped of colour and converted to sharp black-on-white, so the engine can tell ink from paper without tripping on a grey shadow or a coloured bank logo.
- Noise removal. Scanner speckles, phone-photo fuzz and faint fold lines get smoothed away so they aren't read as punctuation or a stray digit.
- Contrast and sharpening. Faded thermal prints and old statements get boosted so thin strokes survive.
Get a clean, level, high-contrast image here and the rest has an easy time. Feed it a crumpled photo in dim light and every later step inherits the mess.
Step two: recognising the characters
Now the engine reads. It finds the blocks of text in the cleaned image, breaks them into lines and then into individual character shapes, and decides what each shape is. Modern OCR uses trained models rather than rigid templates, which is why it copes with different bank fonts, but the principle holds: it compares the shape it sees against what it knows a "3" or an "" looks like, and picks the best match.
This is where errors are born. When a character is faint, squashed or smudged, the engine still has to commit to an answer, so it goes for the closest lookalike. That's why OCR slips are predictable rather than random — they land on characters that share a shape. A 0 read as an 8. A 1 as a 7. A 5 as a 6. A decimal point lost in a smudge. On a statement, the one that bites is a single wrong digit in an amount, because the row still looks complete. Nothing flags it as you scroll past.
Step three: keeping the columns aligned
Reading the characters isn't enough. A bank statement is a table — date, description, money out, money in, balance — and the data is only useful if each number lands in the right column. This is the layout, or table-detection, stage, where a lot of cheaper conversions fall apart.
The engine uses the *position* of text on the page to reconstruct the grid: which characters share a row, where one column ends and the next begins, how to handle a description that wraps onto two lines. On a clean text PDF this is mostly geometry. On a skewed scan it's harder, because the columns aren't perfectly vertical any more, and a few degrees of tilt can tip a figure from the "out" column into the "in" column — quietly reversing the sign of a transaction. It's also why copy-pasting from a PDF so often produces a mangled single column: a plain copy grabs the characters but loses the layout.
The step that makes the read trustworthy: reconciliation
Here's what turns OCR output from "probably fine" into "checked". After the characters are read and the columns aligned, Export Bank Statement does something a plain OCR tool doesn't — it verifies the numbers against the bank's own arithmetic.
Every statement carries its own answer key. Take the opening balance, add every credit, subtract every debit, and you should land exactly on the printed closing balance. So the converter rebuilds that running balance from the figures it extracted and compares it with what the bank printed. If a digit was misread, a line dropped or a sign flipped on a skewed scan, the total won't match, and the statement gets flagged before you act on it. The bank's own maths becomes the proof that the read is sound.
That's why "how good is the OCR?" matters less than people think. You don't need a converter that's flawless on every photo; you need one that tells you when it wasn't. The reconciliation check is that safeguard, and it's why a residual misread doesn't end up sitting silently in your accounts.
One honest note on the workflow. The tool converts your statement into a clean Excel (.xlsx) or CSV file, including the native bank-import formats for Xero, QuickBooks and Zoho Books. You then import that CSV. It doesn't push transactions into your accounting software through a live bank feed — that's a separate, certified path. The route: convert, confirm it reconciles, import.
The practical upshot: where you can, download the original PDF from online banking rather than scanning a paper copy, and you skip the guesswork. When you only have a scan or a photo — an older statement, or one a client sent — OCR handles it, and the reconciliation check confirms the figures tie out. For the steps on image files, see converting scanned statements to Excel.
Frequently asked questions
How does OCR read a bank statement?keyboard_arrow_down
In three stages. First it cleans the image — straightening, sharpening, converting to clear black-on-white. Then it recognises each character shape as a specific letter or digit. Finally it detects the table layout so dates, descriptions and amounts land in the correct columns. All three run on a scanned or photographed statement; on a text PDF from online banking the characters are read directly and OCR is skipped.
Does every PDF bank statement need OCR?keyboard_arrow_down
No. A PDF downloaded from online banking usually stores its text as real characters, so the data is lifted straight out. OCR is only needed when the statement is an image — a scan or a phone photo — because an image has no text layer to read.
What kinds of errors does OCR make on statements?keyboard_arrow_down
They cluster on characters that look alike: a 0 mistaken for an 8, a 1 for a 7, a 5 for a 6, or a lost decimal point. On a skewed scan, table detection can also push a figure into the wrong column and flip a transaction's sign. These slips are easy to miss because the row still looks complete, which is why a reconciliation check on the totals is what surfaces them.
How can I get the most accurate OCR result?keyboard_arrow_down
Start with the best image you can: scan at 300 dpi or higher, keep the page flat and square, and use even lighting for photos. Better still, download the original text PDF from online banking, since that skips OCR guesswork altogether. For more, see how accurate OCR is on bank statements.
How does the reconciliation check verify the OCR output?keyboard_arrow_down
It rebuilds the running balance from the extracted figures — opening balance plus every credit, minus every debit — and compares it with the printed closing balance. If they don't match, a transaction was misread, dropped or mis-signed, and the statement is flagged. The bank's own arithmetic becomes the test.
Does Export Bank Statement handle photographed statements?keyboard_arrow_down
Yes. It runs OCR on scanned and photographed statements from any bank, rebuilds the table, then runs the reconciliation check so you can see whether the figures tie out before you import them.
Try it on your own statement
Clean Excel/CSV, with every transaction checked to balance.
