PDF statements: what can be read reliably
A PDF is a page description, not a table. It says "draw these characters at these positions". To get transactions out, StatementLens collects the text with PDF.js (Mozilla's open-source PDF library, served from this site), groups pieces that sit on the same line, and then looks for lines that start with a date and end with an amount. This runs in your browser; the file is not sent anywhere.
What works
- Electronic statements where you can select and copy the text.
- One transaction per line, starting with a date such as 01/05/2026, 2026-01-05, 5 Jan or Jan 5.
- The line ends with one amount, or with an amount followed by a running balance.
We checked this against a fictional sample statement published under CC0 by bankstatementtocsv.cc (licence). All six of its rows were read and, using the running balance to set each row's direction, matched the sample's published CSV to the cent. That is one layout. It does not mean your bank's layout will work.
What does not work
- Scanned or photographed statements. They contain no text, only an image. StatementLens says so and stops. It does not run OCR.
- Password-protected PDFs. Refused with a message. Download an unprotected copy from your bank, or use the CSV export.
- Descriptions that wrap onto a second line. The first line is read; the continuation line appears in the skipped list.
- Lines with three or more amounts (for example separate fee and interest columns). They are skipped because the meaning of each number cannot be known from the text.
- Summary-only documents. A page with balances and totals but no transaction list produces no rows, and StatementLens says that nothing was added.
Debit and credit columns in a PDF
Many statements print withdrawals and deposits in separate columns. In the text of a PDF both just look like a number, so the side it was printed on is lost. If the statement has a running balance, choose "Use the running balance to decide direction" and enter the opening balance: each row's direction then comes from whether the balance went up or down, and any row where the change does not equal the amount is listed as not read. Without a running balance, check the signs row by row.
How to check the result
- Compare the count. The review screen shows how many text lines there were, how many became rows and every line that did not, with the reason.
- Enter the printed opening and closing balances. The difference should equal the net of the rows.
- Scan the skipped lines for anything that looks like a transaction. If you find some, the CSV export from your bank is the safer source.