0
0
Lập trình
TT

Xây dựng Công Cụ Phân Tích PDF cho Bảng Sao Kê HDFC

Đăng vào 5 ngày trước

• 6 phút đọc

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 Copy
# 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 Copy
# 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 Copy
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 Copy
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 Copy
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 Copy
# 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 Copy
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á:

  1. 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
  2. Dữ liệu nhiều dòng là khó - Cần có logic phân tích cẩn thận
  3. Phân loại cần trí thông minh - Regex đơn giản không đủ
  4. 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
  5. 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 Copy
# 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:


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!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào