Bank Statement Parser 是一個開源 Python 函式庫,可將七種格式(CAMT.053、PAIN.001、CSV、OFX、QFX、MT940 及 PDF)的銀行對帳單解析為結構化的 pandas DataFrame。所有處理都在本機執行——確定性輸出、自動 PII 遮蔽,以及可選的混合 PDF 管線,在需要時透過本機 LLM 進行路由。
幾秒鐘即可開始
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
一套函式庫,七種格式
透過單一統一 API 將 CAMT.053、PAIN.001、CSV、OFX、QFX、MT940 及 PDF 解析為結構化的 pandas DataFrame。無需為每種格式分別安裝套件。
| 功能 | Bank Statement Parser | 單一格式 OSS(mt940、ofxparse) | SaaS(Ocrolus、Parseur) |
|---|---|---|---|
| 支援格式 | 7 種,統一 API | 各 1 種 | 多種(透過 OCR) |
| PDF 支援 | 混合管線(確定性 + LLM + 視覺) | 無 | 有(雲端 OCR) |
| 資料隱私 | 100% 本機(LLM 透過 Ollama 本機執行) | 100% 本機 | 資料傳送至外部 |
| 成本 | 免費,Apache 2.0 | 免費 | $49–$1,000+/月 |
| 餘額驗證 | 黃金法則(期初 + 貸方 − 借方 = 期末) | 無 | 視情況而定 |
| PII 遮蔽 | 內建,預設啟用 | 無 | 視情況而定 |
| 串流處理 | 固定記憶體用量 | 無 | 不適用 |
| REST API | 內建 FastAPI 微服務 | 無 | 有 |
| 去重 | 冪等交易雜湊 | 無 | 部分 |
| 帳本匯出 | hledger + beancount | 無 | 無 |
混合 PDF 管線
Bank Statement Parser v0.0.5+ 提供三路徑混合管線,用於處理 PDF 銀行對帳單:
- 路徑 A(確定性):直接解析結構化 PDF 表格——免費、最快、無需 LLM。
- 路徑 B(文字 LLM):透過本機 LLM(LiteLLM/Ollama)擷取複雜版面的數位 PDF。
- 路徑 C(視覺 LLM):使用多模態視覺模型處理掃描或影印的對帳單。
每次擷取都透過黃金法則進行驗證:opening balance + credits − debits == closing balance。
專為 ISO 20022 遷移打造
SWIFT 已設定明確期限:所有金融機構必須在 2027 年 11 月前接收 CAMT.053,MT940/MT942/MT950 將在 2028 年 11 月前完全停用。Bank Statement Parser 在單一 API 中同時支援傳統 MT940 及現代 ISO 20022 格式(CAMT.053、PAIN.001),讓您的解析管線在過渡期間及之後都能正常運作。
效能
- CAMT.053 解析 每秒 27,000+ 筆交易
- PAIN.001 解析 每秒 52,000+ 筆交易
- < 2 ms 首次回傳結果
- 透過串流處理,從 1K 到 50K+ 筆交易皆維持固定記憶體用量
- 718 項測試,Python 3.10 至 3.14 達 100% 分支覆蓋率
為何選擇 Bank Statement Parser?
- 混合 PDF 擷取:
smart_ingest()可處理數位及掃描 PDF,自動路由並驗證餘額。 - 格式自動偵測:
detect_statement_format()自動辨識檔案,create_parser()回傳對應的解析器。 - 隱私優先:PII 遮蔽預設啟用。LLM 透過 Ollama 在本機執行——資料不會離開您的機器。
- REST API:以 FastAPI 微服務部署,提供
/ingest及/health端點。 - 交易增強:LLM 驅動的交易分類,支援可插拔的分類架構(預設為 Plaid 13 類別)。
- 帳本匯出:匯出為 hledger 及 beancount 日記帳格式,適用於純文字記帳工作流程。
- 批次掃描:
scan_and_ingest()處理整個資料夾樹狀結構,自動跨檔案去重。 - 多幣別:
verify_balance_multi_currency()依幣別群組執行黃金法則驗證。 - 正式環境就緒:安全 ZIP 匯入、輸入驗證、路徑遍歷防護及互動式審核模式。
- 彈性輸出:匯出為 CSV、JSON、Excel、Polars、hledger 或 beancount。
- 平行處理:透過
parse_files_parallel()同時解析多個檔案。
專為正式環境打造
Bank Statement Parser 專為處理敏感財務資料的財務團隊、金融科技開發人員及合規人員設計。該函式庫廣泛應用於 MT940 至 CAMT 遷移管線、自動對帳系統、PDF 對帳單匯入及金融機構的監管稽核工作流程。
- 718 項測試,Python 3.10 至 3.14 達 100% 分支覆蓋率
- 每個版本皆有 SHA-256 雜湊鎖定相依性及 CycloneDX SBOM
- 確定性輸出——相同輸入每次執行都產生位元組完全一致的結果
- Apache 2.0 授權——可自由用於商業及內部系統
正在評估替代方案? 查看 Bank Statement Parser 的比較結果 ❯ | 探索實際使用案例 ❯