Bank Statement Parser adalah pustaka Python sumber terbuka yang mengurai laporan bank dari tujuh format (CAMT.053, PAIN.001, CSV, OFX, QFX, MT940, dan PDF) ke dalam pandas DataFrames terstruktur. Semua pemrosesan berjalan secara lokal — keluaran deterministik, redaksi PII otomatis, dan pipeline PDF hibrida opsional yang menggunakan LLM lokal bila diperlukan.
Mulai dalam Hitungan Detik
pip install bankstatementparser
from bankstatementparser import create_parser, detect_statement_format
fmt = detect_statement_format("statement.xml")
parser = create_parser("statement.xml", fmt)
df = parser.parse() # pandas DataFrame, ready to use
# Parse PDFs with the hybrid pipeline (v0.0.5+)
from bankstatementparser.hybrid import smart_ingest
result = smart_ingest("statement.pdf")
print(result.source_method) # "deterministic" | "llm" | "vision"
print(result.verification.status) # VERIFIED | DISCREPANCY | FAILED
Satu Pustaka, Tujuh Format
Urai CAMT.053, PAIN.001, CSV, OFX, QFX, MT940, dan PDF ke dalam pandas DataFrames terstruktur dengan satu API terpadu. Tidak perlu menginstal paket terpisah untuk setiap format.
| Fitur | Bank Statement Parser | OSS format tunggal (mt940, ofxparse) | SaaS (Ocrolus, Parseur) |
|---|---|---|---|
| Format didukung | 7, API terpadu | masing-masing 1 | Banyak (via OCR) |
| Dukungan PDF | Pipeline hibrida (deterministik + LLM + vision) | Tidak | Ya (cloud OCR) |
| Privasi data | 100% lokal (LLM berjalan lokal via Ollama) | 100% lokal | Data dikirim ke pihak ketiga |
| Biaya | Gratis, Apache 2.0 | Gratis | $49-$1.000+/bln |
| Verifikasi saldo | Golden Rule (saldo awal + kredit − debit = saldo akhir) | Tidak | Bervariasi |
| Redaksi PII | Bawaan, aktif secara default | Tidak | Bervariasi |
| Streaming | Memori terbatas | Tidak | T/A |
| REST API | Microservice FastAPI bawaan | Tidak | Ya |
| Deduplikasi | Hash transaksi idempoten | Tidak | Sebagian |
| Ekspor ledger | hledger + beancount | Tidak | Tidak |
Pipeline PDF Hibrida
Bank Statement Parser v0.0.5+ menyertakan pipeline hibrida tiga jalur untuk laporan bank PDF:
- Jalur A (Deterministik): Tabel PDF terstruktur diurai langsung — gratis, tercepat, tanpa LLM.
- Jalur B (Text-LLM): PDF digital dengan tata letak kompleks diekstrak via LLM lokal (LiteLLM/Ollama).
- Jalur C (Vision-LLM): Laporan hasil pindai atau fotokopi diproses dengan model vision multimodal.
Setiap ekstraksi diverifikasi dengan Golden Rule: opening balance + credits − debits == closing balance.
Dibangun untuk Migrasi ISO 20022
SWIFT telah menetapkan tenggat waktu: semua lembaga keuangan harus menerima CAMT.053 paling lambat November 2027, dan MT940/MT942/MT950 akan dihentikan sepenuhnya pada November 2028. Bank Statement Parser menangani MT940 lama dan format ISO 20022 modern (CAMT.053, PAIN.001) dalam satu API, sehingga pipeline penguraian Anda berfungsi selama transisi dan setelahnya.
Performa
- 27.000+ transaksi/detik untuk penguraian CAMT.053
- 52.000+ transaksi/detik untuk penguraian PAIN.001
- < 2 ms waktu ke hasil pertama
- Memori konstan dari 1K hingga 50K+ transaksi via streaming
- 718 pengujian dengan cakupan cabang 100% di Python 3.10 hingga 3.14
Mengapa Bank Statement Parser?
- Ekstraksi PDF Hibrida:
smart_ingest()menangani PDF digital dan hasil pindai dengan routing otomatis dan verifikasi saldo. - Deteksi Format Otomatis:
detect_statement_format()mengidentifikasi file secara otomatis dancreate_parser()mengembalikan parser yang tepat. - Privasi Utama: Redaksi PII aktif secara default. LLM berjalan lokal via Ollama — tidak ada data yang keluar dari mesin Anda.
- REST API: Deploy sebagai microservice FastAPI dengan endpoint
/ingestdan/health. - Pengayaan: Kategorisasi transaksi berbasis LLM dengan skema pluggable (default Plaid 13 kategori).
- Ekspor Ledger: Ekspor ke format jurnal hledger dan beancount untuk alur kerja plaintext-accounting.
- Pemindaian Massal:
scan_and_ingest()memproses pohon folder dengan deduplikasi lintas-file otomatis. - Multi-Mata Uang:
verify_balance_multi_currency()menjalankan verifikasi Golden Rule per kelompok mata uang. - Siap Produksi: Ingesti ZIP aman, validasi input, pencegahan path traversal, dan mode tinjauan interaktif.
- Output Fleksibel: Ekspor ke CSV, JSON, Excel, Polars, hledger, atau beancount.
- Pemrosesan Paralel: Urai beberapa file secara bersamaan dengan
parse_files_parallel().
Dibangun untuk Produksi
Bank Statement Parser dirancang untuk tim perbendaharaan, pengembang fintech, dan petugas kepatuhan yang memproses data keuangan sensitif. Pustaka ini digunakan dalam pipeline migrasi MT940-ke-CAMT, sistem rekonsiliasi otomatis, ingesti laporan PDF, dan alur kerja audit regulasi di seluruh lembaga keuangan.
- 718 pengujian dengan cakupan cabang 100% di Python 3.10 hingga 3.14
- Dependensi dikunci hash SHA-256 dengan CycloneDX SBOM untuk setiap rilis
- Output deterministik — input identik menghasilkan hasil byte-identik, setiap kali dijalankan
- Berlisensi Apache 2.0 — gunakan secara bebas dalam sistem komersial dan internal
Mengevaluasi alternatif? Lihat perbandingan Bank Statement Parser ❯ | Jelajahi kasus penggunaan nyata ❯