Ang Bank Statement Parser ay isang open-source na Python library na nag-pa-parse ng mga bank statement mula sa pitong format (CAMT.053, PAIN.001, CSV, OFX, QFX, MT940, at PDF) sa structured pandas DataFrames. Lahat ng pagpoproseso ay tumatakbo nang lokal — deterministikong output, awtomatikong PII redaction, at opsyonal na hybrid PDF pipeline na gumagamit ng lokal na mga LLM kapag kinakailangan.
Magsimula sa Ilang Segundo
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
Isang Library, Pitong Format
I-parse ang CAMT.053, PAIN.001, CSV, OFX, QFX, MT940, at PDF sa mga structured pandas DataFrames gamit ang iisang, pinag-isang API. Hindi na kailangang mag-install ng hiwalay na mga pakete para sa bawat format.
| Tampok | Bank Statement Parser | Single-format OSS (mt940, ofxparse) | SaaS (Ocrolus, Parseur) |
|---|---|---|---|
| Mga format na sinusuportahan | 7, pinag-isang API | 1 bawat isa | Marami (sa pamamagitan ng OCR) |
| Suporta sa PDF | Hybrid pipeline (deterministic + LLM + vision) | Wala | Oo (cloud OCR) |
| Pagkapribado ng data | 100% lokal (tumatakbo ang mga LLM nang lokal sa pamamagitan ng Ollama) | 100% lokal | Ipinapadala ang data sa labas |
| Gastos | Libre, Apache 2.0 | Libre | $49-$1,000+/buwan |
| Beripikasyon ng balanse | Golden Rule (opening + credits − debits = closing) | Wala | Nag-iiba |
| PII redaction | Built-in, naka-on bilang default | Wala | Nag-iiba |
| Streaming | Bounded memory | Wala | N/A |
| REST API | Built-in na FastAPI microservice | Wala | Oo |
| Deduplikasyon | Idempotent na transaction hash | Wala | Bahagya |
| Ledger export | hledger + beancount | Wala | Wala |
Hybrid PDF Pipeline
Kasama sa Bank Statement Parser v0.0.5+ ang tatlong-landas na hybrid pipeline para sa mga PDF bank statement:
- Path A (Deterministic): Direktang pine-parse ang mga structured PDF table — libre, pinakamabilis, hindi kailangan ng LLM.
- Path B (Text-LLM): Kinukuha ang mga digital PDF na may kumplikadong layout sa pamamagitan ng lokal na LLM (LiteLLM/Ollama).
- Path C (Vision-LLM): Pinoproseso ang mga na-scan o na-photocopy na statement gamit ang multimodal vision model.
Bawat extraction ay bineberipika gamit ang Golden Rule: opening balance + credits − debits == closing balance.
Binuo para sa ISO 20022 Migration
Nagtakda ang SWIFT ng matatag na mga deadline: lahat ng institusyong pinansyal ay dapat makatanggap ng CAMT.053 bago ang Nobyembre 2027, at ang MT940/MT942/MT950 ay ganap na magre-retire sa Nobyembre 2028. Hinahawakan ng Bank Statement Parser ang parehong legacy na MT940 at modernong ISO 20022 na mga format (CAMT.053, PAIN.001) sa iisang API, kaya gumagana ang iyong parsing pipeline sa panahon ng transisyon at pagkatapos nito.
Pagganap
- 27,000+ transaksyon/segundo para sa pag-parse ng CAMT.053
- 52,000+ transaksyon/segundo para sa pag-parse ng PAIN.001
- < 2 ms oras hanggang sa unang resulta
- Constant memory mula 1K hanggang 50K+ na transaksyon sa pamamagitan ng streaming
- 718 pagsubok na may 100% branch coverage sa Python 3.10 hanggang 3.14
Bakit Bank Statement Parser?
- Hybrid PDF Extraction: Hinahawakan ng
smart_ingest()ang mga digital at na-scan na PDF na may awtomatikong routing at beripikasyon ng balanse. - Format Auto-Detection: Awtomatikong kinikilala ng
detect_statement_format()ang mga file at ibinabalik ngcreate_parser()ang tamang parser. - Privacy First: Naka-on ang PII redaction bilang default. Tumatakbo ang mga LLM nang lokal sa pamamagitan ng Ollama — walang data na umaalis sa iyong makina.
- REST API: I-deploy bilang FastAPI microservice na may
/ingestat/healthna mga endpoint. - Enrichment: LLM-powered na pag-kategorya ng transaksyon na may pluggable na mga schema (Plaid 13-category na default).
- Ledger Export: I-export sa hledger at beancount na mga journal format para sa plaintext-accounting na mga workflow.
- Bulk Scanning: Pinoproseso ng
scan_and_ingest()ang mga folder tree na may awtomatikong cross-file na deduplikasyon. - Multi-Currency: Pinapatakbo ng
verify_balance_multi_currency()ang Golden Rule na beripikasyon sa bawat currency group. - Handa sa Produksyon: Secure na ZIP ingestion, input validation, path traversal prevention, at interactive review mode.
- Flexible Output: I-export sa CSV, JSON, Excel, Polars, hledger, o beancount.
- Parallel Processing: Mag-parse ng maraming file nang sabay-sabay gamit ang
parse_files_parallel().
Binuo para sa Produksyon
Ang Bank Statement Parser ay idinisenyo para sa mga treasury team, fintech developer, at mga opisyal ng pagsunod na nagpoproseso ng sensitibong data sa pananalapi. Ginagamit ang library sa MT940-to-CAMT migration pipeline, automated reconciliation system, PDF statement ingestion, at regulatory audit workflow sa mga institusyong pinansyal.
- 718 pagsubok na may 100% branch coverage sa Python 3.10 hanggang 3.14
- SHA-256 hash-locked dependencies na may CycloneDX SBOM para sa bawat release
- Deterministic output — ang magkaparehong input ay gumagawa ng byte-identical na resulta, bawat run
- Lisensyadong Apache 2.0 — malayang gamitin sa komersyal at panloob na mga sistema
Sinusuri ang mga alternatibo? Tingnan kung paano naghahambing ang Bank Statement Parser ❯ | Tuklasin ang mga real-world na use case ❯