Випадки використання

Програми реального світу

Bank Statement Parser обробляє реальні фінансові робочі процеси: завантаження PDF банківських виписок, міграцію MT940-на-CAMT, автоматичну звірку з перевіркою балансу, pipeline комплаєнсу, експорт у plaintext-accounting, розгортання REST API, масове сканування та багатобанківську консолідацію.

Завантаження PDF банківських виписок

Результат: Аналіз цифрових і сканованих PDF банківських виписок з автоматичною перевіркою балансу — без хмарних API, жодні дані не залишають вашу машину.

Гібридний PDF pipeline маршрутизує кожний PDF через оптимальний шлях витягування та перевіряє кожний результат.

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

# Review discrepancies interactively
# bankstatementparser --type review --input result.json

Масова обробка виписок

Результат: Сканування цілих дерев каталогів (сотні PDF, XML, CSV) з автоматичною крос-файловою дедуплікацією за один виклик.

from bankstatementparser.hybrid import scan_and_ingest

batch = scan_and_ingest("statements/2026/", pattern="**/*.pdf")
print(f"Files: {len(batch.results)}, Unique txns: {batch.unique_count}")

Казначейство: міграція MT940 на CAMT.053

Результат: Один виклик API обробляє і MT940, і CAMT.053 протягом вікна міграції SWIFT (листопад 2025 — листопад 2028), усуваючи потребу в окремих pipeline аналізу.

Команди казначейства в усьому світі мігрують з MT940 на CAMT.053 до дедлайну SWIFT у листопаді 2027 року. Bank Statement Parser обробляє обидва формати через єдиний API, що робить перехід безшовним.

from bankstatementparser import create_parser, detect_statement_format

# Process both MT940 and CAMT.053 with the same code
for file in daily_statement_files:
    fmt = detect_statement_format(file)
    parser = create_parser(file, fmt)
    df = parser.parse()
    load_to_treasury_system(df)

Автоматична звірка з перевіркою балансу

Результат: Формат-незалежні DataFrames із перевіркою Золотим правилом та дедуплікацією виявляють помилки та дублікати до потрапляння в бухгалтерію.

Аналізуйте банківські виписки, перевіряйте баланси та зіставляйте з внутрішніми записами автоматично.

from bankstatementparser import CamtParser, Deduplicator
from bankstatementparser.hybrid import verify_balance_multi_currency

parser = CamtParser("bank_statement.xml")
bank_txns = parser.parse()

# Verify balances per currency
verification = verify_balance_multi_currency(bank_txns)
for ccy, result in verification.items():
    assert result.status == "VERIFIED", f"{ccy} balance mismatch!"

# Deduplicate before reconciliation
dedup = Deduplicator()
result = dedup.deduplicate(dedup.from_dataframe(bank_txns))
clean_txns = result.unique_transactions

# Match against internal records
unmatched = reconcile(clean_txns, internal_ledger)

Plaintext-accounting (hledger / beancount)

Результат: Автоматичне завантаження PDF банківських виписок та експорт категоризованих транзакцій у формат hledger або beancount.

from bankstatementparser.hybrid import smart_ingest
from bankstatementparser.enrichment import Categorizer
from bankstatementparser.export import to_hledger

result = smart_ingest("statement.pdf")
categorizer = Categorizer()
enriched = categorizer.categorize_batch(result.transactions)
journal = to_hledger(enriched, account="Assets:Bank:Checking")

Розгортання REST API

Результат: Розгортання Bank Statement Parser як мікросервісу, що приймає файли виписок через HTTP та повертає структурований JSON.

# Start the API server
bankstatementparser-api --port 8000
# Ingest a statement
curl -X POST http://localhost:8000/ingest \
  -F "file=@statement.pdf"

Pipeline комплаєнсу та аудиту

Результат: Детермінований результат, автоматичне приховування персональних даних та перевірка Золотим правилом створюють журнали, готові до аудиту, що задовольняють регуляторні вимоги відтворюваності.

from bankstatementparser import CamtParser

parser = CamtParser("statement.xml")

# Stream with PII redacted for audit logs
for txn in parser.parse_streaming(redact_pii=True):
    audit_log.write(txn)

# Export full data for secure internal processing
parser.export_csv("archive/statement.csv")

Робочі процеси SFTP-to-DataFrame

Результат: Аналіз напряму з байтів без дискового введення-виведення, що природно вписується в SFTP та API-орієнтовані робочі процеси підключення до банку.

from bankstatementparser import CamtParser

xml_bytes = sftp_client.read("daily_statement.xml")
parser = CamtParser.from_bytes(xml_bytes, source_name="daily.xml")
df = parser.parse()

Багатобанківська консолідація

Результат: Паралельний аналіз HSBC (CAMT), Barclays (MT940), Revolut (CSV), Wise (OFX) та Chase (PDF) створює єдиний нормалізований набір даних.

from bankstatementparser import parse_files_parallel

results = parse_files_parallel([
    "hsbc/camt053.xml",
    "barclays/mt940.sta",
    "revolut/transactions.csv",
    "wise/statement.ofx",
])

all_transactions = pd.concat([r.transactions for r in results if r.status == "success"])

Пакетна обробка ZIP-архівів

Результат: Вбудований захист від ZIP-бомб (ліміт співвідношення 100:1, ліміт розміру запису 10 МБ, відхилення зашифрованих записів) дозволяє безпечно обробляти місячні архіви виписок.

from bankstatementparser import iter_secure_xml_entries, CamtParser

for entry in iter_secure_xml_entries("monthly_statements.zip"):
    parser = CamtParser.from_bytes(entry.xml_bytes, source_name=entry.source_name)
    df = parser.parse()
    save_to_warehouse(entry.source_name, df)

Порівняйте з альтернативами ❯ | Сплануйте міграцію на ISO 20022 ❯ | Розпочати ❯