Casos de uso

Aplicações do mundo real

O Bank Statement Parser lida com fluxos de trabalho financeiros reais: ingestão de extratos bancários em PDF, migração MT940 para CAMT, reconciliação automatizada com verificação de saldo, pipelines de conformidade, exportação para contabilidade em texto simples, implantações via REST API, varredura em massa e consolidação multibancária.

Ingestão de Extratos Bancários em PDF

Resultado: Analise extratos bancários digitais e digitalizados em PDF com verificação automática de saldo — sem APIs na nuvem, nenhum dado sai da sua máquina.

O pipeline híbrido de PDF roteia cada PDF pelo caminho de extração ideal e verifica cada resultado.

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

# Review discrepancies interactively
# bankstatementparser --type review --input result.json

Processamento de Extratos em Massa

Resultado: Varra árvores de pastas inteiras (centenas de PDFs, XMLs, CSVs) com deduplicação automática entre arquivos em uma única chamada.

from bankstatementparser.hybrid import scan_and_ingest

batch = scan_and_ingest("statements/2026/", pattern="**/*.pdf")
print(f"Files: {len(batch.results)}, Unique txns: {batch.unique_count}")

Tesouraria: Migração de MT940 para CAMT.053

Resultado: Uma única chamada de API lida com MT940 e CAMT.053 durante a janela de migração SWIFT (novembro de 2025 a novembro de 2028), eliminando a necessidade de pipelines separados.

Equipes de tesouraria no mundo todo estão migrando de MT940 para CAMT.053 antes do prazo SWIFT de novembro de 2027. O Bank Statement Parser lida com ambos os formatos com uma única API, tornando a transição simples.

from bankstatementparser import create_parser, detect_statement_format

# Process both MT940 and CAMT.053 with the same code
for file in daily_statement_files:
    fmt = detect_statement_format(file)
    parser = create_parser(file, fmt)
    df = parser.parse()
    load_to_treasury_system(df)

Reconciliação Automatizada com Verificação de Saldo

Resultado: DataFrames independentes de formato com verificação Golden Rule e deduplicação capturam erros e duplicatas antes de chegarem ao seu livro-razão.

Analise extratos bancários, verifique saldos e compare com registros internos automaticamente.

from bankstatementparser import CamtParser, Deduplicator
from bankstatementparser.hybrid import verify_balance_multi_currency

parser = CamtParser("bank_statement.xml")
bank_txns = parser.parse()

# Verify balances per currency
verification = verify_balance_multi_currency(bank_txns)
for ccy, result in verification.items():
    assert result.status == "VERIFIED", f"{ccy} balance mismatch!"

# Deduplicate before reconciliation
dedup = Deduplicator()
result = dedup.deduplicate(dedup.from_dataframe(bank_txns))
clean_txns = result.unique_transactions

# Match against internal records
unmatched = reconcile(clean_txns, internal_ledger)

Contabilidade em Texto Simples (hledger / beancount)

Resultado: Ingira automaticamente extratos bancários em PDF e exporte transações categorizadas no formato journal hledger ou beancount.

from bankstatementparser.hybrid import smart_ingest
from bankstatementparser.enrichment import Categorizer
from bankstatementparser.export import to_hledger

result = smart_ingest("statement.pdf")
categorizer = Categorizer()
enriched = categorizer.categorize_batch(result.transactions)
journal = to_hledger(enriched, account="Assets:Bank:Checking")

Implantação via REST API

Resultado: Implante o Bank Statement Parser como microsserviço que aceita arquivos de extrato via HTTP e retorna JSON estruturado.

# Start the API server
bankstatementparser-api --port 8000
# Ingest a statement
curl -X POST http://localhost:8000/ingest \
  -F "file=@statement.pdf"

Pipelines de Conformidade e Auditoria

Resultado: Saída determinística, redação automática de PII e verificação Golden Rule geram logs prontos para auditoria que atendem aos requisitos regulatórios de reprodutibilidade.

from bankstatementparser import CamtParser

parser = CamtParser("statement.xml")

# Stream with PII redacted for audit logs
for txn in parser.parse_streaming(redact_pii=True):
    audit_log.write(txn)

# Export full data for secure internal processing
parser.export_csv("archive/statement.csv")

Fluxos de Trabalho SFTP-para-DataFrame

Resultado: Analise diretamente de bytes sem E/S de disco, encaixando-se nativamente em fluxos de trabalho de conectividade bancária via SFTP e API.

from bankstatementparser import CamtParser

xml_bytes = sftp_client.read("daily_statement.xml")
parser = CamtParser.from_bytes(xml_bytes, source_name="daily.xml")
df = parser.parse()

Consolidação Multibancária

Resultado: Análise paralela de HSBC (CAMT), Barclays (MT940), Revolut (CSV), Wise (OFX) e Chase (PDF) gera um único conjunto de dados normalizado.

from bankstatementparser import parse_files_parallel

results = parse_files_parallel([
    "hsbc/camt053.xml",
    "barclays/mt940.sta",
    "revolut/transactions.csv",
    "wise/statement.ofx",
])

all_transactions = pd.concat([r.transactions for r in results if r.status == "success"])

Processamento em Lote com Arquivos ZIP

Resultado: Proteção integrada contra ZIP bomb (limite de 100:1, limite de 10 MB por entrada, rejeição de entradas criptografadas) permite processar arquivos de extratos mensais com segurança.

from bankstatementparser import iter_secure_xml_entries, CamtParser

for entry in iter_secure_xml_entries("monthly_statements.zip"):
    parser = CamtParser.from_bytes(entry.xml_bytes, source_name=entry.source_name)
    df = parser.parse()
    save_to_warehouse(entry.source_name, df)

Compare com alternativas ❯ | Planeje sua migração ISO 20022 ❯ | Comece agora ❯