Chào mọi người, dạo gần đây mình có làm việc với nhiều file PDF chứa các bảng biểu dữ liệu mà việc copy-paste thủ công tốn rất nhiều thời gian và dễ sai sót. Sau một thời gian tìm hiểu, mình đã tìm ra cách dùng Python để tự động hóa việc này, khá hiệu quả nên muốn chia sẻ với anh em trong chuyên mục Python trong Excel.
Thư viện mình dùng chủ yếu là tabula-py, một wrapper cho Tabula Java. Nó cho phép trích xuất bảng từ file PDF một cách dễ dàng.
Các bước cơ bản:
- Cài đặt thư viện:
pip install tabula-py pandas - Viết code Python để đọc file PDF và trích xuất bảng.
Ví dụ code đơn giản:
import tabula
import pandas as pd
# Đường dẫn đến file PDF của bạn
pdffile = "du_lieu_cua_toi.pdf"
# Đọc tất cả các bảng trong file PDF
df_list = tabula.read_pdf(pdffile, pages='all', multiple_tables=True)
# Nếu bạn muốn kết hợp tất cả các bảng thành một DataFrame duy nhất
if df_list:
combined_df = pd.concat(df_list, ignore_index=True)
# Lưu DataFrame ra file Excel
combined_df.to_excel("du_lieu_trich_xuat.xlsx", index=False)
print("Đã trích xuất dữ liệu thành công!")
else:
print("Không tìm thấy bảng nào trong file PDF.")
Lưu ý là độ chính xác có thể phụ thuộc vào cấu trúc của file PDF. Với các file PDF được tạo từ bản scan thì có thể cần thêm các bước xử lý ảnh hoặc dùng OCR. Nhưng với các file PDF chuẩn, cách này rất hiệu quả.
Anh em nào đã từng thử qua hoặc có cách nào hay hơn thì chia sẻ thêm nhé!