Fix · Finance

Bank statement PDF not parsed: scanned or image-only.

The parser returns zero rows, or rows with empty amounts, for a statement that opens fine in a viewer.

Cause.

The PDF carries images, not text. Either the bank sent a scan, the branch printed and scanned it, or the export embedded glyph outlines without a text layer. A text parser has nothing to read.

Fix.

01Test the file: copy a line in a viewer; if nothing selects, it is an image.
02Ask the bank for the native statement export (CSV, MT940 or the online PDF) rather than a printed copy; most Singapore and Indonesian banks offer one in internet banking.
03Where only a scan exists, read it with a document model and hold every figure for a person to confirm against the image before it enters the ledger.
04Reconcile the parsed page to its own opening and closing balance; a page that does not balance is rejected, not corrected by hand.
05File the original PDF beside the parsed rows so an auditor can see both.

How the build avoids it.

KYN’s parsers read native BCA, OCBC and DBS formats line by line, route scans to a document model with a person confirming figures, and refuse any page whose lines do not sum to its closing balance.

Checked 13 October 2026 against a live build. Vendors change behaviour; if a step no longer matches, tell us and the page changes.

Questions operators ask

Can AI read a scanned statement reliably?

Well enough to draft, not well enough to post. Figures from a scan are held for a person to confirm against the image; the page must also balance to its closing figure before it is used.

Which format should we ask the bank for?

CSV or MT940 where offered; otherwise the PDF generated by internet banking, which has a text layer. Avoid printed and scanned copies.

What if the statement spans a month end?

The parser splits lines by value date; the closing balance check runs per page and per month.

Does this work for Indonesian banks?

Yes. BCA and OCBC Indonesia formats are parsed natively; others go through the document model with confirmation.

Still stuck

Send the exact error text and the system. If it is a ten-minute fix we say so; if it is a build, we scope it.

WhatsApp us →