Bank Statement Parser é uma biblioteca Python de código aberto que analisa extratos bancários em sete formatos (CAMT.053, PAIN.001, CSV, OFX, QFX, MT940 e PDF) e os converte em DataFrames pandas estruturados. Todo o processamento é local — saída determinística, redação automática de PII e um pipeline híbrido de PDF opcional que usa LLMs locais quando necessário.
Comece em 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
Uma Biblioteca, Sete Formatos
Analise CAMT.053, PAIN.001, CSV, OFX, QFX, MT940 e PDF em DataFrames pandas estruturados com uma API única e unificada. Não é preciso instalar pacotes separados para cada formato.
| Recurso | Bank Statement Parser | OSS de formato único (mt940, ofxparse) | SaaS (Ocrolus, Parseur) |
|---|---|---|---|
| Formatos suportados | 7, API unificada | 1 cada | Muitos (via OCR) |
| Suporte a PDF | Pipeline híbrido (determinístico + LLM + visão) | Não | Sim (OCR na nuvem) |
| Privacidade de dados | 100% local (LLMs rodam localmente via Ollama) | 100% local | Dados enviados externamente |
| Custo | Gratuito, Apache 2.0 | Gratuito | US$ 49–US$ 1.000+/mês |
| Verificação de saldo | Golden Rule (abertura + créditos − débitos = fechamento) | Não | Varia |
| Redação de PII | Integrada, ativada por padrão | Não | Varia |
| Streaming | Memória limitada | Não | N/D |
| REST API | Microsserviço FastAPI integrado | Não | Sim |
| Deduplicação | Hashes de transação idempotentes | Não | Parcial |
| Exportação contábil | hledger + beancount | Não | Não |
Pipeline Híbrido de PDF
O Bank Statement Parser v0.0.5+ inclui um pipeline híbrido de três caminhos para extratos bancários em PDF:
- Caminho A (Determinístico): Tabelas estruturadas em PDF analisadas diretamente — gratuito, mais rápido, sem LLM.
- Caminho B (Text-LLM): PDFs digitais com layouts complexos extraídos via LLM local (LiteLLM/Ollama).
- Caminho C (Vision-LLM): Extratos digitalizados ou fotocopiados processados com modelos de visão multimodal.
Toda extração é verificada com a Golden Rule: opening balance + credits − debits == closing balance.
Preparado para a Migração ISO 20022
A SWIFT definiu prazos firmes: todas as instituições financeiras devem receber CAMT.053 até novembro de 2027, e o MT940/MT942/MT950 será totalmente desativado até novembro de 2028. O Bank Statement Parser lida com o MT940 legado e os formatos modernos ISO 20022 (CAMT.053, PAIN.001) em uma única API. Seu pipeline de análise funciona durante a transição e depois dela.
Desempenho
- 27.000+ transações/segundo para análise CAMT.053
- 52.000+ transações/segundo para análise PAIN.001
- < 2 ms tempo para o primeiro resultado
- Memória constante de 1 mil a mais de 50 mil transações via streaming
- 718 testes com 100% de cobertura de ramificação em Python 3.10 a 3.14
Por Que Bank Statement Parser?
- Extração Híbrida de PDF:
smart_ingest()processa PDFs digitais e digitalizados com roteamento automático e verificação de saldo. - Detecção Automática de Formato:
detect_statement_format()identifica arquivos automaticamente ecreate_parser()retorna o analisador correto. - Privacidade em Primeiro Lugar: A redação de PII vem ativada por padrão. LLMs rodam localmente via Ollama — nenhum dado sai da sua máquina.
- REST API: Implante como microsserviço FastAPI com endpoints
/ingeste/health. - Enriquecimento: Categorização de transações via LLM com schemas configuráveis (padrão Plaid de 13 categorias).
- Exportação Contábil: Exporte para formatos hledger e beancount para fluxos de trabalho de contabilidade em texto simples.
- Varredura em Massa:
scan_and_ingest()processa árvores de pastas com deduplicação automática entre arquivos. - Multimoeda:
verify_balance_multi_currency()executa a verificação Golden Rule por grupo de moeda. - Pronto para Produção: Ingestão segura de ZIP, validação de entrada, prevenção de travessia de caminho e modo de revisão interativo.
- Saída Flexível: Exporte para CSV, JSON, Excel, Polars, hledger ou beancount.
- Processamento Paralelo: Analise vários arquivos simultaneamente com
parse_files_parallel().
Feito para Produção
O Bank Statement Parser foi projetado para equipes de tesouraria, desenvolvedores de fintech e responsáveis por conformidade que processam dados financeiros sensíveis. A biblioteca é usada em pipelines de migração MT940 para CAMT, sistemas de reconciliação automatizada, ingestão de extratos em PDF e fluxos de trabalho de auditoria regulatória em instituições financeiras.
- 718 testes com 100% de cobertura de ramificação em Python 3.10 a 3.14
- Dependências bloqueadas por hash SHA-256 com CycloneDX SBOM para cada versão
- Saída determinística — entrada idêntica produz resultados idênticos em bytes, a cada execução
- Licenciado Apache 2.0 — uso livre em sistemas comerciais e internos
Avaliando alternativas? Veja como o Bank Statement Parser se compara ❯ | Explore casos de uso reais ❯