Bank Statement Parser — это библиотека Python с открытым исходным кодом, которая разбирает банковские выписки семи форматов (CAMT.053, PAIN.001, CSV, OFX, QFX, MT940 и PDF) в структурированные DataFrames pandas. Вся обработка выполняется локально — детерминированный вывод, автоматическое маскирование персональных данных и опциональный гибридный PDF-pipeline, который при необходимости направляет запросы через локальные 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
Одна библиотека, семь форматов
Разбирайте CAMT.053, PAIN.001, CSV, OFX, QFX, MT940 и PDF в структурированные DataFrames pandas с помощью единого API. Не нужно устанавливать отдельные пакеты для каждого формата.
| Возможность | Bank Statement Parser | Одноформатные OSS (mt940, ofxparse) | SaaS (Ocrolus, Parseur) |
|---|---|---|---|
| Поддерживаемые форматы | 7, единый API | По 1 | Много (через OCR) |
| Поддержка PDF | Гибридный pipeline (детерминированный + LLM + vision) | Нет | Да (облачный OCR) |
| Конфиденциальность данных | 100% локально (LLM через Ollama) | 100% локально | Данные отправляются на внешний сервер |
| Стоимость | Бесплатно, Apache 2.0 | Бесплатно | $49–$1 000+/мес. |
| Проверка баланса | Золотое правило (начальный + кредит − дебет = конечный) | Нет | Зависит от сервиса |
| Маскирование PII | Встроенное, включено по умолчанию | Нет | Зависит от сервиса |
| Streaming | Ограниченная память | Нет | Н/Д |
| REST API | Встроенный микросервис FastAPI | Нет | Да |
| Дедупликация | Идемпотентные hash транзакций | Нет | Частично |
| Экспорт в бухгалтерию | hledger + beancount | Нет | Нет |
Гибридный PDF-pipeline
Bank Statement Parser v0.0.5+ включает трёхэтапный гибридный pipeline для PDF-выписок:
- Путь A (детерминированный): таблицы в структурированных PDF разбираются напрямую — бесплатно, быстрее всего, без LLM.
- Путь B (Text-LLM): цифровые PDF со сложной вёрсткой обрабатываются через локальную LLM (LiteLLM/Ollama).
- Путь C (Vision-LLM): отсканированные или копированные выписки обрабатываются мультимодальными моделями.
Каждое извлечение проверяется Золотым правилом: opening balance + credits − debits == closing balance.
Создано для миграции на ISO 20022
SWIFT установил жёсткие сроки: все финансовые учреждения должны принимать CAMT.053 к ноябрю 2027 года, а MT940/MT942/MT950 будут полностью упразднены к ноябрю 2028 года. Bank Statement Parser работает и с устаревшим MT940, и с современными форматами ISO 20022 (CAMT.053, PAIN.001) через единый API. Ваш pipeline будет работать как во время перехода, так и после него.
Производительность
- 27 000+ транзакций в секунду при разборе CAMT.053
- 52 000+ транзакций в секунду при разборе PAIN.001
- < 2 мс до первого результата
- Постоянная память от 1 000 до 50 000+ транзакций через streaming
- 718 тестов со 100%-м покрытием ветвей для Python 3.10–3.14
Почему Bank Statement Parser?
- Гибридное извлечение из PDF:
smart_ingest()обрабатывает цифровые и сканированные PDF с автоматической маршрутизацией и проверкой баланса. - Автоопределение формата:
detect_statement_format()определяет формат файла, аcreate_parser()возвращает нужный парсер. - Конфиденциальность прежде всего: маскирование PII включено по умолчанию. LLM работают локально через Ollama — данные не покидают вашу машину.
- REST API: развёртывание как микросервис FastAPI с эндпоинтами
/ingestи/health. - Обогащение данных: категоризация транзакций на основе LLM с подключаемыми схемами (по умолчанию 13 категорий Plaid).
- Экспорт в бухгалтерию: экспорт в форматы журналов hledger и beancount для plaintext-accounting.
- Массовое сканирование:
scan_and_ingest()обрабатывает деревья каталогов с автоматической дедупликацией между файлами. - Мультивалютность:
verify_balance_multi_currency()проверяет Золотое правило по каждой группе валют. - Готовность к продакшену: безопасная загрузка ZIP, валидация ввода, защита от обхода путей, интерактивный режим проверки.
- Гибкий вывод: экспорт в CSV, JSON, Excel, Polars, hledger или beancount.
- Параллельная обработка: разбор нескольких файлов одновременно с
parse_files_parallel().
Создано для продакшена
Bank Statement Parser создан для казначейских команд, разработчиков финтех-приложений и специалистов по комплаенсу, работающих с конфиденциальными финансовыми данными. Библиотека используется в pipeline миграции MT940-to-CAMT, системах автоматической сверки, PDF-загрузке выписок и рабочих процессах регуляторного аудита.
- 718 тестов со 100%-м покрытием ветвей для Python 3.10–3.14
- Зависимости с SHA-256 hash-lock и CycloneDX SBOM для каждого релиза
- Детерминированный вывод — одинаковые входные данные дают побайтово идентичный результат при каждом запуске
- Лицензия Apache 2.0 — свободное использование в коммерческих и внутренних системах
Сравниваете альтернативы? Посмотрите, как выглядит Bank Statement Parser на фоне конкурентов ❯ | Изучите реальные сценарии использования ❯