← All features

Reading statements that are scans

A statement downloaded from online banking carries a text layer and is read in your browser. A statement that was printed, signed and scanned back in carries nothing but an image — and needs an entirely different path.

Two paths, and which one your file takes

The browser opens the PDF and looks for a text layer. If it finds one, the whole conversion happens on your device and the file is never uploaded. If it does not, there is nothing local to work with, and the statement is sent to be transcribed.

You are told which path your file is taking before it happens, and asked. This is the one case where a statement leaves your machine, and it is not something to discover afterwards.

Why a model rather than traditional OCR

Classical OCR returns characters and their positions. That is a starting point, not an answer: turning a page of characters into transactions means working out which marks are a table, which column is the amount, which lines are a wrapped description, and which are a carried-forward balance pretending to be a transaction. Encoding those rules per bank does not scale past the first handful.

A vision model reads the page the way a person does, and the pages go up at their original resolution rather than through a canvas round trip that would lose detail before the model ever sees them.

The accuracy trade, stated plainly

A cheap fast model will misread digits on a poor scan. A dropped zero turns 220,000 into 22,000, and it will do this occasionally no matter which model is used.

That is survivable here for exactly one reason: every extraction goes through reconciliation before anyone sees it, and a misread amount breaks the running balance at precisely the row it occurred on. Take that safety net away and the model choice stops being defensible — which is why the two were built together rather than the OCR first.

What happens to a scanned file

It is sent for transcription and not retained for training. The request is routed only to providers whose terms do not permit retaining or training on what they receive, and a request that cannot be served on those terms fails rather than falling back to one that can.

What is stored afterwards is up to you: retention runs from keeping nothing at all through to a year, and expired data is deleted daily along with the stored PDF.

A scan is always less certain than a text layer

Faint print, a skewed page, a handwritten annotation across the table, or a photocopy of a photocopy will cost accuracy, and no tool changes that. Where a statement is part digital and part scanned — one page photocopied into an otherwise clean file — the scanned pages are the ones to check first. Reconciliation will usually catch the error; it will not always localise it to a row on a card statement with no running balance.

Related