Lo Awọn ọran

Real-World elo

Bank Statement Parser n ṣakoso awọn ṣiṣan iṣẹ inawo gidi-aye: gbigbe alaye banki PDF, iṣilọ MT940-si-CAMT, ilaja adaṣe pẹlu iṣayẹwo iwọntunwọnsi, awọn opo gigun ibamu, okeere iṣiro ọrọ-lasan, imuṣiṣẹ REST API, ayẹwo pupọ, ati isọdọkan ile-ifowopamọ pupọ.

Gbigbe Alaye Banki PDF

Abajade: Ṣe itupalẹ awọn alaye banki PDF oni-nọmba ati ti a ṣe scan pẹlu iṣayẹwo iwọntunwọnsi laifọwọyi — ko si awọn API awọsanma, ko si data ti o kuro ninu ẹrọ rẹ.

Opo gigun PDF aladapọ darí PDF kọọkan nipasẹ ọna isediwon ti o dara julọ ati ṣe iṣayẹwo gbogbo abajade.

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

Sisẹ Alaye Pupọ

Abajade: Ṣe ayẹwo awọn igi folda odidi (awọn ọgọọgọrun PDF, XML, CSV) pẹlu yiyọ ẹda kọja awọn faili laifọwọyi ni ipe kan ṣoṣo.

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}")

Iṣura: Iṣilọ MT940 si CAMT.053

Abajade: Ipe API kan ṣoṣo n mu mejeeji MT940 ati CAMT.053 lakoko window iṣilọ SWIFT (Oṣu kọkanla 2025–Oṣu kọkanla 2028), ti o mu iwulo fun awọn opo gigun itupalẹ lọtọ kuro.

Awọn ẹgbẹ iṣura kaakiri agbaye n ṣilọ lati MT940 si CAMT.053 ṣaaju akoko ipari SWIFT Oṣu kọkanla 2027. Bank Statement Parser mu awọn ọna kika mejeeji pẹlu API kan ṣoṣo, ti o jẹ ki iyipada naa rọrun.

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)

Ilaja Adaṣe Pẹlu Iṣayẹwo Iwọntunwọnsi

Abajade: DataFrames ti ko ṣe iyatọ ọna kika pẹlu iṣayẹwo Ofin Goolu ati yiyọ ẹda mu awọn aṣiṣe ati awọn ẹda-iwe ṣaaju ki wọn de iwe iroyin rẹ.

Ṣe itupalẹ awọn alaye banki, ṣe iṣayẹwo awọn iwọntunwọnsi, ki o baramu lodi si awọn igbasilẹ inu laifọwọyi.

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)

Iṣiro Ọrọ-Lasan (hledger / beancount)

Abajade: Gba awọn alaye banki PDF laifọwọyi ki o ṣe okeere awọn iṣowo ti a pin si ẹka si ọna kika iwe iroyin hledger tabi 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")

Imuṣiṣẹ REST API

Abajade: Ṣe imuṣiṣẹ Bank Statement Parser gẹgẹbi iṣẹ-kekere ti o gba awọn faili alaye nipasẹ HTTP ti o si da JSON ti a ṣeto padà.

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

Awọn Opo Gigun Ibamu Ati Iṣayẹwo

Abajade: Iṣelọpọ ipinnu, isọdọtun PII laifọwọyi, ati iṣayẹwo Ofin Goolu ṣe agbejade awọn iwe iṣayẹwo-ṣetan ti o ni itẹlọrun awọn ibeere isọdọtun ilana.

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")

Awọn Ṣiṣan Iṣẹ SFTP-si-DataFrame

Abajade: Ṣe itupalẹ taara lati awọn baiti pẹlu disk I/O odo, ti o baamu ni abinibi sinu SFTP ati awọn ṣiṣan iṣẹ asopọ banki ti API darí.

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()

Isọdọkan Ile-Ifowopamọ Pupọ

Abajade: Itupalẹ afiwe kọja HSBC (CAMT), Barclays (MT940), Revolut (CSV), Wise (OFX), ati Chase (PDF) ṣe agbejade ipilẹ data deede kan ṣoṣo.

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"])

Sisẹ Ìpele Pẹlu Awọn Ile Ipamọ ZIP

Abajade: Idaabobo bombu ZIP ti a ṣe sinu (ipin 100:1, fila titẹsi 10 MB, ijusile iwọle ti paroko) jẹ ki o ṣe ilana awọn iwe ipamọ alaye oṣooṣu lailewu.

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)

Fiwe pẹlu awọn yiyan ❯ | Gbero iṣilọ ISO 20022 rẹ ❯ | Bẹrẹ ❯