প্রয়োজনীয়তা
- Python 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) # মেমরি স্থির থাকে
ইন-মেমরি বিশ্লেষণ
ডিস্ক 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 (bankstatementparser[polars] প্রয়োজন)
polars_df = parser.to_polars()
CLI ব্যবহার
# বিশ্লেষণ ও প্রদর্শন
python -m bankstatementparser.cli --type camt --input statement.xml
# CSV-তে রপ্তানি
python -m bankstatementparser.cli --type camt --input statement.xml --output transactions.csv
# PII দেখিয়ে স্ট্রিম
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 রেফারেন্স
পার্সার ক্লাসসমূহ
| ক্লাস | ফরম্যাট | ইমপোর্ট |
|---|---|---|
CamtParser |
CAMT.053 (ISO 20022) | from bankstatementparser import CamtParser |
Pain001Parser |
PAIN.001 (ISO 20022) | from bankstatementparser import Pain001Parser |
CsvStatementParser |
CSV | from bankstatementparser import CsvStatementParser |
OfxParser |
OFX | from bankstatementparser import OfxParser |
QfxParser |
QFX | 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 নিরাপত্তা পরীক্ষা ব্যর্থতা |