Bank Statement Parser は、7 つの形式(CAMT.053、PAIN.001、CSV、OFX、QFX、MT940、PDF)の銀行取引明細書を構造化された pandas DataFrame に解析するオープンソースの Python ライブラリです。すべての処理はローカルで実行されます。確定的な出力、自動 PII 秘匿化、必要に応じてローカル LLM を経由するオプションのハイブリッド PDF パイプラインを備えています。
数秒で始められます
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
1 つのライブラリ、7 つのフォーマット
CAMT.053、PAIN.001、CSV、OFX、QFX、MT940、PDF を単一の統合 API で構造化された 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 銀行取引明細書用の 3 パスハイブリッドパイプラインが含まれています。
- パス A(確定的): 構造化された PDF テーブルを直接解析します。無料で最速、LLM 不要です。
- パス B(テキスト LLM): 複雑なレイアウトのデジタル PDF をローカル LLM(LiteLLM/Ollama)で抽出します。
- パス C(ビジョン LLM): スキャンやコピーされた明細書をマルチモーダルビジョンモデルで処理します。
すべての抽出はゴールデンルールで検証されます: opening balance + credits − debits == closing balance
ISO 20022 移行用に構築
SWIFT は明確な期限を設定しています。すべての金融機関は 2027 年 11 月までに CAMT.053 を受信する必要があり、MT940/MT942/MT950 は 2028 年 11 月までに完全に廃止されます。Bank Statement Parser はレガシーの MT940 と最新の ISO 20022 形式(CAMT.053、PAIN.001)の両方を単一の API で処理するため、解析パイプラインは移行中もその後も機能します。
パフォーマンス
- 27,000+ トランザクション/秒(CAMT.053 解析)
- 52,000+ トランザクション/秒(PAIN.001 解析)
- < 2 ms 最初の結果が得られるまでの時間
- 一定メモリ ストリーミングにより 1K〜50K+ トランザクションに対応
- 718 テスト、Python 3.10〜3.14 で 100% ブランチカバレッジ
なぜ Bank Statement Parser なのか?
- ハイブリッド PDF 抽出:
smart_ingest()がデジタル PDF とスキャン 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% ブランチカバレッジ
- 各リリースの CycloneDX SBOM を含む SHA-256 ハッシュロック依存関係
- 確定的出力 — 同一の入力が毎回バイト同一の結果を生成します
- Apache 2.0 ライセンス — 商用システムおよび社内システムで自由に使用できます
代替案を評価中ですか? Bank Statement Parser の比較をご覧ください ❯ | 実際のユースケースを探す ❯