Ang Bank Statement Parser ay isang open-source na Python library na nag-parse ng mga bank statement mula sa anim na format sa structured pandas DataFrames. Nangyayari ang lahat ng pagpoproseso nang lokal -- zero na tawag sa network, deterministikong output, at awtomatikong PII redaction.
Para Kanino Ito?
- Mga Treasury team na lumilipat mula MT940 patungong CAMT.053 na nangangailangan ng parser na humahawak sa luma at bagong mga format sa panahon ng paglipat.
- Ang mga developer ng Fintech ay nagtatayo ng mga pipeline ng reconciliation, pag-uulat, o accounting na gusto ng iisang dependency sa halip na pagsamahin ang mt940 + ofxparse + custom na CSV logic.
- Mga koponan sa pagsunod na nangangailangan ng PII redaction bilang default at handa sa pag-audit, deterministikong output na hindi kailanman nagpapadala ng data sa mga panlabas na serbisyo.
- Sinuman na tumangging magpadala ng sensitibong data sa pananalapi sa isang third-party na SaaS kapag magagawa ng isang lokal, open-source na tool ang trabaho.
Mga Sinusuportahang Format
| Format | Pamantayan | Mga Uri ng File | Klase ng Parser |
|---|---|---|---|
| CAMT.053 | ISO 20022 Bank-to-Customer Statement | .xml |
CamtParser |
| SAKIT.001 | ISO 20022 Credit Transfer Initiation | .xml |
Pain001Parser |
| CSV | Mga generic na pag-export ng bangko | .csv |
CsvStatementParser |
| OFX | Buksan ang Financial Exchange | .ofx |
OfxParser |
| QFX | Pabilisin ang Financial Exchange | .qfx |
QfxParser |
| MT940 | pamantayan ng SWIFT | .mt940, .sta |
Mt940Parser |
Ang lahat ng mga format ay gumagawa ng mga normalized na pandas DataFrames na may pare-parehong mga pangalan ng column, na ginagawang downstream processing format-agnostic.
Mga Pangunahing Kakayahan
- Format Auto-Detection:
detect_statement_format()kinikilala ang format;create_parser()ini-instantiate ang tamang parser. - Streaming Parsing: Iproseso ang malalaking file (50 MB+, 50K+ na transaksyon) na may bounded memory gamit ang
parse_streaming(). - Parallel Processing: Mag-parse ng maraming file nang sabay-sabay
parse_files_parallel()gamit ang ProcessPoolExecutor. - Deduplication: Tuklasin ang mga eksaktong duplicate at pinaghihinalaang tugma na may maipaliwanag na mga marka ng kumpiyansa.
- In-Memory Parsing:
from_string()atfrom_bytes()para sa mga workflow ng SFTP at API na walang disk I/O. - Secure na Pagproseso ng ZIP:
iter_secure_xml_entries()na may mga limitasyon sa compression ratio, mga takip sa laki ng entry, at naka-encrypt na pagtanggi sa entry. - I-export: CSV, JSON, Excel (
.xlsx), at opsyonal na Polars DataFrames.
Seguridad at Privacy
- PII Redaction: Ang mga pangalan, IBAN, at address ay naka-mask bilang default sa CLI output. Mag-opt in gamit ang
--show-pii. - Proteksyon ng XXE: Mga gamit sa pag-parse ng XML
resolve_entities=False,no_network=True,load_dtd=False. - ZIP Bomb Protection: Mga limitasyon sa compression ratio (100:1 default), entry size caps (10 MB), encrypted entry rejection.
- Path Traversal Prevention: Mapanganib na pattern blocklist at resolution ng symlink.
- Supply Chain Security: SHA-256 hash-locked dependencies, CycloneDX SBOM, build provenance attestation.
Pagganap
| Sukatan | Halaga |
|---|---|
| CAMT.053 throughput | 27,000+ tx/s |
| PAIN.001 throughput | 52,000+ tx/s |
| Per-transaction latency (CAMT) | 37 microseconds |
| Per-transaction latency (PAIN.001) | 19 microseconds |
| Oras para sa unang resulta | < 2 ms |
| Pag-scale ng memorya (1K-50K tx) | Constant (streaming) |
| Saklaw ng pagsubok | 100% saklaw ng sangay |
| Mga pagsubok | 467 sa 29 na test file |
Simulan ang Pagbuo
Magsimula sa pag-install at mga halimbawa ❯
"GitHub Repository"