How do I extract transactions from a PDF bank statement?
By the Karchu Editorial Team · Last updated
Short answer
To extract transactions from a PDF bank statement, first check whether the PDF contains real text or only images of text. A text based PDF can be extracted directly, which is exact; a scanned one needs OCR. Then identify the transaction table, map the date, description, debit, credit and balance columns, join descriptions that wrap across lines, and apply the statement's own date and number formats. Finally verify the result: opening balance plus credits minus debits must equal the closing balance. If it does not, the extraction is incomplete and should not be used.
How it works
A PDF does not contain a table. It contains characters or pixels placed at coordinates, and the table is something the human eye assembles from the spacing. Extraction is the work of reconstructing that structure.
Two kinds of file hide behind the same extension. A statement exported by a bank normally carries a text layer, where every character is stored exactly. A statement produced by a scanner or photographed on a phone carries only images. The first can be read precisely and cheaply. The second requires OCR, which is slower and introduces character level errors.
After the characters are recovered, the parsing problems begin: finding where the transaction table starts and stops, mapping the columns, joining descriptions that wrap over three lines, deciding whether a trailing minus means a debit, and reading dates according to the country that issued the statement.
The final step is the one that separates a usable extraction from a plausible one. Statements carry their own checksum in the form of the balance chain. Running that check tells you whether anything was missed.
Examples
A UK statement uses day first dates and separate debit and credit columns. An Indian statement uses lakh grouping in the amounts. A European statement uses a comma as the decimal separator. All three break a parser that assumes one convention, and all three are read correctly by one that reads the convention off the document.
A transaction description reads over three lines: the merchant, then a reference number, then a city. Treated as three rows, the extraction produces two rows with no amount and one that is wrong.
A statement footer repeats a summary of totals. Imported as transactions, those summary lines silently double part of the month.
Benefits
Extracted transactions can be sorted, categorised, totalled, compared across months and exported into accounting software. None of that is possible while the data lives inside a PDF.
Doing it properly also removes the largest source of error in manual bookkeeping, which is retyping figures, and the balance check gives you evidence that nothing was dropped.
Common mistakes
Skipping the balance check. Without it, a missing page looks exactly like a quiet month.
Processing only the first page, or the first few, on a long statement.
Assuming one date format across statements from different countries or different banks.
Importing summary and carried forward lines as if they were transactions.
Combining overlapping statements without deduplication, which doubles every transaction in the overlap.
Frequently asked questions
Why does copying and pasting from the PDF produce a mess?
Copying returns text in reading order without the column structure, so amounts, dates and descriptions interleave. The layout is implied by the position of the characters on the page, and that position is exactly what the clipboard discards.
How do I know whether my PDF is scanned?
Try to select a word in a PDF viewer. If a text selection appears, there is a real text layer. If the cursor draws a rectangle over an image instead, the page is a picture and OCR is required.
Is OCR accurate enough for financial figures?
Modern OCR is good but not perfect, and the characters it confuses most, 8 and 3, 1 and 7, 5 and 6, all matter in amounts. That is why the balance check exists: it turns a silent digit error into a visible mismatch. Never accept OCR output for money without arithmetic verification.
What about password protected statements?
You need the password. With it, the file can be unlocked and processed normally. A tool worth using unlocks it locally in your browser rather than asking you to send the password anywhere.
Can I just use a generic PDF to Excel converter?
It will often produce something, and the something is usually misaligned: split descriptions, amounts in the wrong column, headers repeated mid table, and no way to tell what went wrong. A statement specific extractor knows what a transaction table looks like and can check its own work against the balances.
How Karchu helps
Karchu checks each PDF for a text layer and uses it when present, falling back to image cleanup and OCR only when there is none. It processes every page, up to 300, joins wrapped descriptions and rows split across page breaks, and reads dates and number formats from the document rather than assuming.
The balance chain is verified automatically and any mismatch is reported with the expected figure, the extracted figure and the difference. Rows the reader is unsure about are marked for review beside the original page rather than saved as fact, and the result exports to CSV, Excel and QBO.
No bank credentials. Statement files only.
Sources
Related reading
Guides
- Docs: document scanning
Validation, classification, text extraction and OCR fallback explained.
- Docs: PDF analysis
Text layer extraction, table detection, date and number formats.
- What is OCR?
How scanned statements become machine readable text.
Features
- PDF bank statement converter
Turn PDF statements into clean CSV or Excel.
- Document analyzer
Statements, receipts and invoices through one pipeline.
- CSV and spreadsheet converter
Any delimiter, any encoding, header noise and multi sheet workbooks.
Comparisons
- Karchu vs DocuClipper
Two statement converters, different priorities.
- Karchu vs MoneyThumb
Desktop conversion tooling against a browser analyzer.
- Karchu vs Plaid
Statement files against bank credential sharing.