몇 초 만에 시작하기
pip install bankstatementparser
from bankstatementparser import create_parser, detect_statement_format
fmt = detect_statement_format("statement.xml")
parser = create_parser("statement.xml", fmt)
df = parser.parse() # pandas DataFrame, 바로 사용 가능
하나의 라이브러리, 여섯 가지 형식
CAMT.053, PAIN.001, CSV, OFX, QFX, MT940을 하나의 통합 API로 구조화된 pandas DataFrame으로 파싱합니다. 각 형식마다 별도의 패키지를 설치할 필요가 없습니다.
| 기능 | 은행 명세서 파서 | 단일 형식 OSS (mt940, ofxparse) | SaaS (Ocrolus, Parseur) |
|---|---|---|---|
| 지원 형식 | 6개, 통합 API | 각 1개 | 다수 (OCR 기반) |
| 데이터 프라이버시 | 100% 로컬, 네트워크 호출 없음 | 100% 로컬 | 외부로 데이터 전송 |
| 비용 | 무료, Apache 2.0 | 무료 | $49-$1,000+/월 |
| PII 마스킹 | 내장, 기본 활성화 | 없음 | 다양함 |
| 스트리밍 | 제한된 메모리 | 없음 | 해당 없음 |
| ZIP 보안 | 내장 보안 강화 | 없음 | 해당 없음 |
| 중복 제거 | 신뢰도 점수 포함 내장 | 없음 | 일부 |
ISO 20022 마이그레이션을 위해 구축
SWIFT는 확고한 기한을 설정했습니다: 모든 금융 기관은 2027년 11월까지 CAMT.053을 수신할 수 있어야 하며, MT940/MT942/MT950은 2028년 11월까지 완전히 폐기됩니다. 은행 명세서 파서는 레거시 MT940과 최신 ISO 20022 형식(CAMT.053, PAIN.001)을 단일 API로 처리하므로, 전환 기간과 그 이후에도 파싱 파이프라인이 작동합니다.
성능
- 27,000+ 트랜잭션/초 CAMT.053 파싱
- 52,000+ 트랜잭션/초 PAIN.001 파싱
- < 2 ms 첫 번째 결과까지의 시간
- 일정한 메모리 스트리밍으로 1K에서 50K+ 트랜잭션까지
- 467개 테스트 Python 3.9~3.14에서 100% 브랜치 커버리지
왜 이 파서인가?
- 형식 자동 감지:
detect_statement_format()이 파일을 자동으로 식별하고create_parser()가 올바른 파서를 반환합니다. - 프라이버시 우선: PII 마스킹이 기본으로 활성화됩니다. 민감한 필드(이름, IBAN, 주소)가 CLI 출력에서 마스킹됩니다. 필요할 때
--show-pii로 활성화하세요. - 프로덕션 준비 완료: 안전한 ZIP 처리(폭탄 방지, 암호화된 항목 거부), 입력 유효성 검사, 경로 탐색 방지.
- 유연한 출력: CSV, JSON, Excel로 내보내기 또는 Polars DataFrame으로 변환.
- 병렬 처리:
parse_files_parallel()로 여러 파일을 동시에 파싱.