Honest limits · what to do instead

Scanned bank statement to Excel

This tool cannot read a scan, and it will tell you so within a second rather than inventing rows. The good news: most "scanned" statements are not scans at all — they are text PDFs that merely looked like images. Here is how to tell, and what to do in each case.

Drop your bank statement here

PDF from online banking, or an OFX / QFX export. Click to choose, or paste with Ctrl/⌘+V.

Text-based PDF up to 60 MB / 200 pages, or .ofx / .qfx

Never uploaded — conversion happens in your browser No sign-up, no email Rows checked against the statement's running balance

First: is it actually a scan?

Open the PDF and try to highlight a single word in the middle of a transaction line. Two outcomes:

  • You can select the words. It has a text layer. Drop it into the converter on this page and it will be read exactly — scans are not the problem here, the download was.
  • Nothing highlights, or a whole block highlights as one. It is an image. OCR is needed, and no amount of PDF parsing will help.

A surprising share of "my statement is scanned" cases are the first kind. Banks often serve an image preview in the browser while the actual download is a proper text PDF, so it is worth checking the download button before assuming the worst.

The fastest fix is usually not OCR

In rough order of how much work they save you:

  1. Download the statement instead of viewing it. The in-browser viewer is frequently an image; the file behind the download button frequently is not.
  2. Look for CSV, OFX or QFX export. Many banks offer a transaction export that contains structured data. That is strictly better than any PDF, scan or not — and this site converts OFX and QFX too.
  3. Ask the bank for a different format. For statements older than the online banking window, a phone call often produces a text PDF by email.
  4. Only then reach for OCR, and treat the output as a draft to be reconciled.

If you do end up using OCR

Character recognition is the easy half. The hard half is knowing which characters belong to which column, and that is where most OCR output on bank statements falls apart.

What to look for

  • Table output, not text output. If the result is paragraphs of text, you have swapped one parsing problem for another.
  • Balance and amount kept on the same row. A tool that puts the running balance on its own line has lost the relationship that makes verification possible.
  • Visible confidence. Per-row or per-field confidence scores tell you where to look; a single global percentage does not.
  • A downloadable spreadsheet. Anything you then have to copy out of a web page is a transcription error waiting to happen.

Verify it before you use it

OCR errors are quiet. A 5 read as a 6 changes a figure without changing its shape. The defence is the same arithmetic this site uses on text PDFs: walk down the running balance column, adding each amount, and confirm every step matches what the statement prints. One wrong digit breaks the chain at that row, so the balance column localises the error for you.

If the totals reconcile to the statement's closing balance and every intermediate step agrees, the OCR is probably sound. If a single row breaks the chain and the next row restores it, that one row is wrong — check the original image for that line.

What not to do

  • Do not paste OCR output straight into accounting software without reconciling it.
  • Do not upload statements to a service that keeps them, if you can avoid it — statements contain your account number, address and full transaction history.
  • Do not assume a high overall confidence score means every row is right. Dense digits are exactly where models fail.

Questions people actually ask

Why can a scanned statement not be converted here?

A scan is a picture. There is no text inside it to read — only pixels arranged to look like text. Turning those pixels into characters is OCR, which needs a recognition model. A statement downloaded from online banking is very different: it carries a real text layer, so it can be read exactly and instantly.

How do I tell whether my statement is a scan?

Try selecting a line of text with your mouse in any PDF viewer. If you can highlight individual words, it is text and this tool will read it. If dragging selects a whole rectangle like an image, or nothing at all, it is a scan. You can also just drop it here — the converter detects the missing text layer and says so instead of guessing.

The best fix: get the right file from your bank

Almost every bank that gives you a scanned-looking statement also offers a proper download. Log in, open the statement, and look for a download button rather than viewing it in the browser — the in-browser viewer is often an image, while the download is a text PDF or a CSV. Check too whether your bank exports OFX or QFX; those formats contain structured data and need no OCR at all.

If OCR really is the only option, what should I look for?

Any OCR tool can recognise characters. What you need is one that reconstructs the table: rows, columns, and the relationship between an amount and the balance on the same line. Most general OCR produces a wall of text that you then have to parse yourself. If you must use one, prefer a tool that outputs a table or spreadsheet rather than plain text, keep the output as a draft, and reconcile the totals against your statement before you rely on it.

Can I check OCR output against the statement?

Yes, and you should — that is what the running balance is for. Add up the amounts in order and confirm that each step matches the balance printed on the corresponding statement line. A single misread digit breaks the chain, which makes the balance column an excellent error detector for OCR output as well as for this tool.

Will this site ever do OCR?

Not in the browser for free. Accurate OCR on a dense table needs real compute, and running it client-side would be slow enough to be useless. If demand justifies it, a paid batch route with proper OCR on a server is the honest way to do it — with the privacy trade-offs stated up front.