Menu

Tự động hóa việc nhập liệu Excel từ PDF bằng Python

Hác Thiện Trà 07/06/2026 18:21 280 lượt xem 1 trả lời

Chào các anh em trong diễn đàn,

Dạo này mình đang làm một dự án cần nhập liệu từ các file PDF báo cáo sang Excel để phân tích. Việc copy-paste thủ công từng trang, từng file tốn khá nhiều thời gian và dễ sai sót. Mình tìm hiểu thì thấy có thể dùng Python để giải quyết vấn đề này, đặc biệt là với thư viện tabula-py.

tabula-py cho phép chúng ta trích xuất bảng (tables) từ file PDF một cách tự động. Sau đó, mình có thể dùng Pandas để xử lý và ghi dữ liệu đó vào file Excel.

Các bước cơ bản mình thực hiện như sau:

  • Cài đặt thư viện: pip install tabula-py pandas openpyxl
  • Sử dụng tabula.read_pdf() để đọc dữ liệu từ file PDF. Thư viện này có thể trả về một danh sách các DataFrame Pandas, tương ứng với các bảng tìm được trong file.
  • Kết hợp các DataFrame (nếu cần) và xử lý dữ liệu bằng Pandas.
  • Sử dụng df.to_excel() để lưu kết quả vào file Excel.

Ví dụ đơn giản để đọc bảng đầu tiên trong file PDF:

import tabula
import pandas as pd

file_pdf = 'bao_cao.pdf'
df_list = tabula.read_pdf(file_pdf, pages='all')

if df_list:
    df = df_list[0] # Lấy bảng đầu tiên
    df.to_excel('du_lieu_nhap.xlsx', index=False)
    print('Đã xuất dữ liệu sang Excel thành công!')
else:
    print('Không tìm thấy bảng nào trong file PDF.')

Cách này khá hiệu quả với các file PDF có cấu trúc bảng rõ ràng. Tuy nhiên, với các file PDF phức tạp hơn hoặc dạng scan thì cần kết hợp thêm các kỹ thuật OCR hoặc xử lý ảnh.

Có anh em nào đã từng làm việc này chưa? Chia sẻ thêm kinh nghiệm hoặc các thư viện Python khác hữu ích cho việc xử lý dữ liệu từ PDF sang Excel không ạ?

4

Hay quá bạn ơi! Mình cũng đang đau đầu với vụ nhập liệu PDF này. Thấy tabula-py với Pandas kết hợp với nhau đúng là giải pháp tuyệt vời. Bạn có thể chia sẻ thêm về cách bạn xử lý các trường hợp PDF có cấu trúc bảng không đồng nhất không? Đôi khi các báo cáo khác nhau có định dạng bảng khác nhau, không biết tabula-py có "cân" được hết không nhỉ?

0

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký