Bankafschrift-parser is een open source Python-bibliotheek die bankafschriften uit zes formaten parseert naar gestructureerde pandas DataFrames. Alle verwerking vindt lokaal plaats -- geen netwerkverkeer, deterministische uitvoer en automatische PII-maskering.
Voor wie is dit bedoeld?
- Treasury-teams die migreren van MT940 naar CAMT.053 en een parser nodig hebben die zowel oude als nieuwe formaten ondersteunt tijdens de overgang.
- Fintech-ontwikkelaars die reconciliatie-, rapportage- of boekhoudpipelines bouwen en één afhankelijkheid willen in plaats van mt940 + ofxparse + aangepaste CSV-logica aan elkaar te koppelen.
- Compliance-teams die standaard PII-maskering nodig hebben en auditklare, deterministische uitvoer die nooit gegevens naar externe services stuurt.
- Iedereen die weigert gevoelige financiële gegevens naar een SaaS-dienst van derden te sturen wanneer een lokale, open source tool het werk kan doen.
Ondersteunde formaten
| Formaat | Standaard | Bestandstypen | Parserklasse |
|---|---|---|---|
| CAMT.053 | ISO 20022 Bank-naar-klant-afschrift | .xml |
CamtParser |
| PAIN.001 | ISO 20022 Overboekingsopdracht | .xml |
Pain001Parser |
| CSV | Generieke bankexporten | .csv |
CsvStatementParser |
| OFX | Open Financial Exchange | .ofx |
OfxParser |
| QFX | Quicken Financial Exchange | .qfx |
QfxParser |
| MT940 | SWIFT-standaard | .mt940, .sta |
Mt940Parser |
Alle formaten produceren genormaliseerde pandas DataFrames met consistente kolomnamen, waardoor downstreamverwerking formaatongevoelig is.
Belangrijkste mogelijkheden
- Automatische formaatdetectie:
detect_statement_format()herkent het formaat;create_parser()maakt de juiste parser aan. - Streaming-parsing: Verwerk grote bestanden (50 MB+, 50K+ transacties) met beperkt geheugen met
parse_streaming(). - Parallelle verwerking: Parseer meerdere bestanden gelijktijdig met
parse_files_parallel()via ProcessPoolExecutor. - Deduplicatie: Detecteer exacte duplicaten en vermoedelijke overeenkomsten met verklaarbare betrouwbaarheidsscores.
- In-memory parsing:
from_string()enfrom_bytes()voor SFTP- en API-workflows zonder schijf-I/O. - Veilige ZIP-verwerking:
iter_secure_xml_entries()met compressieratiolimieten, bestandsgroottelimieten en afwijzing van versleutelde bestanden. - Export: CSV, JSON, Excel (
.xlsx) en optionele Polars DataFrames.
Beveiliging en privacy
- PII-maskering: Namen, IBAN's en adressen worden standaard gemaskeerd in CLI-uitvoer. Schakel in met
--show-pii. - XXE-bescherming: XML-parsing gebruikt
resolve_entities=False,no_network=True,load_dtd=False. - ZIP-bombeveiliging: Compressieratiolimieten (standaard 100:1), bestandsgroottelimieten (10 MB), afwijzing van versleutelde bestanden.
- Padtraversatiebescherming: Blokkeerlijst voor gevaarlijke patronen en symlinkreslutie.
- Toeleveringsketenbeveiliging: SHA-256 hash-vergrendelde afhankelijkheden, CycloneDX SBOM, buildherkomstattestatie.
Prestaties
| Meting | Waarde |
|---|---|
| CAMT.053-doorvoer | 27.000+ tx/s |
| PAIN.001-doorvoer | 52.000+ tx/s |
| Latentie per transactie (CAMT) | 37 microseconden |
| Latentie per transactie (PAIN.001) | 19 microseconden |
| Tijd tot eerste resultaat | < 2 ms |
| Geheugenschaling (1K-50K tx) | Constant (streaming) |
| Testdekking | 100% branchdekking |
| Tests | 467 over 29 testbestanden |
Begin met bouwen
Aan de slag met installatie en voorbeelden ❯
"GitHub Repository"