Banka Hesap Özeti Ayrıştırıcı

Banka Ekstresi Ayrıştırıcıyla Güvenli Uygulamalar Oluşturmaya Başlayın

Gereksinimler

Düzenlemek

pip install bankstatementparser

Polars DataFrame desteği için:

pip install bankstatementparser[polars]

Hızlı Başlangıç

Herhangi Bir Formatı Otomatik Algıla ve Ayrıştır

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

Bu ile çalışır.xml(CAMT/PAIN.001),.csv, .ofx, .qfx, .mt940, Ve.stadosyalar.

CAMT.053'ü ayrıştır

from bankstatementparser import CamtParser

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

PAIN.001'i ayrıştır

from bankstatementparser import Pain001Parser

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

Büyük Dosyaların Akışı

Binlerce işlem içeren dosyalar için belleği sınırlı tutmak amacıyla akışı kullanın:

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

Bellek İçi Ayrıştırma

Disk G/Ç'si olmayan baytlardan ayrıştırma - SFTP veya API iş akışları için kullanışlıdır:

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

Paralel Dosya İşleme

Birden fazla dosyayı aynı anda ayrıştırın:

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

Tekilleştirme

Kesin kopyaları ve şüpheli eşleşmeleri güven puanlarıyla tespit edin:

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

Güvenli ZIP İşleme

Sıkıştırılmış XML dosyalarını yerleşik güvenlik kontrolleriyle işleyin (bomba koruması, şifreli giriş reddi):

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

İhracat

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

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

CLI Kullanımı

# 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

CLI seçenekleri:

Yerel Kalkınma Kurulumu

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

Test paketini çalıştırın:

pytest

API Referansı

Ayrıştırıcı Sınıfları

Sınıf Biçim İçe aktarmak
CamtParser CAMT.053 (ISO 20022) from bankstatementparser import CamtParser
Pain001Parser AĞ.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

Yardımcı İşlevler

İşlev Amaç
detect_statement_format(path) Dosya formatını otomatik algıla
create_parser(path, fmt) Uygun ayrıştırıcıyı oluşturun
parse_files_parallel(paths) Birden fazla dosyayı aynı anda ayrıştırın
iter_secure_xml_entries(zip_path) ZIP girişlerini güvenli bir şekilde yineleyin

Veri Sınıfları

Sınıf Amaç
Deduplicator Yinelenen işlemleri tespit etme
DeduplicationResult Benzersiz, kesin ve şüpheli eşleşmelerle sonuç
InputValidator Dosya yollarını ve formatlarını doğrulayın
Transaction Normalleştirilmiş işlem kaydı
FileResult Paralel ayrıştırmanın sonucu
ZipXMLSource ZIP üyesi sarmalayıcısı

İstisnalar

İstisna Yükseltildiğinde
ParserError Ayrıştırma hataları
ExportError Dışa aktarma hataları (CSV/JSON/Excel)
ValidationError Giriş doğrulama hataları
ZipSecurityError ZIP güvenlik kontrolü hataları