TL;DR: Bank Statement Parser ist eine Open-Source-Python-Bibliothek, die sieben Kontoauszugsformate (CAMT.053, PAIN.001, CSV, OFX, QFX, MT940 und PDF) in pandas DataFrames überführt. Hybride PDF-Pipeline mit Saldoprüfung, REST API, Anreicherung, Ledger-Export, 27.000+ TX/s Durchsatz.
Bank Statement Parser ist eine Open-Source-Python-Bibliothek, die Kontoauszüge aus sieben Formaten in strukturierte pandas DataFrames überführt. Der deterministische Kern verarbeitet strukturierte Formate lokal ohne Netzwerkaufrufe. Die optionale hybride PDF-Pipeline leitet bei digitalen und gescannten Auszügen über lokale LLMs (via Ollama).
Für wen ist das?
- Treasury-Teams, die von MT940 auf CAMT.053 migrieren und einen Parser brauchen, der während der Umstellung beide Formate verarbeitet — plus PDF-Auszüge von Banken ohne strukturierte Exporte.
- Fintech-Entwickler, die Abstimmungs-, Berichts- oder Buchhaltungspipelines erstellen und eine einzige Abhängigkeit mit integrierter Saldoprüfung, Kategorisierung und Ledger-Export wünschen.
- Compliance-Teams, die standardmäßige PII-Schwärzung, deterministische Ausgabe und Golden-Rule-Prüfung benötigen, die Abweichungen erkennt, bevor sie das Hauptbuch erreichen.
- Plaintext-Accounting-Nutzer, die PDF-Kontoauszüge automatisch in hledger- oder beancount-Journale einlesen möchten.
- Alle, die sensible Finanzdaten nicht an ein SaaS senden wollen, wenn ein lokales Open-Source-Tool die Aufgabe erledigen kann.
Unterstützte Formate
| Format | Standard | Dateitypen | Parser/Methode |
|---|---|---|---|
| CAMT.053 | ISO 20022 Bank-to-Customer Statement | .xml |
CamtParser |
| PAIN.001 | ISO 20022 Credit Transfer Initiation | .xml |
Pain001Parser |
| CSV | Generische Bankexporte | .csv |
CsvStatementParser |
| OFX | Open Financial Exchange | .ofx |
OfxParser |
| QFX | Quicken Financial Exchange | .qfx |
QfxParser |
| MT940 | SWIFT-Standard | .mt940, .sta |
Mt940Parser |
| Digitale und gescannte Auszüge | .pdf |
smart_ingest() |
Alle Formate erzeugen normalisierte pandas DataFrames mit konsistenten Spaltennamen. Die nachgelagerte Verarbeitung ist damit formatunabhängig.
Wichtigste Funktionen
- Hybride PDF-Pipeline:
smart_ingest()leitet PDFs über drei Pfade — deterministische Tabellenextraktion, Text-LLM oder Vision-LLM — mit automatischer Golden-Rule-Saldoprüfung. - Automatische Formaterkennung:
detect_statement_format()identifiziert das Format;create_parser()instanziiert den passenden Parser. - Saldoprüfung: Golden-Rule-Prüfung (
opening + credits − debits == closing) mit Status VERIFIED/DISCREPANCY/FAILED. - Multi-Währungs-Prüfung:
verify_balance_multi_currency()gruppiert Transaktionen nach Währung für unabhängige Verifizierung. - REST API: FastAPI-Microservice mit
/ingest- und/health-Endpunkten für den Produktionseinsatz. - Anreicherung: LLM-gestützte Transaktionskategorisierung mit konfigurierbaren Schemata (Standard: Plaid 13-Kategorien).
- Interaktive Prüfung: Abweichungen durchgehen mit Aktionen wie Akzeptieren/Bearbeiten/Überspringen/Löschen via
--type review. - Ledger-Export:
to_hledger()undto_beancount()für Plaintext-Accounting-Workflows. - Massenverarbeitung:
scan_and_ingest()verarbeitet Ordnerstrukturen mit automatischer dateiübergreifender Deduplizierung. - Kontenzuordnung: Regex-basierte Kontenzuordnungsregeln aus JSON-Konfiguration für den Ledger-Export.
- Streaming-Parsing: Große Dateien (50 MB+, 50.000+ Transaktionen) mit begrenztem Speicher verarbeiten via
parse_streaming(). - Parallelverarbeitung: Mehrere Dateien gleichzeitig parsen mit
parse_files_parallel()über ProcessPoolExecutor. - Deduplizierung: Idempotenter
transaction_hash(MD5-Fingerprint) für sichere inkrementelle Aufnahme. - In-Memory-Parsing:
from_string()undfrom_bytes()für SFTP- und API-Workflows ohne Festplatten-I/O. - Sichere ZIP-Verarbeitung:
iter_secure_xml_entries()mit Komprimierungsverhältnisgrenzen, Eintragsgrößenlimits und Ablehnung verschlüsselter Einträge. - Export: CSV, JSON, Excel (
.xlsx), Polars DataFrames, hledger- und beancount-Journale.
Sicherheit und Datenschutz
- PII-Schwärzung: Namen, IBANs und Adressen werden standardmäßig in der CLI-Ausgabe maskiert. Aktivieren Sie die Anzeige mit
--show-pii. - XXE-Schutz: XML-Parsing verwendet
resolve_entities=False,no_network=True,load_dtd=False. - ZIP-Bomb-Schutz: Komprimierungsverhältnislimit (Standard 100:1), Eintragsgrößenlimit (10 MB), Ablehnung verschlüsselter Einträge.
- Schutz vor Pfad-Traversal: Blockliste gefährlicher Muster und Symlink-Auflösung.
- Lieferkettensicherheit: SHA-256-Hash-gesperrte Abhängigkeiten, CycloneDX SBOM, Build-Herkunftsnachweis.
- Nur lokale LLMs: Die hybride PDF-Pipeline nutzt Ollama für lokale Inferenz — keine Daten werden an Cloud-APIs gesendet.
Leistung
| Kennzahl | Wert |
|---|---|
| CAMT.053-Durchsatz | 27.000+ TX/s |
| PAIN.001-Durchsatz | 52.000+ TX/s |
| Latenz pro Transaktion (CAMT) | 37 Mikrosekunden |
| Latenz pro Transaktion (PAIN.001) | 19 Mikrosekunden |
| Zeit bis zum ersten Ergebnis | < 2 ms |
| Speicherskalierung (1K–50K TX) | Konstant (Streaming) |
| Testabdeckung | 100 % Branch-Coverage |
| Tests | 718 in 29 Testdateien |
Jetzt loslegen
Erste Schritte mit Installation und Beispielen ❯
"GitHub-Repository"