Primeiros passos

Comece a construir aplicacoes seguras com o Analisador de extratos bancarios

Requisitos

Instalacao

pip install bankstatementparser

Para suporte a DataFrame Polars:

pip install bankstatementparser[polars]

Inicio rapido

Deteccao automatica e analise de qualquer formato

from bankstatementparser import create_parser, detect_statement_format

fmt = detect_statement_format("transactions.ofx")
parser = create_parser("transactions.ofx", fmt)
df = parser.parse()  # pandas DataFrame
print(df.head())

Funciona com arquivos .xml (CAMT/PAIN.001), .csv, .ofx, .qfx, .mt940 e .sta.

Analise CAMT.053

from bankstatementparser import CamtParser

parser = CamtParser("statement.xml")
transactions = parser.parse()

Analise PAIN.001

from bankstatementparser import Pain001Parser

parser = Pain001Parser("payment.xml")
payments = parser.parse()

Streaming para arquivos grandes

Para arquivos com milhares de transacoes, use streaming para manter a memoria limitada:

parser = CamtParser("large_statement.xml")
for transaction in parser.parse_streaming(redact_pii=True):
    process(transaction)  # A memoria permanece constante

Analise em memoria

Analise a partir de bytes sem operacoes de I/O em disco -- util para fluxos SFTP ou API:

xml_bytes = download_from_sftp()
parser = CamtParser.from_bytes(xml_bytes, source_name="daily.xml")
transactions = parser.parse()

Processamento paralelo de arquivos

Analise multiplos arquivos simultaneamente:

from bankstatementparser import parse_files_parallel

results = parse_files_parallel([
    "statements/jan.xml",
    "statements/feb.xml",
    "statements/mar.xml",
])
for r in results:
    print(r.path, r.status, len(r.transactions), "rows")

Deduplicacao

Detecte duplicatas exatas e correspondencias suspeitas com scores de confianca:

from bankstatementparser import CamtParser, Deduplicator

parser = CamtParser("statement.xml")
dedup = Deduplicator()
result = dedup.deduplicate(dedup.from_dataframe(parser.parse()))

print(f"Unicas: {len(result.unique_transactions)}")
print(f"Duplicatas exatas: {len(result.exact_duplicates)}")
print(f"Correspondencias suspeitas: {len(result.suspected_matches)}")

Processamento seguro de ZIP

Processe arquivos XML compactados com verificacoes de seguranca integradas (protecao contra bombas, rejeicao de entradas criptografadas):

from bankstatementparser import iter_secure_xml_entries, CamtParser

for entry in iter_secure_xml_entries("statements.zip"):
    parser = CamtParser.from_bytes(entry.xml_bytes, source_name=entry.source_name)
    print(f"{entry.source_name}: {len(parser.parse())} transacoes")

Exportacao

parser = CamtParser("statement.xml")
parser.export_csv("output.csv")
parser.export_json("output.json")

# Polars (requer bankstatementparser[polars])
polars_df = parser.to_polars()

Uso CLI

# Analisar e exibir
python -m bankstatementparser.cli --type camt --input statement.xml

# Exportar para CSV
python -m bankstatementparser.cli --type camt --input statement.xml --output transactions.csv

# Streaming com PII visiveis
python -m bankstatementparser.cli --type camt --input statement.xml --streaming --show-pii

Opcoes CLI:

Configuracao de desenvolvimento local

git clone https://github.com/sebastienrousseau/bankstatementparser.git
cd bankstatementparser
python3 -m venv .venv && source .venv/bin/activate
pip install poetry && poetry install --with dev

Execute a suite de testes:

pytest

Referencia da API

Classes parser

Classe Formato Import
CamtParser CAMT.053 (ISO 20022) from bankstatementparser import CamtParser
Pain001Parser PAIN.001 (ISO 20022) from bankstatementparser import Pain001Parser
CsvStatementParser CSV from bankstatementparser import CsvStatementParser
OfxParser OFX from bankstatementparser import OfxParser
QfxParser QFX from bankstatementparser import QfxParser
Mt940Parser MT940 from bankstatementparser import Mt940Parser

Funcoes utilitarias

Funcao Proposito
detect_statement_format(path) Deteccao automatica do formato do arquivo
create_parser(path, fmt) Criar o parser apropriado
parse_files_parallel(paths) Analisar multiplos arquivos simultaneamente
iter_secure_xml_entries(zip_path) Iterar entradas ZIP com seguranca

Classes de dados

Classe Proposito
Deduplicator Detectar transacoes duplicadas
DeduplicationResult Resultado com unicas, exatas e correspondencias suspeitas
InputValidator Validar caminhos e formatos de arquivo
Transaction Registro de transacao normalizado
FileResult Resultado da analise paralela
ZipXMLSource Wrapper de membro ZIP

Excecoes

Excecao Quando e lancada
ParserError Falhas de analise
ExportError Falhas de exportacao (CSV/JSON/Excel)
ValidationError Falhas de validacao de entrada
ZipSecurityError Falhas de verificacao de seguranca ZIP