Bank Statement Parser

Simulan ang Pagbuo ng Mga Secure na Application gamit ang Bank Statement Parser

Mga Kinakailangan

I-install

pip install bankstatementparser

Para sa suporta ng Polars DataFrame:

pip install bankstatementparser[polars]

Mabilis na Pagsisimula

Auto-Detect at I-parse ang Anumang 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())

Gumagana ito sa.xml(CAMT/PAIN.001),.csv, .ofx, .qfx, .mt940, at.stamga file.

I-parse ang CAMT.053

from bankstatementparser import CamtParser

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

Parse PAIN.001

from bankstatementparser import Pain001Parser

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

Pag-stream ng Malaking File

Para sa mga file na may libu-libong transaksyon, gumamit ng streaming upang panatilihing limitado ang memorya:

parser = CamtParser("large_statement.xml")
for transaction in parser.parse_streaming(redact_pii=True):
    process(transaction)  # Memory stays constant

In-Memory Parsing

I-parse mula sa mga byte na walang disk I/O -- kapaki-pakinabang para sa mga workflow ng SFTP o API:

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

Parallel File Processing

Mag-parse ng maraming file nang sabay-sabay:

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

Deduplication

Tuklasin ang mga eksaktong duplicate at pinaghihinalaang tugma na may mga marka ng kumpiyansa:

from bankstatementparser import CamtParser, Deduplicator

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

print(f"Unique: {len(result.unique_transactions)}")
print(f"Exact duplicates: {len(result.exact_duplicates)}")
print(f"Suspected matches: {len(result.suspected_matches)}")

Secure na Pagproseso ng ZIP

Iproseso ang mga naka-zip na XML file na may built-in na mga pagsusuri sa seguridad (proteksyon sa bomba, naka-encrypt na pagtanggi sa pagpasok):

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())} transactions")

I-export

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

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

Paggamit ng CLI

# Parse and display
python -m bankstatementparser.cli --type camt --input statement.xml

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

# Stream with PII visible
python -m bankstatementparser.cli --type camt --input statement.xml --streaming --show-pii

Mga opsyon sa CLI:

Local Development Setup

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

Patakbuhin ang test suite:

pytest

Sanggunian ng API

Mga Klase ng Parser

Klase Format Mag-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

Mga Pag-andar ng Utility

Function Layunin
detect_statement_format(path) Auto-detect ang format ng file
create_parser(path, fmt) Lumikha ng naaangkop na parser
parse_files_parallel(paths) Mag-parse ng maraming file nang sabay-sabay
iter_secure_xml_entries(zip_path) Ulitin ang mga entry sa ZIP nang secure

Mga Klase ng Data

Klase Layunin
Deduplicator I-detect ang mga duplicate na transaksyon
DeduplicationResult Resulta na may natatangi, eksakto, at pinaghihinalaang mga tugma
InputValidator I-validate ang mga path at format ng file
Transaction Normalized na rekord ng transaksyon
FileResult Resulta mula sa parallel parsing
ZipXMLSource ZIP member wrapper

Mga pagbubukod

Exception Kapag Itinaas
ParserError Mga pagkabigo sa pag-parse
ExportError Mga pagkabigo sa pag-export (CSV/JSON/Excel)
ValidationError Mga pagkabigo sa pagpapatunay ng input
ZipSecurityError Mga pagkabigo sa pagsusuri sa seguridad ng ZIP