TL;DR: Bank Statement Parser je open-source Python knihovna, která analyzuje sedm formátů bankovních výpisů (CAMT.053, PAIN.001, CSV, OFX, QFX, MT940 a PDF) do pandas DataFrames. Hybridní PDF pipeline s ověřením zůstatku, REST API, obohacení, export do účetnictví, propustnost 27K+ tx/s.
Bank Statement Parser je open-source Python knihovna, která analyzuje bankovní výpisy ze sedmi formátů do strukturovaných pandas DataFrames. Deterministické jádro zpracovává strukturované formáty lokálně bez síťových volání. Volitelný hybridní PDF pipeline směruje přes lokální LLM (prostřednictvím Ollama) pro digitální a naskenované výpisy.
Pro koho je to určeno?
- Treasury týmy migrující z MT940 na CAMT.053, které potřebují parser zvládající oba formáty během přechodu, plus PDF výpisy od bank bez strukturovaných exportů.
- Fintech vývojáři budující pipeline pro odsouhlasení, reporting nebo účetnictví, kteří chtějí jedinou závislost s vestavěným ověřením zůstatku, kategorizací a exportem do účetnictví.
- Compliance týmy, které potřebují výchozí redakci PII, deterministický výstup a ověření Golden Rule, jež odhalí nesrovnalosti dříve, než se dostanou do účetní knihy.
- Uživatelé plaintext-accounting, kteří chtějí automatizované zpracování PDF bankovních výpisů přímo do hledger nebo beancount deníků.
- Kdokoli, kdo odmítá posílat citlivá finanční data třetí straně, když to zvládne lokální open-source nástroj.
Podporované formáty
| Formát | Standard | Typy souborů | Parser/Metoda |
|---|---|---|---|
| CAMT.053 | ISO 20022 Bank-to-Customer Statement | .xml |
CamtParser |
| PAIN.001 | ISO 20022 Credit Transfer Initiation | .xml |
Pain001Parser |
| CSV | Generické bankovní exporty | .csv |
CsvStatementParser |
| OFX | Open Financial Exchange | .ofx |
OfxParser |
| QFX | Quicken Financial Exchange | .qfx |
QfxParser |
| MT940 | Standard SWIFT | .mt940, .sta |
Mt940Parser |
| Digitální a naskenované výpisy | .pdf |
smart_ingest() |
Všechny formáty produkují normalizované pandas DataFrames s konzistentními názvy sloupců, což činí následné zpracování nezávislým na formátu.
Klíčové funkce
- Hybridní PDF pipeline:
smart_ingest()směruje PDF třemi cestami — deterministická extrakce tabulek, text-LLM nebo vision-LLM — s automatickým ověřením zůstatku Golden Rule. - Automatická detekce formátu:
detect_statement_format()identifikuje formát;create_parser()vytvoří správný parser. - Ověření zůstatku: Kontrola Golden Rule (
opening + credits − debits == closing) se stavem VERIFIED/DISCREPANCY/FAILED. - Multi-měnové ověření:
verify_balance_multi_currency()seskupuje transakce podle měny pro nezávislé ověření. - REST API: FastAPI mikroservis s endpointy
/ingesta/healthpro produkční nasazení. - Obohacení: LLM kategorizace transakcí s připojitelnými schématy (výchozí 13 kategorií Plaid).
- Interaktivní kontrola: Procházení nesrovnalostí s akcemi accept/edit/skip/delete přes
--type review. - Export do účetnictví:
to_hledger()ato_beancount()pro plaintext-accounting workflows. - Hromadné skenování:
scan_and_ingest()zpracovává adresářové stromy s automatickou deduplikací napříč soubory. - Mapování účtů: Regex mapovací pravidla účtů z JSON konfigurace pro export do účetnictví.
- Streaming parsing: Zpracování velkých souborů (50 MB+, 50K+ transakcí) s omezenou pamětí pomocí
parse_streaming(). - Paralelní zpracování: Parsování více souborů současně pomocí
parse_files_parallel()s ProcessPoolExecutor. - Deduplikace: Idempotentní
transaction_hash(MD5 fingerprint) pro bezpečné inkrementální zpracování. - Parsování v paměti:
from_string()afrom_bytes()pro SFTP a API workflows bez diskových I/O. - Bezpečné zpracování ZIP:
iter_secure_xml_entries()s limity kompresního poměru, omezením velikosti záznamů a odmítnutím šifrovaných záznamů. - Export: CSV, JSON, Excel (
.xlsx), Polars DataFrames, hledger a beancount deníky.
Zabezpečení a soukromí
- Redakce PII: Jména, IBANy a adresy jsou ve výstupu CLI ve výchozím nastavení maskovány. Zapněte zobrazení pomocí
--show-pii. - Ochrana proti XXE: XML parsování používá
resolve_entities=False,no_network=True,load_dtd=False. - Ochrana proti ZIP bombám: Limity kompresního poměru (výchozí 100:1), omezení velikosti záznamů (10 MB), odmítnutí šifrovaných záznamů.
- Prevence path traversal: Blocklist nebezpečných vzorů a rozlišení symbolických odkazů.
- Zabezpečení dodavatelského řetězce: SHA-256 hash-locked závislosti, CycloneDX SBOM, attestace o původu sestavení.
- Pouze lokální LLM: Hybridní PDF pipeline používá Ollama pro lokální inferenci — žádná data neodcházejí do cloudových API.
Výkon
| Metrika | Hodnota |
|---|---|
| Propustnost CAMT.053 | 27 000+ tx/s |
| Propustnost PAIN.001 | 52 000+ tx/s |
| Latence na transakci (CAMT) | 37 mikrosekund |
| Latence na transakci (PAIN.001) | 19 mikrosekund |
| Čas do prvního výsledku | < 2 ms |
| Škálování paměti (1K–50K tx) | Konstantní (streaming) |
| Pokrytí testy | 100% pokrytí větví |
| Testy | 718 v 29 testovacích souborech |