Bank Statement Parser es una biblioteca Python de código abierto que analiza extractos bancarios en siete formatos (CAMT.053, PAIN.001, CSV, OFX, QFX, MT940 y PDF) y los convierte en pandas DataFrames estructurados. Todo el procesamiento se ejecuta de forma local: salida determinista, redacción automática de PII y un pipeline híbrido opcional para PDF que recurre a LLMs locales cuando es necesario.
Comience en segundos
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 biblioteca, siete formatos
Analice CAMT.053, PAIN.001, CSV, OFX, QFX, MT940 y PDF en pandas DataFrames estructurados con una única API unificada. No necesita instalar paquetes separados para cada formato.
| Característica | Bank Statement Parser | OSS de formato único (mt940, ofxparse) | SaaS (Ocrolus, Parseur) |
|---|---|---|---|
| Formatos soportados | 7, API unificada | 1 cada uno | Muchos (vía OCR) |
| Soporte PDF | Pipeline híbrido (determinista + LLM + visión) | No | Sí (OCR en la nube) |
| Privacidad de datos | 100% local (LLMs locales vía Ollama) | 100% local | Datos enviados externamente |
| Costo | Gratis, Apache 2.0 | Gratis | $49-$1,000+/mes |
| Verificación de saldo | Regla de Oro (apertura + créditos − débitos = cierre) | No | Varía |
| Redacción de PII | Integrada, activada por defecto | No | Varía |
| Streaming | Memoria acotada | No | N/A |
| REST API | Microservicio FastAPI integrado | No | Sí |
| Deduplicación | Hashes de transacción idempotentes | No | Parcial |
| Exportación contable | hledger + beancount | No | No |
Pipeline híbrido para PDF
Bank Statement Parser v0.0.5+ incluye un pipeline híbrido de tres rutas para extractos bancarios en PDF:
- Ruta A (Determinista): Tablas PDF estructuradas analizadas directamente — gratis, la más rápida, sin necesidad de LLM.
- Ruta B (Texto-LLM): PDFs digitales con diseños complejos extraídos mediante LLM local (LiteLLM/Ollama).
- Ruta C (Visión-LLM): Extractos escaneados o fotocopiados procesados con modelos de visión multimodal.
Cada extracción se verifica con la Regla de Oro: opening balance + credits − debits == closing balance.
Creado para la migración ISO 20022
SWIFT ha establecido plazos firmes: todas las instituciones financieras deben recibir CAMT.053 antes de noviembre de 2027, y MT940/MT942/MT950 se retirarán por completo en noviembre de 2028. Bank Statement Parser maneja tanto el formato heredado MT940 como los formatos modernos ISO 20022 (CAMT.053, PAIN.001) en una única API, para que su pipeline de análisis funcione durante la transición y después.
Rendimiento
- Más de 27.000 transacciones/segundo para el análisis de CAMT.053
- Más de 52.000 transacciones/segundo para el análisis de PAIN.001
- < 2 ms tiempo hasta el primer resultado
- Memoria constante de 1K a 50K+ transacciones vía streaming
- 718 pruebas con cobertura de ramas del 100% en Python 3.10 a 3.14
¿Por qué Bank Statement Parser?
- Extracción híbrida de PDF:
smart_ingest()procesa PDFs digitales y escaneados con enrutamiento automático y verificación de saldo. - Detección automática de formato:
detect_statement_format()identifica archivos de forma automática ycreate_parser()devuelve el analizador correcto. - Privacidad primero: La redacción de PII está activada por defecto. Los LLMs se ejecutan localmente vía Ollama — ningún dato sale de su máquina.
- REST API: Despliegue como microservicio FastAPI con endpoints
/ingesty/health. - Enriquecimiento: Categorización de transacciones con LLM y esquemas configurables (13 categorías Plaid por defecto).
- Exportación contable: Exporte a formatos de diario hledger y beancount para flujos de contabilidad en texto plano.
- Escaneo masivo:
scan_and_ingest()procesa árboles de carpetas con deduplicación automática entre archivos. - Multidivisa:
verify_balance_multi_currency()ejecuta la verificación de la Regla de Oro por grupo de divisa. - Listo para producción: Ingesta segura de ZIP, validación de entradas, prevención de cruce de rutas y modo de revisión interactivo.
- Salida flexible: Exporte a CSV, JSON, Excel, Polars, hledger o beancount.
- Procesamiento paralelo: Analice varios archivos de forma concurrente con
parse_files_parallel().
Construido para producción
Bank Statement Parser está diseñado para equipos de tesorería, desarrolladores fintech y responsables de cumplimiento que procesan datos financieros sensibles. La biblioteca se utiliza en pipelines de migración de MT940 a CAMT, sistemas de conciliación automatizados, ingesta de extractos PDF y flujos de auditoría regulatoria en instituciones financieras.
- 718 pruebas con cobertura de ramas del 100% en Python 3.10 a 3.14
- Dependencias con bloqueo hash SHA-256 con CycloneDX SBOM en cada versión
- Salida determinista — una entrada idéntica produce resultados byte a byte idénticos en cada ejecución
- Licencia Apache 2.0 — uso libre en sistemas comerciales e internos
¿Evaluando alternativas? Vea cómo se compara Bank Statement Parser ❯ | Explore casos de uso del mundo real ❯