銀行對帳單解析器是一個開源 Python 函式庫,可將六種格式的銀行對帳單解析為結構化的 pandas DataFrame。所有處理都在本地進行——零網路呼叫、確定性輸出和自動 PII 編輯。
這是給誰的?
- 財務團隊從 MT940 遷移到 CAMT.053,他們需要一個在過渡期間同時處理新舊格式的解析器。
- 金融科技開發人員 建立對帳、報表或會計管道,他們想要單一依賴項,而不是將 mt940 + ofxparse + 自訂 CSV 邏輯拼接在一起。
- 合規團隊,需要預設 PII 修訂和稽核就緒、確定性輸出,從不將資料傳送至外部服務。
- 當本地開源工具可以完成這項工作時,任何人 拒絕將敏感財務資料發送到第三方 SaaS。
支援的格式
| 格式 | 標準 | 文件類型 | 解析器類別 |
|---|---|---|---|
| CAMT.053 | ISO 20022 銀行對客戶聲明 | .xml |
CamtParser |
| 疼痛.001 | ISO 20022 學分轉移啟動 | .xml |
Pain001Parser |
| CSV | 一般銀行出口 | .csv |
CsvStatementParser |
| 氧氟沙星 | 開放金融交易所 | .ofx |
OfxParser |
| QFX | 加快金融交流 | .qfx |
QfxParser |
| MT940 | SWIFT標準 | .mt940, .sta |
Mt940Parser |
所有格式都會產生具有一致列名的標準化 pandas DataFrame,從而使下游處理與格式無關。
關鍵能力
- 格式自動偵測:
detect_statement_format()標識格式;create_parser()實例化正確的解析器。 - 串流解析:使用有限記憶體處理大檔案(50 MB+、50K+ 事務)
parse_streaming()。 - 並行處理:同時解析多個文件
parse_files_parallel()使用 ProcessPoolExecutor。 - 重複資料刪除:透過可解釋的置信度分數檢測精確的重複項和可疑匹配項。
- 記憶體中解析:
from_string()和from_bytes()適用於無磁碟 I/O 的 SFTP 和 API 工作流程。 - 安全 ZIP 處理:
iter_secure_xml_entries()具有壓縮比限制、條目大小上限和加密條目拒絕。 - 匯出:CSV、JSON、Excel(
.xlsx)和可選的 Polars 資料幀。
安全與隱私
- PII 修訂:預設情況下,CLI 輸出中會封鎖名稱、IBAN 和位址。選擇加入
--show-pii。 - XXE保護:XML解析使用
resolve_entities=False,no_network=True,load_dtd=False。 - ZIP 炸彈保護:壓縮比限制(預設為 100:1)、條目大小上限 (10 MB)、加密條目拒絕。
- 路徑遍歷預防:危險模式阻止清單和符號連結解析。
- 供應鏈安全性:SHA-256 雜湊鎖定依賴項、CycloneDX SBOM、建置來源證明。
## 表現
| 公制 | 價值 |
|---|---|
| CAMT.053吞吐量 | 27,000+ 筆交易/秒 |
| PAIN.001吞吐量 | 52,000+ 筆交易/秒 |
| 每一次交易延遲 (CAMT) | 37微秒 |
| 每筆交易延遲 (PAIN.001) | 19微秒 |
| 獲得第一個結果的時間 | < 2 毫秒 |
| 記憶體擴充(1K-50K tx) | 恆定(流) |
| 測試覆蓋率 | 100%分支機構覆蓋 |
| 測試 | 29 個測試文件中有 467 個 |
開始構建
[開始安裝和範例❯][01]
[01]:/getting-started/index.html“入門” “GitHub 儲存庫”