ความต้องการ
- ไพธอน 3.9 ถึง 3.14
- การเข้าถึงเทอร์มินัล (macOS, Linux หรือ WSL)
ติดตั้ง
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:
--type {camt,pain001}-- ประเภทพาร์เซอร์ ---input <path>-- ไฟล์อินพุต ---output <csv_path>- ส่งออกเป็น CSV ---streaming-- สตรีมไฟล์ขนาดใหญ่ ---show-pii-- แสดงช่องที่ละเอียดอ่อน (แก้ไขโดยค่าเริ่มต้น) ---max-size <MB>-- ขีดจำกัดขนาดไฟล์
การตั้งค่าการพัฒนาท้องถิ่น
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 |