Bank Statement Parser est une bibliothèque Python open source qui analyse les relevés bancaires dans sept formats (CAMT.053, PAIN.001, CSV, OFX, QFX, MT940 et PDF) et les convertit en DataFrames pandas structurés. Tout le traitement se fait localement — sortie déterministe, masquage automatique des données personnelles et un pipeline PDF hybride optionnel qui passe par des LLM locaux si nécessaire.
Démarrez en quelques secondes
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
Une bibliothèque, sept formats
Analysez CAMT.053, PAIN.001, CSV, OFX, QFX, MT940 et PDF en DataFrames pandas structurés avec une seule API unifiée. Pas besoin d'installer un package séparé pour chaque format.
| Fonctionnalité | Bank Statement Parser | OSS monoformat (mt940, ofxparse) | SaaS (Ocrolus, Parseur) |
|---|---|---|---|
| Formats pris en charge | 7, API unifiée | 1 chacun | Nombreux (via OCR) |
| Support PDF | Pipeline hybride (déterministe + LLM + vision) | Non | Oui (OCR cloud) |
| Confidentialité des données | 100 % local (LLM via Ollama) | 100 % local | Données envoyées à l'extérieur |
| Coût | Gratuit, Apache 2.0 | Gratuit | 49 $ à 1 000 $+/mois |
| Vérification du solde | Règle d'or (ouverture + crédits − débits = clôture) | Non | Variable |
| Masquage des données personnelles | Intégré, activé par défaut | Non | Variable |
| Streaming | Mémoire bornée | Non | N/A |
| API REST | Microservice FastAPI intégré | Non | Oui |
| Déduplication | Hash idempotent des transactions | Non | Partiel |
| Export comptable | hledger + beancount | Non | Non |
Pipeline PDF hybride
Bank Statement Parser v0.0.5+ inclut un pipeline hybride à trois voies pour les relevés bancaires PDF :
- Voie A (Déterministe) : tableaux PDF structurés analysés directement — gratuit, le plus rapide, aucun LLM requis.
- Voie B (Text-LLM) : PDF numériques avec mises en page complexes extraits via un LLM local (LiteLLM/Ollama).
- Voie C (Vision-LLM) : relevés scannés ou photocopiés traités avec des modèles de vision multimodaux.
Chaque extraction est vérifiée avec la Règle d'or : opening balance + credits − debits == closing balance.
Conçu pour la migration ISO 20022
SWIFT a fixé des échéances fermes : toutes les institutions financières doivent recevoir CAMT.053 d'ici novembre 2027, et les MT940/MT942/MT950 seront entièrement retirés d'ici novembre 2028. Bank Statement Parser gère à la fois les formats anciens MT940 et les formats modernes ISO 20022 (CAMT.053, PAIN.001) dans une seule API. Votre pipeline d'analyse fonctionne pendant la transition et au-delà.
Performance
- 27 000+ transactions/seconde pour l'analyse CAMT.053
- 52 000+ transactions/seconde pour l'analyse PAIN.001
- < 2 ms temps jusqu'au premier résultat
- Mémoire constante de 1 000 à 50 000+ transactions via streaming
- 718 tests avec une couverture de branches à 100 % sur Python 3.10 à 3.14
Pourquoi Bank Statement Parser ?
- Extraction PDF hybride :
smart_ingest()gère les PDF numériques et scannés avec routage automatique et vérification du solde. - Détection automatique du format :
detect_statement_format()identifie les fichiers automatiquement etcreate_parser()renvoie le bon analyseur. - Confidentialité d'abord : le masquage des données personnelles est activé par défaut. Les LLM tournent en local via Ollama — aucune donnée ne quitte votre machine.
- API REST : déployez comme microservice FastAPI avec les endpoints
/ingestet/health. - Enrichissement : catégorisation des transactions par LLM avec schémas modulables (Plaid 13 catégories par défaut).
- Export comptable : exportez au format hledger et beancount pour les flux de comptabilité en texte brut.
- Scan en masse :
scan_and_ingest()traite des arborescences de dossiers avec déduplication inter-fichiers automatique. - Multi-devises :
verify_balance_multi_currency()exécute la vérification de la Règle d'or par groupe de devises. - Prêt pour la production : ingestion ZIP sécurisée, validation des entrées, protection contre la traversée de chemin et mode de revue interactif.
- Sortie flexible : exportez en CSV, JSON, Excel, Polars, hledger ou beancount.
- Traitement parallèle : analysez plusieurs fichiers simultanément avec
parse_files_parallel().
Conçu pour la production
Bank Statement Parser est conçu pour les équipes de trésorerie, les développeurs fintech et les responsables de la conformité qui traitent des données financières sensibles. La bibliothèque est utilisée dans les pipelines de migration MT940 vers CAMT, les systèmes de rapprochement automatisés, l'ingestion de relevés PDF et les flux d'audit réglementaire au sein des institutions financières.
- 718 tests avec une couverture de branches à 100 % sur Python 3.10 à 3.14
- Dépendances verrouillées par hash SHA-256 avec CycloneDX SBOM pour chaque version
- Sortie déterministe — une entrée identique produit des résultats identiques octet par octet, à chaque exécution
- Licence Apache 2.0 — utilisation libre dans les systèmes commerciaux et internes
Vous évaluez les alternatives ? Découvrez comment Bank Statement Parser se compare ❯ | Explorez des cas d'utilisation concrets ❯