Chào các bạn,
Dạo gần đây mình có làm việc nhiều với các file PDF chứa dữ liệu quan trọng và nhận thấy việc trích xuất thủ công tốn rất nhiều thời gian. Sau khi tìm hiểu, mình đã khám phá ra cách sử dụng Python để tự động hóa quá trình này, đặc biệt là với các file PDF có cấu trúc tương đối ổn định. Hôm nay, mình muốn chia sẻ lại kinh nghiệm này với mọi người trên diễn đàn.
Chúng ta sẽ sử dụng thư viện PyPDF2 để đọc nội dung từ file PDF và re (regular expression) để trích xuất các thông tin cần thiết.
Các bước thực hiện cơ bản:
- Cài đặt thư viện:
pip install pypdf2 - Mở và đọc file PDF.
- Duyệt qua từng trang để lấy nội dung văn bản.
- Sử dụng biểu thức chính quy để tìm kiếm và trích xuất dữ liệu mong muốn (ví dụ: mã số, ngày tháng, số tiền...).
- Lưu dữ liệu trích xuất được vào file CSV hoặc Excel để tiện xử lý tiếp.
Ví dụ đơn giản:
Giả sử chúng ta có một file PDF chứa các hóa đơn và muốn trích xuất 'Mã hóa đơn' và 'Tổng tiền'. Chúng ta có thể định nghĩa các mẫu regex tương ứng.
import PyPDF2
import re
def extract_data_from_pdf(pdf_path):
text = ""
with open(pdf_path, 'rb') as file:
reader = PyPDF2.PdfReader(file)
for page in reader.pages:
text += page.extract_text()
# Ví dụ regex cho Mã hóa đơn (giả định định dạng HD-XXXXX)
invoice_codes = re.findall(r'HD-\d{5}', text)
# Ví dụ regex cho Tổng tiền (giả định có dấu phẩy và đơn vị VNĐ)
amounts = re.findall(r'\d{1,3}(?:,\d{3})*\s*VNĐ', text)
return invoice_codes, amounts
# Sử dụng hàm
pdf_file = 'path/to/your/invoice.pdf'
invoices, total_amounts = extract_data_from_pdf(pdf_file)
print("Mã hóa đơn:", invoices)
print("Tổng tiền:", total_amounts)
Lưu ý rằng việc xây dựng biểu thức chính quy (regex) có thể cần điều chỉnh tùy thuộc vào định dạng cụ thể của file PDF bạn đang xử lý. Đối với các file PDF có cấu trúc phức tạp hoặc là ảnh scan, bạn có thể cần kết hợp thêm các thư viện OCR như pytesseract.
Hy vọng chia sẻ này hữu ích cho các bạn đang cần xử lý dữ liệu từ file PDF. Nếu có câu hỏi hoặc có cách nào hay hơn, đừng ngần ngại chia sẻ nhé!