A converter demo usually shows one clean page and one clean result. That pairing proves nothing, because it is the pairing you get from a tool that is guessing. The useful question is narrower: when this run is over, can you tell where the output stops matching the paper?
So these five cases are not beauty shots. Each document isolates one thing that breaks extraction, and each case reports what the run actually returned — the row count, the re-added closing balance, the variance, and every row where the printed balance would not follow from the one above it.
A business checking statement that continues onto a second page
Running-balance column · 2 pages · the second page has no column headers
- 2025-06-26 · CHECK 1045 — printed 43,727.98, the row above gives 43,727.96 (difference 0.02)
- 2025-06-27 · ACH DEBIT INSURANCE PREMIUM — printed 41,751.96, the row above gives 41,751.98 (difference 0.02)
| Date | Description | Amount | Printed balance |
|---|---|---|---|
| 2025-06-02 | COUNTER DEPOSIT · BANDOLIER TX | 12,400.00 | 54,252.55 |
| 2025-06-03 | ACH CREDIT SUMMIT OUTFITTERS LLC INVOI | 8,250.00 | 62,502.55 |
| 2025-06-04 | CHECK 1041 | -1,860.00 | 60,642.55 |
| 2025-06-04 | CHECK 1042 | -742.15 | 59,900.40 |
| 2025-06-05 | CARD PURCHASE RIDGE SUPPLY CO | -318.42 | 59,581.98 |
| 2025-06-06 | WIRE OUT HAULMARK FREIGHT | -4,900.00 | 54,681.98 |
| 2025-06-09 | ACH DEBIT PAYROLL 06/09 | -9,412.18 | 45,269.80 |
| 2025-06-09 | ACH DEBIT PAYROLL TAX 06/09 | -1,128.44 | 44,141.36 |
First 8 rows of 26. Full output: the engine's own markdown.
A personal checking statement with no running balance at all
Debits and credits in two columns · balance printed only at the top and the bottom

Open the PDF · run on 2026-11-02 · engine 1s · 1 file page(s)
| Date | Description | Amount | Printed balance |
|---|---|---|---|
| 2025-03-03 | DIRECT DEPOSIT NORTHSIDE PEDIATRICS PA | 2,486.10 | — |
| 2025-03-05 | CHECK 312 RENT | -1,650.00 | — |
| 2025-03-06 | DEBIT CARD KROGER #448 | -132.47 | — |
| 2025-03-08 | DEBIT CARD CITY WATER UTILITY | -68.20 | — |
| 2025-03-11 | ACH DEBIT AUTO LOAN 8842 | -402.66 | — |
| 2025-03-12 | DEBIT CARD PHARMACY | -41.09 | — |
| 2025-03-17 | DIRECT DEPOSIT NORTHSIDE PEDIATRICS PA | 2,486.10 | — |
| 2025-03-18 | CHECK 313 ROOF REPAIR | -890.00 | — |
First 8 rows of 14. Full output: the engine's own markdown.
A credit card statement printed newest first
Reverse chronological · payments and credits as negative amounts

Open the PDF · run on 2026-11-02 · engine 1s · 1 file page(s)
| Date | Description | Amount | Printed balance |
|---|---|---|---|
| 2025-04-18 | HARDWARE STORE | 94.77 | — |
| 2025-04-20 | PAYMENT THANK YOU | -800.00 | — |
| 2025-04-24 | GROCERY 4482 | 188.31 | — |
| 2025-04-29 | AIRLINE TICKET | 612.40 | — |
| 2025-05-03 | ANNUAL FEE | 95.00 | — |
| 2025-05-06 | OUTDOOR EQUIPMENT CO | 1,318.00 | — |
| 2025-05-09 | SERVICE STATION 4471 | 72.14 | — |
| 2025-05-11 | AUTOPAY THANK YOU | -1,204.55 | — |
First 8 rows of 10. Full output: the engine's own markdown.
The same business statement, scanned
A photograph of the page: skewed, grainy, JPEG-compressed — the OCR path

Open the PDF · run on 2026-11-02 · engine 4s · 1 file page(s)
| Date | Description | Amount | Printed balance |
|---|---|---|---|
| 2025-06-02 | COUNTER DEPOSIT BANDOLIER TX | 12,400.00 | 54,252.55 |
| 2025-06-03 | ACH CREDIT SUMMIT OUTFITTERS LLC INVOI | 8,250.00 | 62,502.55 |
| 2025-06-04 | CHECK 1041 | -1,860.00 | 60,642.55 |
| 2025-06-04 | CHECK 1042 | -742.15 | 59,900.40 |
| 2025-06-05 | CARD PURCHASE RIDGE SUPPLY CO | -318.42 | 59,581.98 |
| 2025-06-06 | WIRE OUT HAULMARK FREIGHT | -4,900.00 | 54,681.98 |
| 2025-06-09 | ACH DEBIT PAYROLL 06/09 | -9,412.18 | 45,269.80 |
| 2025-06-09 | ACH DEBIT PAYROLL TAX 06/09 | -1,128.44 | 44,141.36 |
First 8 rows of 20. Full output: the engine's own markdown.
A real business statement, ten pages long, three of them included here
A real bank's export · scanned pages · a running balance on every row
| Date | Description | Amount | Printed balance |
|---|---|---|---|
| 2024-07-01 | TRACTOR SUPPLY # 220 S | 99.48 | — |
| 2024-07-01 | HEVENOR LUMBER C | 79.05 | — |
| 2024-07-01 | Prime Video Channels | 7.30 | — |
| 2024-07-01 | GEICO PREM COLL | 618.03 | — |
| 2024-07-02 | PY *U Store It | 175.00 | — |
| 2024-07-02 | WAL-MART #1126 | 38.00 | — |
| 2024-07-02 | WAL-MART 41126 | 36.47 | — |
| 2024-07-02 | THE HOME DEPOT #6547 | 79.12 | — |
First 8 rows of 51. Full output: the engine's own markdown.
What these runs do and do not prove
They prove that five differently-shaped documents were read, that the lines on the paper came out as lines, and that the run reported where its own numbers stopped agreeing with the printed ones. They do not prove that your statement will read the same way: a layout we have not seen is a layout we have not seen, and the run will tell you so rather than fill the gap.
Two of the cases exist precisely to make that visible. In case one a single printed balance is two cents off the arithmetic, and the run names that row and the row after it — because the next printed balance was worked out from the wrong one, so the break shows up twice and nowhere else. Case four is a scan of the same page: the difference between one and four is the difference the paper itself makes, not a setting we turned up. And in case five the run reports that it did not account for every row on the paper, which is the only thing that stops it from calling the statement balanced — a statement with unseen rows is not a balanced statement, whatever the arithmetic says.
Nothing on this page was edited after the run. If you want to check that claim, the PDFs and the engine markdown are both one click away, and scripts/convert_bank_cases.mjs is the only thing that writes the numbers above.
Run your own
Drop a statement on the converter and you get the same figures for your own file: the lines read, the re-added closing balance, the variance, and the rows that do not follow. Three files are free, sixty pages in total, no card. Bank statements to Excel · to QuickBooks (.QBO)



