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 | 单格式开源库(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):布局复杂的数字 PDF 通过本地 LLM(LiteLLM/Ollama)提取。
- 路径 C(视觉 LLM):扫描件或复印件通过多模态视觉模型处理。
每次提取均通过黄金法则校验:期初余额 + 贷方 − 借方 == 期末余额。
专为 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 的对比 ❯ | 探索实际使用场景 ❯