Bank Statement Parser is een open-source Python-bibliotheek die bankafschriften uit zeven formaten (CAMT.053, PAIN.001, CSV, OFX, QFX, MT940 en PDF) parseert in gestructureerde pandas DataFrames. Alle verwerking vindt lokaal plaats — deterministische uitvoer, automatische PII-redactie en een optionele hybride PDF-pipeline die via lokale LLM's werkt wanneer nodig.
Ga binnen enkele seconden aan de slag
pip install bankstatementparser
from bankstatementparser import create_parser, detect_statement_format
fmt = detect_statement_format("statement.xml")
parser = create_parser("statement.xml", fmt)
df = parser.parse() # pandas DataFrame, ready to use
# Parse PDFs with the hybrid pipeline (v0.0.5+)
from bankstatementparser.hybrid import smart_ingest
result = smart_ingest("statement.pdf")
print(result.source_method) # "deterministic" | "llm" | "vision"
print(result.verification.status) # VERIFIED | DISCREPANCY | FAILED
Eén bibliotheek, zeven formaten
Parseer CAMT.053, PAIN.001, CSV, OFX, QFX, MT940 en PDF in gestructureerde pandas DataFrames met één uniforme API. U hoeft geen aparte pakketten per formaat te installeren.
| Functie | Bank Statement Parser | OSS met één formaat (mt940, ofxparse) | SaaS (Ocrolus, Parseur) |
|---|---|---|---|
| Ondersteunde formaten | 7, uniforme API | 1 per pakket | Veel (via OCR) |
| PDF-ondersteuning | Hybride pipeline (deterministisch + LLM + vision) | Nee | Ja (cloud OCR) |
| Gegevensprivacy | 100% lokaal (LLM's draaien lokaal via Ollama) | 100% lokaal | Gegevens extern verzonden |
| Kosten | Gratis, Apache 2.0 | Gratis | $49–$1.000+/maand |
| Saldoverificatie | Golden Rule (beginsaldo + credit − debet = eindsaldo) | Nee | Varieert |
| PII-redactie | Ingebouwd, standaard ingeschakeld | Nee | Varieert |
| Streaming | Beperkt geheugen | Nee | N.v.t. |
| REST API | Ingebouwde FastAPI-microservice | Nee | Ja |
| Ontdubbeling | Idempotente transactie-hashes | Nee | Sommige |
| Ledger-export | hledger + beancount | Nee | Nee |
Hybride PDF-pipeline
Bank Statement Parser v0.0.5+ bevat een drievoudige hybride pipeline voor PDF-bankafschriften:
- Pad A (Deterministisch): Gestructureerde PDF-tabellen worden rechtstreeks geparseerd — gratis, snelst, geen LLM nodig.
- Pad B (Tekst-LLM): Digitale PDF's met complexe opmaak worden verwerkt via een lokale LLM (LiteLLM/Ollama).
- Pad C (Vision-LLM): Gescande of gefotokopieerde afschriften worden verwerkt met multimodale vision-modellen.
Elke extractie wordt geverifieerd met de Golden Rule: opening balance + credits − debits == closing balance.
Gebouwd voor de ISO 20022-migratie
SWIFT heeft vaste deadlines gesteld: alle financiële instellingen moeten CAMT.053 ontvangen tegen november 2027. MT940/MT942/MT950 wordt volledig uitgefaseerd in november 2028. Bank Statement Parser verwerkt zowel legacy MT940 als moderne ISO 20022-formaten (CAMT.053, PAIN.001) in één API. Uw parsing-pipeline werkt tijdens de transitie en daarna.
Prestaties
- 27.000+ transacties/seconde voor CAMT.053-parsing
- 52.000+ transacties/seconde voor PAIN.001-parsing
- < 2 ms tijd tot eerste resultaat
- Constant geheugen van 1K tot 50K+ transacties via streaming
- 718 tests met 100% branchdekking in Python 3.10 tot 3.14
Waarom Bank Statement Parser?
- Hybride PDF-extractie:
smart_ingest()verwerkt digitale en gescande PDF's met automatische routering en saldoverificatie. - Automatische formaatdetectie:
detect_statement_format()herkent bestanden automatisch encreate_parser()geeft de juiste parser terug. - Privacy eerst: PII-redactie staat standaard aan. LLM's draaien lokaal via Ollama — geen gegevens verlaten uw machine.
- REST API: Implementeer als FastAPI-microservice met
/ingest- en/health-endpoints. - Verrijking: LLM-gestuurde transactiecategorisatie met pluggable schema's (Plaid 13-categorie standaard).
- Ledger-export: Exporteer naar hledger- en beancount-journaalformaten voor plaintext-accounting workflows.
- Bulk scanning:
scan_and_ingest()verwerkt mappenbomen met automatische cross-file ontdubbeling. - Multi-valuta:
verify_balance_multi_currency()voert Golden Rule-verificatie uit per valutagroep. - Productieklaar: Veilige ZIP-verwerking, invoervalidatie, pad-traversal-preventie en interactieve beoordelingsmodus.
- Flexibele uitvoer: Exporteer naar CSV, JSON, Excel, Polars, hledger of beancount.
- Parallelle verwerking: Parseer meerdere bestanden gelijktijdig met
parse_files_parallel().
Gebouwd voor productie
Bank Statement Parser is ontworpen voor treasuryteams, fintech-ontwikkelaars en compliance-functionarissen die gevoelige financiële gegevens verwerken. De bibliotheek wordt gebruikt bij MT940-naar-CAMT-migratiepipelines, geautomatiseerde afstemmingssystemen, PDF-afschriftverwerking en workflows voor regelgevende audits bij financiële instellingen.
- 718 tests met 100% branchdekking in Python 3.10 tot 3.14
- SHA-256 hash-locked afhankelijkheden met CycloneDX SBOM voor elke release
- Deterministische uitvoer — identieke invoer levert bij elke run byte-identieke resultaten op
- Apache 2.0-licentie — vrij te gebruiken in commerciële en interne systemen
Alternatieven evalueren? Zie hoe Bank Statement Parser zich verhoudt ❯ | Ontdek praktijkvoorbeelden ❯