ความเป็นส่วนตัวของข้อมูลและการปฏิบัติตามข้อกำหนด
มีข้อมูลใดออกจากโครงสร้างพื้นฐานของฉันหรือไม่
ไม่ใช่ ตัวแยกวิเคราะห์ใบแจ้งยอดธนาคาร ทำงานเหมือนห้องสมุดไร้สัญชาติ การประมวลผลทั้งหมด - การแยกวิเคราะห์ การแก้ไข PII การแยกไฟล์เก็บถาวร - เกิดขึ้นภายในหน่วยความจำรันไทม์ในเครื่องของคุณ ไม่มีการเรียก API ไม่มีบริการคลาวด์ ไม่มีการวัดและส่งข้อมูลทางไกล ตัวแยกวิเคราะห์ XML นั้นแข็งแกร่งขึ้นด้วยno_network=Trueปิดกั้นการเข้าถึงขาออกทั้งหมดในระดับ parser ข้อมูลทางการเงินของคุณจะไม่ละทิ้งสภาพแวดล้อมของคุณ
การแก้ไข PII ทำงานอย่างไร
ฟิลด์ที่ละเอียดอ่อนจะถูกมาสก์ก่อนที่จะถึงตรรกะของแอปพลิเคชันของคุณ parser ระบุชื่อลูกหนี้ ชื่อเจ้าหนี้ IBAN และที่อยู่ทางไปรษณีย์ โดยแทนที่ด้วย***REDACTED***ในเอาต์พุตคอนโซลและโหมดสตรีมมิ่ง
- การปกปิดเปิดอยู่ตามค่าเริ่มต้น ในเอาต์พุต CLI และโหมดสตรีมมิ่ง
- การส่งออกไฟล์ (CSV, JSON, Excel) จะเก็บข้อมูลที่ยังไม่ได้แก้ไขสำหรับการประมวลผลดาวน์สตรีม
- เลือกรับ ข้อมูลให้ครบถ้วนด้วย
--show-piiบน CLI หรือredact_pii=Falseใน API
กระบวนการสกัดมีการกำหนดหรือไม่?
ใช่ -- เอาต์พุตที่เหมือนกันแบบไบต์ทุกครั้งที่รัน เนื่องจากไฟล์อินพุตเดียวกัน parser จะให้ผลลัพธ์ที่เหมือนกันทุกครั้ง ไม่มีการสุ่ม ไม่มีการอนุมานแบบจำลอง ไม่มีการสุ่มตัวอย่างแบบฮิวริสติก CI บังคับใช้การกำหนดด้วยการทดสอบ 467 รายการที่ครอบคลุมสาขา 100% รวมถึงการคลุมเครือตามคุณสมบัติผ่านสมมติฐาน
โครงการปฏิบัติตามมาตรฐานการปฏิบัติตามข้อกำหนดอะไรบ้าง
โครงการดูแลรักษาเอกสารตามมาตรฐาน ISO 13485 พร้อมสามารถตรวจสอบย้อนกลับได้อย่างสมบูรณ์:
- การลงทะเบียนความเสี่ยง เชิงปริมาณพร้อมการให้คะแนนความรุนแรง/ความน่าจะเป็นและการประเมินความเสี่ยงคงเหลือ
- แผนการตรวจสอบและการตรวจสอบความถูกต้อง พร้อมด้วยขั้นตอนที่มีรั้วรอบขอบชิด 19 ขั้นใน 5 เฟส
- ขั้นตอนการควบคุมการเปลี่ยนแปลง พร้อมการประเมินผลกระทบและโปรโตคอลการย้อนกลับ
- SOUP Register ครอบคลุมการขึ้นต่อกันทั้งหมดพร้อมระดับความเสี่ยงและการติดตาม EOL
- การออกแบบแผนที่ เมทริกซ์ความสามารถในการตรวจสอบย้อนกลับ เป็นปัจจัยอินพุตสำหรับการนำไปปฏิบัติและการตรวจสอบ
ทุกการเปิดตัวจะมี CycloneDX SBOM, Checksums SHA-256 และการรับรองแหล่งที่มาของบิวด์ GitHub
ประสิทธิภาพและความสามารถในการขยายขนาด
ตัวแยกวิเคราะห์ใบแจ้งยอดบัญชีธนาคารเร็วแค่ไหน?
เกณฑ์ประสิทธิภาพได้รับการตรวจสอบใน CI ในทุกคอมมิต:
| เมตริก | ค่า |
|---|---|
| ปริมาณงาน CAMT.053 | 27,000+ ธุรกรรม/วินาที |
| ปริมาณงาน PAIN.001 | 52,000+ ธุรกรรม/วินาที |
| เวลาแฝงต่อธุรกรรม (CAMT) | 37 ไมโครวินาที |
| เวลาแฝงต่อธุรกรรม (PAIN.001) | 19 ไมโครวินาที |
| ถึงเวลาผลลัพธ์ครั้งแรก | < 2 มิลลิวินาที |
ไฟล์ขนาดใหญ่จัดการอย่างไร?
การสตรีมด้วยหน่วยความจำแบบจำกัด -- ทดสอบที่ธุรกรรม 50,000 รายการต่อไฟล์ การใช้งานparse_streaming()เพื่อประมวลผลไฟล์ XML แบบค่อยเป็นค่อยไป แต่ละธุรกรรมจะให้ผลเป็นพจนานุกรม องค์ประกอบจะถูกล้างหลังการประมวลผลเพื่อป้องกันการเติบโตของหน่วยความจำ หน่วยความจำไม่ได้ปรับขนาดตามขนาดไฟล์ -- การทดสอบธุรกรรม 50K (25+ MB) ใช้หน่วยความจำน้อยกว่า 2 เท่าของการทดสอบธุรกรรม 10K
สำหรับไฟล์ที่มีขนาดเกิน 50 MB (เช่น ชุดงาน PAIN.001 จากโฮสต์ถึงโฮสต์ที่มีการชำระเงินมากกว่า 100,000 รายการ) ตัวแยกวิเคราะห์จะสตรีมผ่านไฟล์ชั่วคราวที่มีการแยกเนมสเปซแบบก้อน เอกสารฉบับเต็มจะไม่ถูกโหลดลงในหน่วยความจำ
ไฟล์ ZIP ได้รับการประมวลผลอย่างปลอดภัยอย่างไร
iter_secure_xml_entries()ตรวจสอบสมาชิกแต่ละคนก่อนทำการแยก:
- ขนาดรายการสูงสุด (ค่าเริ่มต้น 10 MB ต่อรายการ)
- ขนาดสูงสุดที่ไม่มีการบีบอัดทั้งหมด (ค่าเริ่มต้นคือ 50 MB)
- ขีดจำกัดอัตราส่วนการบีบอัด (ค่าเริ่มต้น 100:1) เพื่อป้องกันการระเบิด ZIP
- การปฏิเสธรายการเข้ารหัส
ไม่มีไฟล์ถูกเขียนลงดิสก์ ไบต์ XML ส่งผ่านไปยัง parser โดยตรงผ่านfrom_bytes().
ฉันสามารถแยกวิเคราะห์หลายไฟล์พร้อมกันได้หรือไม่
ใช่ การใช้งานparse_files_parallel()ซึ่งกระจายงานไปทั่วProcessPoolExecutor:
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")
รูปแบบที่รองรับ
รองรับรูปแบบใบแจ้งยอดธนาคารรูปแบบใดบ้าง
| รูปแบบ | มาตรฐาน | ประเภทไฟล์ | พาร์เซอร์คลาส |
|---|---|---|---|
| บมจ.053 | ใบแจ้งยอดธนาคารต่อลูกค้า ISO 20022 | .xml |
CamtParser |
| เพน.001 | การเริ่มต้นการโอนเครดิต ISO 20022 | .xml |
Pain001Parser |
| ซีเอสวี | การส่งออกของธนาคารทั่วไป | .csv |
CsvStatementParser |
| โอเอฟเอ็กซ์ | เปิดการแลกเปลี่ยนทางการเงิน | .ofx |
OfxParser |
| คิวเอฟเอ็กซ์ | เร่งการแลกเปลี่ยนทางการเงิน | .qfx |
QfxParser |
| MT940 | มาตรฐานสวิฟท์ | .mt940, .sta |
Mt940Parser |
parser จัดการภาษาเฉพาะของธนาคารของ CAMT.053 หรือไม่
ใช่ -- ไม่เชื่อเรื่องเนมสเปซตามการออกแบบ ตัวแยกวิเคราะห์จะแยกเนมสเปซ XML ก่อนประมวลผล โดยจัดการตัวแปร CAMT.053 ใดๆ (camt.053.001.02, camt.053.001.04หรือเครื่องห่อธนาคารที่เป็นกรรมสิทธิ์) โดยไม่มีการกำหนดค่าเฉพาะเนมสเปซ XPath สืบค้นโครงสร้างองค์ประกอบเป้าหมาย ไม่ใช่ URI เนมสเปซ
สำหรับธนาคารที่ห่อ CAMT ในซองจดหมายแบบกำหนดเอง ให้ใช้from_string()หรือfrom_bytes()เพื่อป้อนเอกสารภายในโดยตรง
ฉันสามารถแมปส่วนหัวคอลัมน์ CSV ที่กำหนดเองกับสคีมามาตรฐานได้หรือไม่
ใช่ -- การทำให้เป็นมาตรฐานอัตโนมัติ การกำหนดค่าเป็นศูนย์CsvStatementParserรู้จักรูปแบบส่วนหัวทั่วไป:"Date", "Transaction Date", "Booking Date"แผนที่ทั้งหมดไปที่dateสนาม."Amount", "Value", "Sum"แผนที่ไปที่amount. แยกคอลัมน์เครดิต/เดบิต (เช่น"Credit"และ"Debit") จะถูกตรวจพบและรวมเป็นจำนวนเงินที่ลงนามเพียงครั้งเดียวโดยอัตโนมัติ
รูปแบบผลลัพธ์คืออะไร?
ตัวแยกวิเคราะห์ทั้งหมดสร้าง DataFrames แพนด้ามาตรฐานพร้อมประเภทคอลัมน์ที่สอดคล้องกัน:
| รูปแบบ | คอลัมน์สำคัญ |
|---|---|
| แคมท์ | Amount, Currency, DrCr, Debtor, Creditor, Reference, ValDt, BookgDt, AccountId |
| เพน.001 | PmtInfId, PmtMtd, InstdAmt, Currency, CdtrNm, EndToEndId, MsgId, CreDtTm, NbOfTxs |
| CSV/OFX/QFX/MT940 | date, description, amount(ทำให้เป็นมาตรฐาน) |
คุณยังสามารถส่งออกเป็น CSV, JSON, Excel หรือแปลงเป็น Polars DataFrames
ขั้นตอนการทำงานของกระทรวงการคลัง
parser จัดการกับคำสั่งหลายสกุลเงินอย่างไร
ธุรกรรมแต่ละรายการจะคงสกุลเงินเดิมไว้ -- ไม่มีการแปลงโดยนัยCurrencyฟิลด์ถูกแยกออกจาก XMLCcyคุณลักษณะต่อธุรกรรม ใบแจ้งยอดหลายสกุลเงินจะยังคงเหมือนเดิม ที่get_account_balances()วิธีการคืนยอดคงเหลือเปิดและปิดต่อบัญชีด้วยรหัสสกุลเงินเดิม การกระทบยอดข้ามสกุลเงินจะเหลืออยู่ที่ลอจิกดาวน์สตรีมของคุณ ซึ่งคุณสามารถควบคุมแหล่งที่มาของอัตราแลกเปลี่ยนได้
parser รองรับทั้งรูปแบบขาออกและขาเข้าหรือไม่
ใช่.Pain001Parserจัดการไฟล์เริ่มต้นการโอนเครดิต ISO 20022 PAIN.001 (การชำระเงินขาออก)CamtParserจัดการไฟล์ใบแจ้งยอดระหว่างธนาคารกับลูกค้า CAMT.053 (การรายงานขาเข้า) ทั้งรองรับการสตรีม การแก้ไข PII และส่งออกเป็น CSV, JSON และ Excel ใช้detect_statement_format()เพื่อระบุรูปแบบโดยอัตโนมัติ
จะเกิดอะไรขึ้นเมื่อรายการธุรกรรมมีรูปแบบไม่ถูกต้อง?
ลักษณะการทำงานขึ้นอยู่กับโหมดการแยกวิเคราะห์:
parse()(โหมดแบตช์) -- รายการที่มีรูปแบบไม่ถูกต้องไม่มีฟิลด์บังคับ (Amount,Currency, หรือCdtDbtInd) จะถูกข้ามไปพร้อมกับบันทึกคำเตือน คำสั่งที่เหลือจะแยกวิเคราะห์ตามปกติparse_streaming()(โหมดสตรีมมิ่ง) -- ข้อผิดพลาดในการแยกวิเคราะห์จะเผยแพร่ทันทีเป็นข้อยกเว้น ไม่มีการสูญเสียข้อมูลอย่างเงียบ ๆ พฤติกรรมที่ล้มเหลวอย่างรวดเร็วนี้มีไว้สำหรับขั้นตอนการทำงานทางการเงินซึ่งทุกธุรกรรมจะต้องถูกนำมาพิจารณา
การขจัดข้อมูลซ้ำซ้อนทำงานอย่างไร
ที่Deduplicatorคลาสตรวจจับรายการที่ซ้ำกันทุกประการและการจับคู่ที่ต้องสงสัยพร้อมคะแนนความมั่นใจที่อธิบายได้:
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)}")
การติดตั้งและความเข้ากันได้
ฉันจะติดตั้ง ตัวแยกวิเคราะห์ใบแจ้งยอดธนาคาร ได้อย่างไร
pip install bankstatementparser
สำหรับการสนับสนุน Polars DataFrame ซึ่งเป็นอุปกรณ์เสริม:
pip install bankstatementparser[polars]
รองรับ Python เวอร์ชันใด
หลาม 3.9 ถึง 3.14 ทุกเวอร์ชันได้รับการทดสอบใน CI โดยมีการทดสอบ 467 ครั้งที่ครอบคลุมสาขา 100%
การพึ่งพาอาศัยกันคืออะไร?
ไลบรารีมีการขึ้นต่อกันโดยตรง 5 ประการ:
lxml-- การแยกวิเคราะห์ XML พร้อมการเสริมความปลอดภัย -pandas-- DataFrames และการจัดการข้อมูล -openpyxl- การส่งออก Excel -pydantic-- การตรวจสอบข้อมูลและแบบจำลอง -defusedxml-- การป้องกัน XXE
การอ้างอิงทั้งหมดมีเวอร์ชันที่ล็อคแฮช SHA-256 CycloneDX SBOM แมปทุกองค์ประกอบรันไทม์
ใช้งานได้บน macOS, Linux และ Windows หรือไม่
ใช่ ไลบรารีใช้งานได้บน macOS, Linux และ Windows (ผ่าน WSL) ไม่มีการพึ่งพาเฉพาะแพลตฟอร์ม
ความสามารถในการทำซ้ำและความปลอดภัย
ฉันจะตรวจสอบความสามารถในการทำซ้ำได้อย่างไร
python -m pytest # 467 tests, 100% branch coverage
python scripts/verify_locked_hashes.py # SHA-256 hash verification
git log --show-signature -1 # Verify commit signature
มีการป้องกันความปลอดภัยอะไรบ้าง?
- ความคุ้มครอง XXE:
resolve_entities=False,no_network=True,load_dtd=False - การป้องกัน ZIP Bomb: ขีดจำกัดอัตราส่วนการบีบอัด ขีดจำกัดขนาดรายการ การปฏิเสธรายการที่เข้ารหัส
- การป้องกันการข้ามเส้นทาง: รายการบล็อกรูปแบบที่เป็นอันตรายและความละเอียดของลิงก์สัญลักษณ์
- การตรวจสอบอินพุต: ขีดจำกัดขนาดไฟล์ (ค่าเริ่มต้น 100 MB) การตรวจสอบส่วนขยาย/รูปแบบ
- ห่วงโซ่อุปทาน: การขึ้นต่อกันแบบแฮชล็อค SHA-256, CycloneDX SBOM, การรับรองแหล่งที่มาของการสร้าง
- ข้อผูกพันที่ลงนาม: บังคับใช้ใน CI
ตัวแยกวิเคราะห์ใบแจ้งยอดธนาคาร เปรียบเทียบกับ pyiso20022 อย่างไร
pyiso20022 เป็นชุดเครื่องมือ ISO 20022 แบบกว้างที่สร้างคลาสข้อมูล Python จากสกีมา ISO XML ครอบคลุมข้อความ ISO 20022 หลายประเภท (PACS, PAIN, CAMT, ADMI) พร้อมการตรวจสอบความถูกต้องของสคีมา ตัวแยกวิเคราะห์ใบแจ้งยอดธนาคาร สร้างขึ้นโดยเฉพาะสำหรับการแยกวิเคราะห์ใบแจ้งยอดธนาคารด้วยการสนับสนุนการสตรีม การแก้ไข PII การขจัดข้อมูลซ้ำซ้อน และ API แบบรวมในหกรูปแบบ รวมถึงรูปแบบที่ไม่ใช่ ISO (CSV, OFX, QFX, MT940) หากคุณต้องการแยกวิเคราะห์ใบแจ้งยอดธนาคารลงใน DataFrames ที่มีการรักษาความปลอดภัยระดับการใช้งานจริง ให้ใช้ ตัวแยกวิเคราะห์ใบแจ้งยอดธนาคาร หากคุณต้องการทำงานกับแค็ตตาล็อกข้อความ ISO 20022 แบบเต็ม ให้ใช้ pyiso20022
กำหนดเวลาการย้ายข้อมูล SWIFT ISO 20022 คืออะไร
SWIFT ได้เผยแพร่ไทม์ไลน์การโยกย้ายแบบเป็นขั้นตอน:
- พฤศจิกายน 2026: ที่อยู่แบบมีโครงสร้างและแบบผสมมีผลบังคับใช้ ข้อความคำสั่งหลายคำสั่ง MT101 จะถูกปฏิเสธ การจัดการเคสระยะที่ 1 เริ่มต้นขึ้น
- พฤศจิกายน 2027: สถาบันการเงินทุกแห่งจะต้องสามารถรับใบแจ้งยอด CAMT.053 ได้ SWIFT จะหยุดแปลง MT เป็นรูปแบบ ISO
- พฤศจิกายน 2028: การเลิกใช้งาน MT940, MT942, MT950, MT900 และ MT910 โดยสมบูรณ์ สิ่งเหล่านี้จะถูกแทนที่ด้วย CAMT.052, CAMT.053 และ CAMT.054 ที่เทียบเท่า
ตัวแยกวิเคราะห์ใบแจ้งยอดธนาคาร รองรับทั้งรูปแบบ MT940 ดั้งเดิมและรูปแบบ CAMT.053/PAIN.001 ที่ทันสมัย ทำให้เหมาะสำหรับช่วงการเปลี่ยนแปลง