Xây dựng Công Cụ Phân Tích PDF cho Bảng Sao Kê HDFC: Từ 165 Trang sang CSV trong Vài Phút
🚀 Kho lưu trữ GitHub | ⭐ Nhấn sao nếu bạn thấy hữu ích!
Vấn Đề Khởi Đầu
Hãy tưởng tượng bạn là một kiểm toán viên, kế toán hoặc nhà phân tích tài chính, đang đối diện với một bảng sao kê ngân hàng HDFC dài 165 trang với 3,602 giao dịch cần chuyển đổi sang định dạng CSV. Quá trình thủ công sẽ mất vài ngày, và nguy cơ xảy ra lỗi là rất lớn.
Đó chính là thách thức tôi đã gặp phải gần đây, và nó đã dẫn tôi đến việc xây dựng một giải pháp mã nguồn mở mà tôi rất vui được chia sẻ với cộng đồng.
Giải Pháp: Công Cụ Chuyển Đổi PDF HDFC sang CSV
Tôi đã tạo ra một công cụ bằng Python tự động trích xuất tất cả các giao dịch từ bảng sao kê PDF của ngân hàng HDFC và chuyển đổi chúng sang định dạng CSV với phân loại thông minh. Dưới đây là những gì nó đạt được:
- ✅ Tỷ lệ trích xuất 100% từ các tập tin PDF dài 165 trang
- ✅ 3,602 giao dịch được xử lý tự động
- ✅ 22 danh mục tự động (UPI, Ngoại tệ, Lương, v.v.)
- ✅ Hỗ trợ mô tả nhiều dòng cho các giao dịch phức tạp
- ✅ Nhiều định dạng đầu ra (CSV, Excel, Markdown)
- ✅ Giao diện dòng lệnh cho khả năng tự động hóa dễ dàng
Bắt Đầu Nhanh
bash
# Clone kho lưu trữ
git clone https://github.com/vishwaraja/hdfc-pdf-converter.git
cd hdfc-pdf-converter
# Cài đặt các phụ thuộc
pip install -r requirements.txt
# Chuyển đổi PDF đầu tiên của bạn (tạo thư mục ./results/ tự động)
python src/hdfc_converter.py your_statement.pdf
Khám Phá Kỹ Thuật
Công Nghệ Sử Dụng
bash
# Các phụ thuộc chính
camelot-py[cv] # Trích xuất bảng từ PDF
pandas # Xử lý dữ liệu
PyPDF2 # Xử lý PDF
pdfplumber # Trích xuất văn bản
Thách Thức: Mô Tả Nhiều Dòng
Một trong những thách thức lớn nhất là xử lý các giao dịch mà mô tả kéo dài nhiều dòng. Dưới đây là cách tôi giải quyết:
python
def _parse_transaction_row(self, row, page_num):
"""Phân tích một dòng giao dịch với hỗ trợ nhiều dòng."""
# Xử lý mô tả nhiều dòng
narration_parts = []
# Mọi thứ giữa ngày và số tiền là mô tả
narration_start = 1
narration_end = len(row) - 5
for i in range(narration_start, narration_end):
part = str(row.iloc[i]).strip()
if part and part != 'nan':
narration_parts.append(part)
narration = ' '.join(narration_parts)
return narration
Phân Loại Thông Minh
Công cụ này tự động phân loại các giao dịch vào 22 danh mục có ý nghĩa:
python
def categorize_transaction(narration):
narration_lower = str(narration).lower()
if any(word in narration_lower for word in ['salary', 'payroll', 'betterplace']):
return 'Lương & Việc làm'
elif any(word in narration_lower for word in ['foreign', 'usd', 'eur', 'gbp']):
return 'Ngoại tệ'
elif any(word in narration_lower for word in ['upi']):
return 'Thanh toán UPI'
# ... và 19 danh mục khác
Kết Quả Thực Tế
Dưới đây là những gì công cụ đạt được với bảng sao kê 165 trang của tôi:
| Chỉ số | Kết quả |
|---|---|
| Tổng số giao dịch | 3,602 |
| Số trang đã xử lý | 165/165 (100%) |
| Thời gian trích xuất | ~2 phút |
| Danh mục đã xác định | 22 |
| Chất lượng dữ liệu | 100% ngày hợp lệ |
Kết Quả Đầu Ra Mẫu
csv
Date,Narration,Category,Withdrawal_Amount,Deposit_Amount
15/07/2020,Thanh toán UPI cho thương nhân,Thanh toán UPI,150.00,0.00
16/07/2020,Tín dụng lương từ công ty,Lương & Việc làm,0.00,25000.00
17/07/2020,Giao dịch ngoại tệ từ Mỹ,Ngoại tệ,0.00,50000.00
Ví Dụ Sử Dụng
Giao Diện Dòng Lệnh
bash
# Sử dụng cơ bản (tạo thư mục ./results/ tự động)
python src/hdfc_converter.py statement.pdf
# Thư mục đầu ra tùy chỉnh
python src/hdfc_converter.py statement.pdf --output-dir ./my_results
# Ghi log chi tiết cho việc gỡ lỗi
python src/hdfc_converter.py statement.pdf --verbose
# Chuyển đổi PDF từ thư mục khác
python src/hdfc_converter.py /path/to/statements/hdfc_2024.pdf
API Có Thể Lập Trình
python
from src.hdfc_converter import HDFCConverter
# Khởi tạo công cụ chuyển đổi
converter = HDFCConverter('statement.pdf', output_dir='./results')
# Chuyển đổi PDF sang CSV
success = converter.convert()
if success:
print("✅ Chuyển đổi hoàn tất thành công!")
Tác Động
Công cụ này đã tiết kiệm cho tôi nhiều giờ làm việc thủ công và loại bỏ nguy cơ xảy ra lỗi sao chép. Nhưng quan trọng hơn, nó hiện đã có sẵn như một giải pháp mã nguồn mở cho toàn bộ cộng đồng.
Lợi Ích Chính cho Người Dùng:
- Kiểm toán viên: Chuyển đổi nhanh chóng bảng sao kê ngân hàng cho phân tích
- Kế toán viên: Tự động nhập dữ liệu từ bảng sao kê PDF
- Nhà phát triển fintech: Nền tảng cho việc xây dựng các công cụ ngân hàng
- Nhà phân tích dữ liệu: Dữ liệu CSV sạch cho phân tích tài chính
Mã Nguồn Mở và Cộng Đồng
Tôi đã làm cho công cụ này hoàn toàn mã nguồn mở với:
- 📚 Tài liệu toàn diện
- 🧪 Kiểm thử đơn vị và ví dụ
- 🤝 Hướng dẫn đóng góp
- 📋 Mẫu vấn đề và mẫu PR
- 🔄 Pipeline CI/CD
🔗 Kho lưu trữ: https://github.com/vishwaraja/hdfc-pdf-converter
Bước Tiếp Theo?
Tôi rất hào hứng khi thấy cộng đồng sẽ sử dụng và cải thiện công cụ này như thế nào. Một số cải tiến tiềm năng:
- Hỗ trợ định dạng PDF của ngân hàng khác
- Giao diện GUI cho người dùng không kỹ thuật
- Khả năng xử lý trên đám mây
- Tính năng lọc và tìm kiếm nâng cao
Bài Học Rút Ra
Xây dựng công cụ này đã dạy tôi một số bài học quý giá:
- Phân tích PDF là phức tạp - Các ngân hàng sử dụng các định dạng khác nhau
- Dữ liệu nhiều dòng là khó - Cần có logic phân tích cẩn thận
- Phân loại cần trí thông minh - Regex đơn giản không đủ
- Tài liệu là rất quan trọng - Giúp công cụ dễ tiếp cận hơn với người khác
- Mã nguồn mở là sức mạnh - Phản hồi từ cộng đồng cải thiện mọi thứ
Bắt Đầu
Sẵn sàng thử nghiệm? Đây là cách bắt đầu:
bash
# Clone kho lưu trữ
git clone https://github.com/vishwaraja/hdfc-pdf-converter.git
cd hdfc-pdf-converter
# Cài đặt các phụ thuộc
pip install -r requirements.txt
# Chuyển đổi PDF đầu tiên của bạn
python src/hdfc_converter.py your_statement.pdf
Kết Luận
Điều gì bắt đầu như một bài tập giải quyết vấn đề cá nhân đã trở thành một công cụ có thể mang lại lợi ích cho toàn bộ cộng đồng phát triển và tài chính. Đây là sức mạnh của mã nguồn mở - biến các giải pháp cá nhân thành tài nguyên cộng đồng.
Tôi rất muốn nghe ý kiến, đề xuất và trường hợp sử dụng của bạn. Bạn có gặp phải những thách thức tương tự với quy trình PDF không? Những công cụ ngân hàng nào khác sẽ hữu ích cho cộng đồng?
Kết nối với tôi:
- GitHub: @vishwaraja
- Email: vishwaraja.pathi@adiyogitech.com
- Kho lưu trữ: hdfc-pdf-converter
Có câu hỏi về phân tích PDF hoặc muốn đóng góp cho dự án? Để lại bình luận bên dưới - tôi rất vui được thảo luận!