ตัวแยกวิเคราะห์ใบแจ้งยอดธนาคาร

เริ่มสร้างแอปพลิเคชันที่ปลอดภัยด้วย ตัวแยกวิเคราะห์ใบแจ้งยอดธนาคาร

ความต้องการ

ติดตั้ง

pip install bankstatementparser

สำหรับการสนับสนุน Polars DataFrame:

pip install bankstatementparser[polars]

เริ่มต้นอย่างรวดเร็ว

ตรวจจับอัตโนมัติและแยกวิเคราะห์รูปแบบใด ๆ

from bankstatementparser import create_parser, detect_statement_format

fmt = detect_statement_format("transactions.ofx")
parser = create_parser("transactions.ofx", fmt)
df = parser.parse()  # pandas DataFrame
print(df.head())

วิธีนี้ใช้ได้กับ.xml(CAMT/PAIN.001).csv, .ofx, .qfx, .mt940, และ.staไฟล์.

แยกวิเคราะห์ CAMT.053

from bankstatementparser import CamtParser

parser = CamtParser("statement.xml")
transactions = parser.parse()

แยกวิเคราะห์ PAIN.001

from bankstatementparser import Pain001Parser

parser = Pain001Parser("payment.xml")
payments = parser.parse()

สตรีมมิ่งไฟล์ขนาดใหญ่

สำหรับไฟล์ที่มีธุรกรรมหลายพันรายการ ให้ใช้การสตรีมเพื่อจำกัดขอบเขตหน่วยความจำ:

parser = CamtParser("large_statement.xml")
for transaction in parser.parse_streaming(redact_pii=True):
    process(transaction)  # Memory stays constant

การแยกวิเคราะห์ในหน่วยความจำ

แยกวิเคราะห์จากไบต์ที่ไม่มีดิสก์ I/O -- มีประโยชน์สำหรับเวิร์กโฟลว์ SFTP หรือ API:

xml_bytes = download_from_sftp()
parser = CamtParser.from_bytes(xml_bytes, source_name="daily.xml")
transactions = parser.parse()

การประมวลผลไฟล์แบบขนาน

แยกวิเคราะห์หลายไฟล์พร้อมกัน:

from bankstatementparser import parse_files_parallel

results = parse_files_parallel([
    "statements/jan.xml",
    "statements/feb.xml",
    "statements/mar.xml",
])
for r in results:
    print(r.path, r.status, len(r.transactions), "rows")

การขจัดข้อมูลซ้ำซ้อน

ตรวจจับรายการที่ซ้ำกันทุกประการและการแข่งขันที่ต้องสงสัยด้วยคะแนนความมั่นใจ:

from bankstatementparser import CamtParser, Deduplicator

parser = CamtParser("statement.xml")
dedup = Deduplicator()
result = dedup.deduplicate(dedup.from_dataframe(parser.parse()))

print(f"Unique: {len(result.unique_transactions)}")
print(f"Exact duplicates: {len(result.exact_duplicates)}")
print(f"Suspected matches: {len(result.suspected_matches)}")

การประมวลผล ZIP ที่ปลอดภัย

ประมวลผลไฟล์ XML แบบซิปพร้อมการตรวจสอบความปลอดภัยในตัว (การป้องกันระเบิด การปฏิเสธรายการที่เข้ารหัส):

from bankstatementparser import iter_secure_xml_entries, CamtParser

for entry in iter_secure_xml_entries("statements.zip"):
    parser = CamtParser.from_bytes(entry.xml_bytes, source_name=entry.source_name)
    print(f"{entry.source_name}: {len(parser.parse())} transactions")

ส่งออก

parser = CamtParser("statement.xml")
parser.export_csv("output.csv")
parser.export_json("output.json")

# Polars (requires bankstatementparser[polars])
polars_df = parser.to_polars()

การใช้งาน CLI

# Parse and display
python -m bankstatementparser.cli --type camt --input statement.xml

# Export to CSV
python -m bankstatementparser.cli --type camt --input statement.xml --output transactions.csv

# Stream with PII visible
python -m bankstatementparser.cli --type camt --input statement.xml --streaming --show-pii

ตัวเลือก CLI:

การตั้งค่าการพัฒนาท้องถิ่น

git clone https://github.com/sebastienrousseau/bankstatementparser.git
cd bankstatementparser
python3 -m venv .venv && source .venv/bin/activate
pip install poetry && poetry install --with dev

เรียกใช้ชุดทดสอบ:

pytest

การอ้างอิง API

คลาส Parser

ระดับ รูปแบบ นำเข้า
CamtParser CAMT.053 (ISO 20022) from bankstatementparser import CamtParser
Pain001Parser ความเจ็บปวด.001 (ISO 20022) from bankstatementparser import Pain001Parser
CsvStatementParser ซีเอสวี from bankstatementparser import CsvStatementParser
OfxParser โอเอฟเอ็กซ์ from bankstatementparser import OfxParser
QfxParser คิวเอฟเอ็กซ์ from bankstatementparser import QfxParser
Mt940Parser MT940 from bankstatementparser import Mt940Parser

ฟังก์ชั่นยูทิลิตี้

การทำงาน วัตถุประสงค์
detect_statement_format(path) ตรวจจับรูปแบบไฟล์อัตโนมัติ
create_parser(path, fmt) สร้างตัวแยกวิเคราะห์ที่เหมาะสม
parse_files_parallel(paths) แยกวิเคราะห์หลายไฟล์พร้อมกัน
iter_secure_xml_entries(zip_path) ทำซ้ำรายการ ZIP อย่างปลอดภัย

คลาสข้อมูล

ระดับ วัตถุประสงค์
Deduplicator ตรวจจับธุรกรรมที่ซ้ำกัน
DeduplicationResult ผลลัพธ์ที่มีการจับคู่ที่ไม่ซ้ำ ตรงทั้งหมด และต้องสงสัย
InputValidator ตรวจสอบเส้นทางและรูปแบบไฟล์
Transaction บันทึกธุรกรรมที่เป็นมาตรฐาน
FileResult ผลลัพธ์จากการแยกวิเคราะห์แบบขนาน
ZipXMLSource กระดาษห่อสมาชิก ZIP

ข้อยกเว้น

ข้อยกเว้น เมื่อถูกยกขึ้น
ParserError การแยกวิเคราะห์ความล้มเหลว
ExportError การส่งออกล้มเหลว (CSV/JSON/Excel)
ValidationError การตรวจสอบอินพุตล้มเหลว
ZipSecurityError ความล้มเหลวในการตรวจสอบความปลอดภัยของ ZIP