Trình phân tích sao kê ngân hàng

Các câu hỏi thường gặp về Trình phân tích sao kê ngân hàng

Quyền riêng tư và tuân thủ dữ liệu

Có dữ liệu nào rời khỏi cơ sở hạ tầng của tôi không?

Không. Trình phân tích bảng sao kê ngân hàng hoạt động như một thư viện không quốc tịch. Tất cả quá trình xử lý -- phân tích cú pháp, biên tập PII, trích xuất kho lưu trữ -- diễn ra trong bộ nhớ thời gian chạy cục bộ của bạn. Không có lệnh gọi API, không có dịch vụ đám mây, không có phép đo từ xa. Trình phân tích cú pháp XML được tăng cường vớino_network=True, chặn tất cả quyền truy cập gửi đi ở cấp độ trình phân tích cú pháp. Dữ liệu tài chính của bạn không bao giờ rời khỏi môi trường của bạn.

Việc biên tập PII hoạt động như thế nào?

Các trường nhạy cảm được che đi trước khi chúng tiếp cận logic ứng dụng của bạn. Trình phân tích cú pháp xác định tên người nợ, tên chủ nợ, IBAN và địa chỉ bưu chính, thay thế chúng bằng***REDACTED***ở chế độ phát trực tuyến và đầu ra bảng điều khiển.

  • Tính năng chỉnh sửa được bật theo mặc định ở chế độ phát trực tuyến và đầu ra CLI.
  • Xuất tệp (CSV, JSON, Excel) giữ lại dữ liệu chưa bị xóa để xử lý tiếp theo.
  • Chọn tham gia nhận dữ liệu đầy đủ với--show-piitrên CLI hoặcredact_pii=Falsetrong API.

Quá trình trích xuất có mang tính quyết định không?

Có -- đầu ra giống hệt byte trong mỗi lần chạy. Với cùng một tệp đầu vào, trình phân tích cú pháp luôn tạo ra cùng một kết quả. Không có sự ngẫu nhiên, không có suy luận mô hình, không có lấy mẫu heuristic. CI thực thi thuyết xác định với 467 bài kiểm tra ở mức độ bao phủ 100% chi nhánh, bao gồm cả việc làm mờ dựa trên thuộc tính thông qua Giả thuyết.

Dự án tuân theo những tiêu chuẩn tuân thủ nào?

Dự án duy trì tài liệu phù hợp với ISO 13485 với khả năng truy xuất nguồn gốc đầy đủ:

  • Đăng ký rủi ro được định lượng với điểm mức độ nghiêm trọng/xác suất và đánh giá rủi ro tồn dư.
  • Kế hoạch xác minh và xác thực với 19 bước kiểm soát trong 5 giai đoạn.
  • Quy trình kiểm soát thay đổi với các giao thức đánh giá tác động và khôi phục.
  • Đăng ký SOUP bao gồm tất cả các phần phụ thuộc có mức độ rủi ro và theo dõi EOL.
  • Đầu vào của thiết kế ánh xạ Ma trận truy xuất nguồn gốc phục vụ việc triển khai và xác minh.

Mỗi bản phát hành đều bao gồm tổng kiểm tra CycloneDX SBOM, SHA-256 và chứng thực xuất xứ bản dựng GitHub.

Hiệu suất và khả năng mở rộng

Trình phân tích sao kê ngân hàng nhanh như thế nào?

Ngưỡng hiệu suất được xác thực trong CI trên mọi cam kết:

Số liệu Giá trị
Thông lượng CAMT.053 Hơn 27.000 giao dịch/giây
Thông lượng PAIN.001 Hơn 52.000 giao dịch/giây
Độ trễ trên mỗi giao dịch (CAMT) 37 micro giây
Độ trễ trên mỗi giao dịch (PAIN.001) 19 micro giây
Thời gian đến kết quả đầu tiên < 2 mili giây

Các tệp lớn được xử lý như thế nào?

Truyền phát bằng bộ nhớ giới hạn -- được thử nghiệm ở 50.000 giao dịch trên mỗi tệp. Sử dụngparse_streaming()để xử lý dần dần các tệp XML. Mỗi giao dịch được mang lại dưới dạng từ điển; các phần tử sẽ bị xóa sau khi xử lý để ngăn chặn sự tăng trưởng bộ nhớ. Bộ nhớ không tăng theo kích thước tệp -- thử nghiệm giao dịch 50K (25+ MB) sử dụng ít hơn 2 lần bộ nhớ của thử nghiệm giao dịch 10K.

Đối với các tệp vượt quá 50 MB (ví dụ: các lô PAIN.001 từ máy chủ đến máy chủ có thanh toán trên 100K), trình phân tích cú pháp sẽ truyền qua một tệp tạm thời có tính năng loại bỏ không gian tên dựa trên đoạn -- toàn bộ tài liệu không bao giờ được tải vào bộ nhớ.

Các kho lưu trữ ZIP được xử lý an toàn như thế nào?

iter_secure_xml_entries()xác nhận từng thành viên trước khi trích xuất:

  • Giới hạn kích thước mục nhập (mặc định 10 MB cho mỗi mục nhập)
  • Tổng giới hạn kích thước không nén (mặc định 50 MB)
  • Giới hạn tỷ lệ nén (mặc định 100:1) để ngăn bom ZIP
  • Từ chối mục nhập được mã hóa

Không có tập tin nào được ghi vào đĩa. Các byte XML chuyển trực tiếp tới trình phân tích cú pháp thông quafrom_bytes().

Tôi có thể phân tích song song nhiều tệp không?

Có. Sử dụngparse_files_parallel()phân phối công việc trên mộtProcessPoolExecutor:

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

Định dạng được hỗ trợ

Hỗ trợ những định dạng sao kê ngân hàng nào?

Định dạng Tiêu chuẩn Các loại tệp Lớp phân tích cú pháp
CAMT.053 Tuyên bố giữa ngân hàng với khách hàng theo tiêu chuẩn ISO 20022 .xml CamtParser
ĐAU.001 Bắt đầu chuyển giao tín chỉ ISO 20022 .xml Pain001Parser
CSV Xuất khẩu ngân hàng tổng hợp .csv CsvStatementParser
OFX Sàn giao dịch tài chính mở .ofx OfxParser
QFX Trao đổi tài chính nhanh chóng .qfx QfxParser
MT940 Tiêu chuẩn SWIFT .mt940, .sta Mt940Parser

Trình phân tích cú pháp có xử lý các phương ngữ dành riêng cho ngân hàng của CAMT.053 không?

Có -- theo thiết kế không xác định được không gian tên. Trình phân tích cú pháp loại bỏ các không gian tên XML trước khi xử lý, xử lý mọi biến thể CAMT.053 (camt.053.001.02, camt.053.001.04hoặc trình bao bọc ngân hàng độc quyền) không có cấu hình dành riêng cho không gian tên. Truy vấn XPath cấu trúc phần tử đích, không phải URI vùng tên.

Đối với các ngân hàng bọc CAMT trong một phong bì tùy chỉnh, hãy sử dụngfrom_string()hoặcfrom_bytes()để nạp trực tiếp tài liệu bên trong.

Tôi có thể ánh xạ các tiêu đề cột CSV tùy chỉnh vào lược đồ chuẩn không?

Có -- tự động chuẩn hóa, không cấu hình.CsvStatementParsernhận ra các biến thể tiêu đề phổ biến:"Date", "Transaction Date", "Booking Date"tất cả bản đồ đếndatecánh đồng."Amount", "Value", "Sum"bản đồ tớiamount. Tách các cột tín dụng/ghi nợ (ví dụ:"Credit""Debit") được phát hiện và kết hợp thành một số tiền được ký tên một cách tự động.

Định dạng đầu ra là gì?

Tất cả các trình phân tích cú pháp đều tạo ra các DataFrames gấu trúc được tiêu chuẩn hóa với các loại cột nhất quán:

Định dạng Cột chính
CAMT Amount, Currency, DrCr, Debtor, Creditor, Reference, ValDt, BookgDt, AccountId
ĐAU.001 PmtInfId, PmtMtd, InstdAmt, Currency, CdtrNm, EndToEndId, MsgId, CreDtTm, NbOfTxs
CSV/OFX/QFX/MT940 date, description, amount(bình thường hóa)

Bạn cũng có thể xuất sang CSV, JSON, Excel hoặc chuyển đổi sang Polars DataFrames.

Quy trình làm việc của Kho bạc

Trình phân tích cú pháp xử lý các báo cáo đa tiền tệ như thế nào?

Mỗi giao dịch giữ nguyên loại tiền tệ ban đầu -- không có chuyển đổi tiềm ẩn.Currencytrường được trích xuất từ ​​XMLCcythuộc tính cho mỗi giao dịch. Báo cáo đa tiền tệ vẫn giữ nguyên. cácget_account_balances()phương thức trả về số dư đầu kỳ và cuối kỳ trên mỗi tài khoản với mã tiền tệ gốc. Việc đối chiếu giữa các loại tiền tệ được giao cho logic xuôi dòng của bạn, nơi bạn kiểm soát nguồn tỷ giá hối đoái.

Trình phân tích cú pháp có hỗ trợ cả định dạng gửi đi và gửi đến không?

Đúng.Pain001Parserxử lý các tệp khởi tạo chuyển khoản tín dụng ISO 20022 PAIN.001 (thanh toán đi).CamtParserxử lý các tệp sao kê từ ngân hàng đến khách hàng CAMT.053 (báo cáo đến). Cả hai đều hỗ trợ phát trực tuyến, biên tập PII và xuất sang CSV, JSON và Excel. Sử dụngdetect_statement_format()để tự động xác định định dạng.

Điều gì xảy ra khi mục nhập giao dịch không đúng định dạng?

Hành vi phụ thuộc vào chế độ phân tích cú pháp:

  • parse()(chế độ hàng loạt) -- Các mục nhập không đúng định dạng thiếu các trường bắt buộc (Amount, Currency, hoặcCdtDbtInd) bị bỏ qua kèm theo nhật ký cảnh báo. Phần còn lại của câu lệnh phân tích cú pháp bình thường.
  • parse_streaming()(chế độ phát trực tuyến) -- Lỗi phân tích cú pháp lan truyền ngay lập tức dưới dạng ngoại lệ. Không mất dữ liệu im lặng. Hành vi không nhanh chóng này là có chủ ý dành cho quy trình công việc tài chính trong đó mọi giao dịch đều phải được tính toán.

Tính năng chống trùng lặp hoạt động như thế nào?

cácDeduplicatorlớp phát hiện các bản sao chính xác và các kết quả trùng khớp bị nghi ngờ với điểm tin cậy có thể giải thích được:

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

Cài đặt và tương thích

Làm cách nào để cài đặt Trình phân tích sao kê ngân hàng?

pip install bankstatementparser

Để được hỗ trợ Polars DataFrame tùy chọn:

pip install bankstatementparser[polars]

Phiên bản Python nào được hỗ trợ?

Python 3.9 đến 3.14. Tất cả các phiên bản đều được thử nghiệm trong CI với 467 thử nghiệm với độ bao phủ 100% nhánh.

Sự phụ thuộc là gì?

Thư viện có 5 phụ thuộc trực tiếp:

  • lxml-- Phân tích cú pháp XML với việc tăng cường bảo mật -pandas-- DataFrames và thao tác dữ liệu -openpyxl-- Xuất Excel -pydantic-- Xác thực dữ liệu và mô hình -defusedxml-- Bảo vệ XXE

Tất cả các phần phụ thuộc đều có phiên bản khóa băm SHA-256. CycloneDX SBOM ánh xạ mọi thành phần thời gian chạy.

Nó có hoạt động trên macOS, Linux và Windows không?

Có. Thư viện hoạt động trên macOS, Linux và Windows (thông qua WSL). Nó không có sự phụ thuộc vào nền tảng cụ thể.

Khả năng tái tạo và bảo mật

Làm cách nào để xác minh khả năng tái tạo?

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

Những biện pháp bảo vệ an ninh nào được tích hợp sẵn?

  • Bảo vệ XXE:resolve_entities=False, no_network=True, load_dtd=False
  • Bảo vệ chống bom ZIP: Giới hạn tỷ lệ nén, giới hạn kích thước mục nhập, từ chối mục nhập được mã hóa
  • Ngăn chặn truyền tải đường dẫn: Giải pháp danh sách chặn và liên kết tượng trưng nguy hiểm
  • Xác thực đầu vào: Giới hạn kích thước tệp (mặc định 100 MB), xác thực tiện ích mở rộng/định dạng
  • Chuỗi cung ứng: Các phần phụ thuộc được khóa băm SHA-256, CycloneDX SBOM, chứng thực xuất xứ của bản dựng
  • Cam kết đã ký: Được thực thi trong CI

Trình phân tích sao kê ngân hàng so với pyiso20022 như thế nào?

pyiso20022 là bộ công cụ ISO 20022 rộng rãi tạo ra các lớp dữ liệu Python từ các lược đồ ISO XML. Nó bao gồm nhiều loại thông báo ISO 20022 (PACS, PAIN, CAMT, ADMI) với xác thực lược đồ. Trình phân tích bảng sao kê ngân hàng được xây dựng có mục đích để phân tích bảng sao kê ngân hàng với hỗ trợ phát trực tuyến, loại bỏ PII, chống trùng lặp và API hợp nhất trên sáu định dạng bao gồm các định dạng không phải ISO (CSV, OFX, QFX, MT940). Nếu bạn cần phân tích bảng sao kê ngân hàng thành DataFrames với mức độ bảo mật cấp sản xuất, hãy sử dụng Trình phân tích bảng sao kê ngân hàng. Nếu bạn cần làm việc với danh mục thông báo ISO 20022 đầy đủ, hãy sử dụng pyiso20022.

Thời hạn chuyển đổi SWIFT ISO 20022 là bao lâu?

SWIFT đã công bố dòng thời gian di chuyển theo từng giai đoạn:

  • Tháng 11 năm 2026: Địa chỉ có cấu trúc và địa chỉ kết hợp trở thành bắt buộc. Các thông báo đa lệnh MT101 sẽ bị từ chối. Quản lý trường hợp Giai đoạn 1 bắt đầu.
  • Tháng 11 năm 2027: Tất cả các tổ chức tài chính phải có khả năng nhận được bảng sao kê CAMT.053 nguyên gốc. SWIFT sẽ ngừng chuyển đổi MT sang định dạng ISO.
  • Tháng 11 năm 2028: Ngừng hoàn toàn MT940, MT942, MT950, MT900 và MT910. Chúng sẽ được thay thế bằng CAMT.052, CAMT.053 và CAMT.054 tương đương.

Trình phân tích báo cáo ngân hàng hỗ trợ cả định dạng MT940 cũ và định dạng CAMT.053/PAIN.001 hiện đại, khiến nó trở nên lý tưởng cho giai đoạn chuyển tiếp.