BankStatementScan
English

Bank statement OCR mistakes: check 0/O and 1/I without guessing

Resolve ambiguous bank-statement OCR characters against the image, record uncertainty and avoid editing amounts merely to fit a balance.

When OCR returns O instead of zero or I instead of one, check the original image before substituting. A numeric column narrows the possibilities but does not prove the missing digit. Never choose a number solely because it makes the closing balance match.

Locate the glyph and preserve its source evidence

  1. Keep raw OCR text and locate the exact page and row. Inspect the questionable character at a readable zoom alongside other digits in the same font.

  2. If the image is skewed or blurred, retry from a better source copy or an improved working image. Preserve the original and compare the new reading.

  3. Record confirmed text, evidence and unresolved status separately. Do not run a global O→0 replacement through descriptions or references.

Fictional example

A fictional amount is read as 1O8.50. The visible PDF clearly shows 108.50, so the corrected amount is 108.50 with a source note. Another image reads 1?8.50 and remains blurred. Even if 108.50 would balance the sheet, it stays unresolved until a clearer source or bank export confirms it.

Use the field to locate doubt, not to supply the answer

A letter in an amount field is a reason to review that field. It does not establish whether the damaged glyph was 0, 6 or 8. In a reference such as the fictional O1-AB, letters may be intentional. Classify the field before proposing any substitution, and keep the entire amount visible so a correct digit is not paired with the wrong sign or decimal mark.

Compare the doubtful glyph with known zeros and ones elsewhere on the same page. If the original remains indistinct, a clearer download or a native transaction export is preferable to repeated guessing. Assess orientation, legibility and image quality on a working copy, then compare recognized text with the original. Use a working copy and compare it with the untouched original; an altered image is not new bank evidence.

Separate a suggested reading from an accepted correction

For the fictional readable case, record raw 1O8.50, corrected 108.50, source page/row and “zero visibly confirmed”. For 1?8.50, leave the numeric result empty and label the row unresolved. Do not use zero as a placeholder: that would turn a missing value into a definite transaction amount.

A second OCR pass returning 108.50 is another reading to inspect, not independent confirmation of an unreadable image. Review the whole row after correction, including direction and reference, and check that the transaction count is unchanged. If an import cannot carry review statuses, hold the incomplete delivery or supply an explicitly incomplete subset with a separate exception list; never describe that subset as the complete statement.

Review both invalid text and plausible numbers

A search for letters catches 1O8.50, but misses a misread value that already contains only digits. Use this fictional decision table for EUR amounts and text references.

OCR resultSource observationDecisionNumeric amount (EUR)
1O8.50Zero is clearly printedCorrect and record the evidence108.50
1?8.50Middle digit remains blurredKeep unresolvedEmpty, with review status
O1-AB in a referenceLetter O is visiblePreserve reference as textNot an amount
188.50 in an amountSource clearly prints 108.50Correct despite valid numeric syntax108.50

For a separate fictional pair, the source debits are EUR 108.50 and EUR 91.50, totalling EUR 200.00. An OCR result of EUR 188.50 and EUR 11.50 also totals EUR 200.00: the errors of +80.00 and −80.00 cancel. A grand total cannot clear these two rows. Compare the individual printed amounts; if running balances are available and readable, use them as an additional check after checking the digits.

Review date fields and references as well as amounts. A wrong reference may leave every balance unchanged while linking a payment to the wrong record. Keep a correction tied to its page, original row and exact field. After correcting an amount, recompute any dependent totals and inspect the neighbouring rows for a shift of columns. If the evidence remains unreadable, retain the exception and seek a better source instead of treating agreement between two OCR attempts as approval.

Checks and limits

Review ambiguous signs and decimal marks as well as digits. Improving orientation can help OCR, but offers no guaranteed recovery. A readable character is stronger evidence than arithmetic plausibility. If one amount remains unreadable, export its review status explicitly or pause the downstream import rather than inventing a transaction.

Keep the original file unchanged and record any unresolved item before using the table.

Check the field type and original amount before correcting an ambiguous character. Bank references in Excel: protect long IDs and leading zeros · Bank amounts stored as text: find invisible thousands spaces · Diagnose a bank PDF before choosing a table extraction tool.

BankStatementScan is in preparation. The site offers an access request and a fictional example; it does not currently convert your bank files. See the planned service.

Sources consulted on 16 October 2026

Leave your work email to register your interest. The conversion product is still in preparation.

Explore the example
BankStatementScan

Request access to BankStatementScan.

Leave your work email to register your interest. The conversion product is still in preparation.

Submitting sends your email and visit/context information to BankStatementLab infrastructure for BankStatementScan. No account, payment or automatic email is created. Privacy.