Primii pași

Începeți să construiți aplicații securizate cu Analizorul de extrase bancare

Cerințe

Instalare

pip install bankstatementparser

Pentru suport DataFrame Polars:

pip install bankstatementparser[polars]

Pornire rapidă

Detectare automată și analiză a oricărui format

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())

Funcționează cu fișiere .xml (CAMT/PAIN.001), .csv, .ofx, .qfx, .mt940 și .sta.

Analiză CAMT.053

from bankstatementparser import CamtParser

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

Analiză PAIN.001

from bankstatementparser import Pain001Parser

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

Streaming pentru fișiere mari

Pentru fișiere cu mii de tranzacții, utilizați streaming pentru a menține memoria limitată:

parser = CamtParser("large_statement.xml")
for transaction in parser.parse_streaming(redact_pii=True):
    process(transaction)  # Memoria rămâne constantă

Analiză în memorie

Analizați din octeți fără operațiuni I/O pe disc -- util pentru fluxuri SFTP sau API:

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

Procesare paralelă a fișierelor

Analizați mai multe fișiere simultan:

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")

Deduplicare

Detectați duplicate exacte și potriviri suspecte cu scoruri de încredere:

from bankstatementparser import CamtParser, Deduplicator

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

print(f"Unice: {len(result.unique_transactions)}")
print(f"Duplicate exacte: {len(result.exact_duplicates)}")
print(f"Potriviri suspecte: {len(result.suspected_matches)}")

Procesare securizată ZIP

Procesați fișiere XML arhivate cu verificări de securitate integrate (protecție împotriva bombelor, respingerea intrărilor criptate):

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())} tranzacții")

Export

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

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

Utilizare CLI

# Analizare și afișare
python -m bankstatementparser.cli --type camt --input statement.xml

# Export în CSV
python -m bankstatementparser.cli --type camt --input statement.xml --output transactions.csv

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

Opțiuni CLI:

Configurare dezvoltare 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

Rulați suita de teste:

pytest

Referință API

Clase parser

Clasă Format 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

Funcții utilitare

Funcție Scop
detect_statement_format(path) Detectare automată a formatului fișierului
create_parser(path, fmt) Crearea parserului potrivit
parse_files_parallel(paths) Analiză simultană a mai multor fișiere
iter_secure_xml_entries(zip_path) Iterare securizată a intrărilor ZIP

Clase de date

Clasă Scop
Deduplicator Detectarea tranzacțiilor duplicate
DeduplicationResult Rezultat cu tranzacții unice, exacte și potriviri suspecte
InputValidator Validarea căilor și formatelor de fișiere
Transaction Înregistrare tranzacție normalizată
FileResult Rezultat din analiza paralelă
ZipXMLSource Wrapper membru ZIP

Excepții

Excepție Când este aruncată
ParserError Erori de analiză
ExportError Erori de export (CSV/JSON/Excel)
ValidationError Erori de validare a datelor de intrare
ZipSecurityError Erori de verificare a securității ZIP