Bank Statement Parser è una libreria Python open source che analizza estratti conto bancari in sette formati (CAMT.053, PAIN.001, CSV, OFX, QFX, MT940 e PDF) trasformandoli in DataFrames pandas strutturati. L'elaborazione avviene interamente in locale — output deterministico, oscuramento automatico dei dati personali e una pipeline PDF ibrida opzionale che utilizza LLM locali quando necessario.
Inizia in pochi secondi
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
Una libreria, sette formati
Analizza CAMT.053, PAIN.001, CSV, OFX, QFX, MT940 e PDF in DataFrames pandas strutturati con un'unica API unificata. Non serve installare pacchetti separati per ogni formato.
| Caratteristica | Bank Statement Parser | OSS a formato singolo (mt940, ofxparse) | SaaS (Ocrolus, Parseur) |
|---|---|---|---|
| Formati supportati | 7, API unificata | 1 ciascuno | Molti (tramite OCR) |
| Supporto PDF | Pipeline ibrida (deterministico + LLM + vision) | No | Sì (OCR cloud) |
| Privacy dei dati | 100% locale (LLM eseguiti localmente via Ollama) | 100% locale | Dati inviati all'esterno |
| Costo | Gratuito, Apache 2.0 | Gratuito | $49-$1.000+/mese |
| Verifica saldo | Golden Rule (apertura + accrediti − addebiti = chiusura) | No | Varia |
| Oscuramento PII | Integrato, attivo di default | No | Varia |
| Streaming | Memoria limitata | No | N/A |
| REST API | Microservizio FastAPI integrato | No | Sì |
| Deduplicazione | Hash idempotenti delle transazioni | No | Parziale |
| Esportazione contabile | hledger + beancount | No | No |
Pipeline PDF ibrida
Bank Statement Parser v0.0.5+ include una pipeline ibrida a tre percorsi per gli estratti conto PDF:
- Percorso A (Deterministico): tabelle PDF strutturate analizzate direttamente — gratuito, il più veloce, nessun LLM necessario.
- Percorso B (Text-LLM): PDF digitali con layout complessi estratti tramite LLM locale (LiteLLM/Ollama).
- Percorso C (Vision-LLM): estratti conto scannerizzati o fotocopiati elaborati con modelli vision multimodali.
Ogni estrazione viene verificata con la Golden Rule: opening balance + credits − debits == closing balance.
Progettato per la migrazione ISO 20022
SWIFT ha fissato scadenze precise: tutti gli istituti finanziari devono ricevere CAMT.053 entro novembre 2027 e MT940/MT942/MT950 saranno completamente ritirati entro novembre 2028. Bank Statement Parser gestisce sia i formati legacy MT940 che i moderni formati ISO 20022 (CAMT.053, PAIN.001) in un'unica API, così la pipeline di analisi funziona durante la transizione e oltre.
Prestazioni
- 27.000+ transazioni/secondo per l'analisi CAMT.053
- 52.000+ transazioni/secondo per l'analisi PAIN.001
- < 2 ms tempo per il primo risultato
- Memoria costante da 1K a oltre 50K transazioni tramite streaming
- 718 test con copertura al 100% dei branch su Python da 3.10 a 3.14
Perché Bank Statement Parser?
- Estrazione PDF ibrida:
smart_ingest()gestisce PDF digitali e scannerizzati con routing automatico e verifica del saldo. - Rilevamento automatico formato:
detect_statement_format()identifica i file automaticamente ecreate_parser()restituisce il parser corretto. - Privacy al primo posto: l'oscuramento PII è attivo di default. I LLM vengono eseguiti localmente via Ollama — nessun dato lascia la macchina.
- REST API: deploy come microservizio FastAPI con endpoint
/ingeste/health. - Arricchimento: categorizzazione delle transazioni tramite LLM con schemi personalizzabili (default: Plaid 13 categorie).
- Esportazione contabile: esporta in formato hledger e beancount per flussi di lavoro in plaintext-accounting.
- Scansione in blocco:
scan_and_ingest()elabora intere cartelle con deduplicazione automatica tra file. - Multi-valuta:
verify_balance_multi_currency()esegue la verifica Golden Rule per gruppo di valuta. - Pronto per la produzione: ingestione sicura di ZIP, validazione degli input, prevenzione del path traversal e modalità di revisione interattiva.
- Output flessibile: esporta in CSV, JSON, Excel, Polars, hledger o beancount.
- Elaborazione parallela: analizza più file in contemporanea con
parse_files_parallel().
Costruito per la produzione
Bank Statement Parser è progettato per team di tesoreria, sviluppatori fintech e responsabili della conformità che elaborano dati finanziari sensibili. La libreria viene utilizzata nelle pipeline di migrazione da MT940 a CAMT, nei sistemi di riconciliazione automatizzata, nell'ingestione di estratti conto PDF e nei flussi di lavoro di audit normativo presso gli istituti finanziari.
- 718 test con copertura al 100% dei branch su Python da 3.10 a 3.14
- Dipendenze con hash SHA-256 con CycloneDX SBOM per ogni release
- Output deterministico — input identici producono risultati identici byte per byte, ad ogni esecuzione
- Licenza Apache 2.0 — utilizzabile liberamente in sistemi commerciali e interni
Valuta le alternative? Scopri come si confronta Bank Statement Parser ❯ | Esplora i casi d'uso reali ❯