Veri Gizliliği ve Uyumluluk
Altyapımdan herhangi bir veri çıkıyor mu?
Hayır. Banka Ekstresi Ayrıştırıcısı durum bilgisi olmayan bir kitaplık olarak çalışır. Tüm işlemler (ayrıştırma, PII redaksiyonu, arşiv çıkarma) yerel çalışma zamanı belleğinizde gerçekleşir. API çağrısı yok, bulut hizmeti yok, telemetri yok. XML ayrıştırıcıları ile güçlendirilmiştirno_network=Trueayrıştırıcı düzeyinde tüm giden erişimi engelliyor. Finansal verileriniz ortamınızdan asla ayrılmaz.
Kişisel Bilgilerin düzenlenmesi nasıl çalışır?
Hassas alanlar uygulama mantığınıza ulaşmadan önce maskelenir. Ayrıştırıcı borçlu adlarını, alacaklı adlarını, IBAN'ları ve posta adreslerini tanımlar ve bunların yerine şunu koyar:***REDACTED***konsol çıkışı ve akış modunda.
- **CLI çıkışı ve akış modunda Redaksiyon varsayılan olarak açıktır.
- Dosya dışa aktarmaları (CSV, JSON, Excel), aşağı yöndeki işlemler için düzenlenmemiş verileri korur.
- Tam veriyi etkinleştirin
--show-piiCLI'de veyaredact_pii=FalseAPI'de.
Çıkarma işlemi belirleyici midir?
Evet -- her çalıştırmada baytla aynı çıktı. Aynı giriş dosyası verildiğinde ayrıştırıcı her seferinde aynı sonucu üretir. Rastgelelik yok, model çıkarımı yok, buluşsal örnekleme yok. CI, Hipotez yoluyla özellik tabanlı bulanıklaştırma da dahil olmak üzere %100 şube kapsamında 467 testle determinizmi güçlendirir.
Proje hangi uyumluluk standartlarını takip ediyor?
Proje, ISO 13485 uyumlu belgeleri tam izlenebilirlikle sürdürüyor:
- Şiddet/olasılık puanlaması ve kalan risk değerlendirmesiyle birlikte sayısallaştırılmış bir Risk Kaydı.
- 5 aşamada 19 kapılı adımdan oluşan bir Doğrulama ve Doğrulama Planı.
- Etki değerlendirmesi ve geri alma protokollerini içeren bir Değişiklik Kontrol Prosedürü.
- Risk seviyeleri ve EOL takibi ile tüm bağımlılıkları kapsayan bir SOUP Kaydı.
- Tasarım girdilerini uygulama ve doğrulamaya eşleyen bir İzlenebilirlik Matrisi.
Her sürüm bir CycloneDX SBOM, SHA-256 sağlama toplamları ve GitHub derleme kaynağı doğrulamasını içerir.
Performans ve Ölçeklenebilirlik
Banka Ekstresi Ayrıştırıcısı ne kadar hızlı?
Performans eşikleri her taahhütte CI'da doğrulanır:
| Metrik | Değer |
|---|---|
| CAMT.053 verimi | 27.000+ işlem/saniye |
| PAIN.001 verimi | 52.000+ işlem/saniye |
| İşlem başına gecikme (CAMT) | 37 mikrosaniye |
| İşlem başına gecikme (PAIN.001) | 19 mikrosaniye |
| İlk sonuca ulaşma zamanı | < 2 ms |
Büyük dosyalar nasıl işlenir?
Sınırlı bellekle akış - dosya başına 50.000 işlemle test edilmiştir.parse_streaming()XML dosyalarını aşamalı olarak işlemek için. Her işlem bir sözlük olarak sunulur; Bellek büyümesini önlemek için öğeler işlendikten sonra temizlenir. Bellek dosya boyutuna göre ölçeklenmez; 50K işlem testi (25+ MB), 10K işlem testinin 2 katından daha az bellek kullanır.
50 MB'ı aşan dosyalar için (örneğin, 100.000'den fazla ödemeli ana bilgisayardan ana bilgisayara PAIN.001 grupları), ayrıştırıcı, öbek tabanlı ad alanı ayrıştırmayla geçici bir dosya üzerinden akış gerçekleştirir; belgenin tamamı hiçbir zaman belleğe yüklenmez.
ZIP arşivleri nasıl güvenli bir şekilde işlenir?
iter_secure_xml_entries()çıkarmadan önce her üyeyi doğrular:
- Giriş boyutu sınırı (giriş başına varsayılan 10 MB)
- Toplam sıkıştırılmamış boyut sınırı (varsayılan 50 MB)
- ZIP bombalarını önlemek için Sıkıştırma oranı sınırı (varsayılan 100:1)
- Şifreli giriş reddi
Diske hiçbir dosya yazılmaz. XML baytları doğrudan ayrıştırıcıya aktarılır.from_bytes().
Birden fazla dosyayı paralel olarak ayrıştırabilir miyim?
Evet. Kullanparse_files_parallel()işi genel bir alana dağıtanProcessPoolExecutor:
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")
Desteklenen Formatlar
Hangi banka ekstresi formatları destekleniyor?
| Biçim | Standart | Dosya Türleri | Ayrıştırıcı Sınıfı |
|---|---|---|---|
| CAMT.053 | ISO 20022 Bankadan Müşteriye Beyanı | .xml |
CamtParser |
| AĞ.001 | ISO 20022 Kredi Transferi Başlangıcı | .xml |
Pain001Parser |
| CSV | Jenerik banka ihracatı | .csv |
CsvStatementParser |
| OFX | Açık Finansal Borsa | .ofx |
OfxParser |
| QFX | Finansal Değişimi Hızlandırın | .qfx |
QfxParser |
| MT940 | SWIFT standardı | .mt940, .sta |
Mt940Parser |
Ayrıştırıcı CAMT.053'ün bankaya özgü lehçelerini işliyor mu?
Evet -- tasarım gereği ad alanından bağımsız. Ayrıştırıcı, herhangi bir CAMT.053 değişkenini () işleyerek XML ad alanlarını işlemeden önce çıkarır.camt.053.001.02, camt.053.001.04, veya özel banka sarmalayıcıları) ad alanına özgü yapılandırma olmadan. XPath, ad alanı URI'lerini değil, hedef öğe yapısını sorgular.
CAMT'yi özel bir zarfa saran bankalar için şunu kullanın:from_string()veyafrom_bytes()İç belgeyi doğrudan beslemek için.
Özel CSV sütun başlıklarını standart şemayla eşleyebilir miyim?
Evet -- otomatik normalleştirme, sıfır yapılandırma.CsvStatementParseryaygın başlık varyasyonlarını tanır:"Date", "Transaction Date", "Booking Date"tüm haritadatealan."Amount", "Value", "Sum"haritalamakamount. Kredi/borç sütunlarını ayırın (ör."Credit"Ve"Debit") otomatik olarak algılanır ve tek bir imzalı tutarda birleştirilir.
Çıktı formatı nedir?
Tüm ayrıştırıcılar tutarlı sütun türlerine sahip standartlaştırılmış pandalar DataFrames üretir:
| Biçim | Anahtar Sütunlar |
|---|---|
| CAMT | Amount, Currency, DrCr, Debtor, Creditor, Reference, ValDt, BookgDt, AccountId |
| ACI.001 | PmtInfId, PmtMtd, InstdAmt, Currency, CdtrNm, EndToEndId, MsgId, CreDtTm, NbOfTxs |
| CSV/OFX/QFX/MT940 | date, description, amount(normalleştirilmiş) |
Ayrıca CSV, JSON, Excel'e aktarabilir veya Polars DataFrames'e dönüştürebilirsiniz.
Hazine İş Akışları
Ayrıştırıcı çoklu para birimindeki ifadeleri nasıl işler?
Her işlem orijinal para birimini korur; örtülü dönüştürme yapılmaz.Currencyalan XML'den çıkarıldıCcyişlem başına özellik. Çoklu para birimi ekstreleri olduğu gibi kalır.get_account_balances()yöntem, orijinal para birimi kodlarıyla hesap başına açılış ve kapanış bakiyelerini döndürür. Çapraz para birimi mutabakatı, döviz kuru kaynağını kontrol ettiğiniz alt mantığınıza bırakılmıştır.
Ayrıştırıcı hem giden hem de gelen formatları destekliyor mu?
Evet.Pain001ParserISO 20022 PAIN.001 kredi transferi başlatma dosyalarını (giden ödemeler) yönetir.CamtParserCAMT.053 bankadan müşteriye ekstre dosyalarını yönetir (gelen raporlama). Her ikisi de akışı, PII düzenlemeyi ve CSV, JSON ve Excel'e aktarmayı destekler. Kullanmakdetect_statement_format()Formatı otomatik olarak tanımlamak için.
Bir işlem girişi hatalı biçimlendirildiğinde ne olur?
Davranış ayrıştırma moduna bağlıdır:
parse()(toplu mod) -- Gerekli alanların eksik olduğu hatalı biçimlendirilmiş girişler (Amount,Currency, veyaCdtDbtInd) bir uyarı günlüğüyle atlanır. İfadenin geri kalanı normal şekilde ayrıştırılır.parse_streaming()(akış modu) -- Ayrıştırma hataları istisnalar olarak hemen yayılır. Sessiz veri kaybı yok. Bu başarısızlıkla sonuçlanan davranış, her işlemin hesaba katılması gereken finansal iş akışları için tasarlanmıştır.
Tekilleştirme nasıl çalışır?
Deduplicatorsınıf, açıklanabilir güven puanlarına sahip tam kopyaları ve şüpheli eşleşmeleri tespit eder:
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)}")
Kurulum ve Uyumluluk
Banka Ekstresi Ayrıştırıcısını nasıl yüklerim?
pip install bankstatementparser
İsteğe bağlı Polars DataFrame desteği için:
pip install bankstatementparser[polars]
Hangi Python sürümleri destekleniyor?
Python 3.9'dan 3.14'e kadar. Tüm sürümler CI'da %100 şube kapsamında 467 testle test edilmiştir.
Bağımlılıklar nelerdir?
Kütüphanenin 5 doğrudan bağımlılığı vardır:
lxml-- Güvenlik güçlendirmesi ile XML ayrıştırma -pandas-- DataFrames ve veri manipülasyonu -openpyxl-- Excel'e dışa aktarma -pydantic-- Veri doğrulama ve modeller -defusedxml-- XXE koruması
Tüm bağımlılıkların SHA-256 karma kilitli sürümleri vardır. CycloneDX SBOM her çalışma zamanı bileşenini eşler.
MacOS, Linux ve Windows'ta çalışıyor mu?
Evet. Kitaplık macOS, Linux ve Windows'ta (WSL aracılığıyla) çalışır. Platforma özgü bağımlılıkları yoktur.
Tekrarlanabilirlik ve Güvenlik
Tekrarlanabilirliği nasıl doğrulayabilirim?
python -m pytest # 467 tests, 100% branch coverage
python scripts/verify_locked_hashes.py # SHA-256 hash verification
git log --show-signature -1 # Verify commit signature
Hangi güvenlik korumaları yerleşiktir?
- XXE Koruması:
resolve_entities=False,no_network=True,load_dtd=False - ZIP Bomba Koruması: Sıkıştırma oranı sınırları, giriş boyutu sınırları, şifreli giriş reddi
- Yol Geçişini Önleme: Tehlikeli model engelleme listesi ve sembolik bağlantı çözümü
- Giriş Doğrulaması: Dosya boyutu sınırları (varsayılan 100 MB), uzantı/biçim doğrulaması
- Tedarik Zinciri: SHA-256 karma kilitli bağımlılıklar, CycloneDX SBOM, kaynak doğrulama oluşturma
- İmzalı Taahhütler: CI'da Zorunludur
Banka Ekstresi Ayrıştırıcısı pyiso20022 ile karşılaştırıldığında nasıldır?
pyiso20022, ISO XML şemalarından Python veri sınıfları üreten geniş bir ISO 20022 araç setidir. Şema doğrulamayla birlikte çok çeşitli ISO 20022 mesaj türlerini (PACS, PAIN, CAMT, ADMI) kapsar. Hesap Özeti Ayrıştırıcısı, ISO dışı formatlar (CSV, OFX, QFX, MT940) dahil olmak üzere altı formatta akış desteği, PII redaksiyonu, tekilleştirme ve birleşik bir API ile banka ekstresi ayrıştırma için özel olarak tasarlanmıştır. Banka ekstrelerini üretim düzeyinde güvenlikle DataFrame'lere ayrıştırmanız gerekiyorsa Banka Ekstresi Ayrıştırıcısını kullanın. ISO 20022 mesaj kataloğunun tamamıyla çalışmanız gerekiyorsa pyiso20022'yi kullanın.
SWIFT ISO 20022 geçiş son tarihleri nelerdir?
SWIFT aşamalı bir geçiş zaman çizelgesi yayınladı:
- Kasım 2026: Yapılandırılmış ve karma adresler zorunlu hale geldi. MT101 çoklu talimat mesajları reddedilecektir. Vaka Yönetimi Aşama 1 başlıyor.
- Kasım 2027: Tüm finansal kuruluşların CAMT.053 ekstrelerini yerel olarak alabilmesi gerekir. SWIFT, MT'yi ISO formatına dönüştürmeyi durduracaktır.
- Kasım 2028: MT940, MT942, MT950, MT900 ve MT910'un tamamen kullanımdan kaldırılması. Bunların yerini CAMT.052, CAMT.053 ve CAMT.054 eşdeğerleri alacaktır.
Hesap Özeti Ayrıştırıcısı hem eski MT940 formatını hem de modern CAMT.053/PAIN.001 formatlarını destekler; bu da onu geçiş dönemi için ideal kılar.