Hướng dẫn how do i convert a pdf to a dataframe in python? - làm cách nào để chuyển đổi pdf sang dataframe trong python?

Tôi đã tìm thấy một lối thoát. Tôi đang sử dụng liên kết Tabula-Py và PYPDF2.

Tôi đang sử dụng PYPDF2 để nhận số lượng trang trong PDF và sử dụng nó để lặp qua mỗi trang của tệp .pdf.

Và, Tabula được sử dụng để trích xuất dữ liệu và chuyển đổi nó thành DataFrame.

Hãy sửa nếu có cách tốt hơn để làm điều đó.

import pandas as pd
import numpy as np
from tabula import read_pdf_table
import PyPDF2

reader = PyPDF2.PdfFileReader(open('Your Path', mode='rb'))
m = reader.getNumPages()
#print(reader)
print(m)
for i in range(m):
    n = i+1

    if n==1:
        df = read_pdf_table('Your Path', pandas_options={'header': None, 'error_bad_lines': False}, pages=n)
        index = np.where(df[0].isnull())[0]
        sect = df.iloc[index[0]:index[-1]]
        s = []
        headers = []
        for col in sect:
            colnames = sect[col].dropna().values.flatten()
            (s.insert(len(s), colnames))
            pic = [' '.join(s[col])]
            for i in pic:
                headers.append(i)
        print(df)
        df.drop(sect, inplace=True)
        df.columns = headers
        new_df = pd.DataFrame(columns=headers)
        new_df = pd.concat([new_df, df], axis=0, ignore_index=True)

    else:
        df_2 = read_pdf_table('Your Path', pandas_options={'header': None, 'error_bad_lines': False, 'encoding': "ISO-8859-1"}, pages=n)
        df_2.drop(sect, inplace=True)
        df_2.columns = headers
        new_df = pd.concat([new_df, df_2], axis=0, ignore_index=True)

new_df.columns = headers
print(new_df)
new_df.to_csv('Your Path', index=False)

Vì vậy, bạn có một số tệp PDF với các bảng trong đó và muốn đọc chúng vào khung dữ liệu gấu trúc. Hãy để tôi chỉ cho bạn cách làm.

Ảnh của Johannes Groll trên unplash

Thành lập

Đối với mục đích của bài viết này, chúng tôi sẽ trích xuất các bảng từ tài liệu thống kê nhà ở được xuất bản bởi Homes England vào ngày 2 tháng 12. Một bản sao của tệp PDF có thể được tìm thấy ở đây.

Chúng tôi sẽ sử dụng thư viện Tabula-Py để trích xuất các bảng của chúng tôi từ các tệp PDF. Cài đặt nó bằng cách chạy: pip install tabula-pytabula-py library for extracting our tables from the pdf files. Install it by running: pip install tabula-py

Hãy chắc chắn rằng bạn đã cài đặt Java trong hệ thống của mình. Tham khảo tài liệu cho thư viện nếu bạn gặp bất kỳ lỗi cài đặt nào.

Ok, tất cả chúng ta đều được thiết lập để khai thác! 😎

Tabula: Trích xuất bảng PDF vào khung dữ liệu

Bây giờ, giả sử tệp PDF quan tâm nằm trong cùng một thư mục làm việc, hãy để cố gắng trích xuất các bảng ra khỏi nó. Để làm điều này, tất cả những gì chúng ta phải làm là như sau:

Mã Python để đọc các bảng từ tệp PDF bằng Tabula. (Nguồn: Tác giả)

Như bạn có thể thấy, mã rất tối thiểu và tự giải thích. Mã này trả về một danh sách các khung dữ liệu gấu trúc cho mỗi bảng riêng lẻ được trích xuất.

Bạn có thể nhanh chóng thấy số lượng bảng được trích xuất bằng cách chạy len(tables) sẽ trả về 9 cho ví dụ này. Nếu bạn có một cái nhìn vào tệp PDF được sử dụng cho bài viết này, có 9 bảng trong toàn bộ tài liệu.

Bây giờ, tất cả những gì chúng ta phải làm là lập chỉ mục thông qua danh sách để lấy từng bảng dưới dạng khung dữ liệu. Ví dụ: tables[0] sẽ trả lại bảng thứ nhất và tables[1] sẽ trả lại bảng thứ hai.

Bảng đầu tiên được trích xuất từ ​​tệp PDF bằng các bảng [0]. (Nguồn: Tác giả) Phiên bản thực tế của bảng đầu tiên được trích xuất từ ​​tệp PDF. (Nguồn: Tác giả) Bảng thứ hai được trích xuất từ ​​tệp PDF bằng cách sử dụng các bảng [1]. (Nguồn: Tác giả) Phiên bản thực tế của bảng thứ hai được trích xuất từ ​​tệp PDF. (Nguồn: Tác giả)

Ghi nhớ

Như bạn có thể thấy từ 2 ví dụ trên của các bảng được trích xuất, thư viện Tabula thực hiện một công việc tuyệt vời trong việc trích xuất các bảng ra khỏi PDFS. Nhưng, nó không phải lúc nào cũng sạch sẽ và chính xác. Đôi khi chúng ta sẽ phải làm một số việc làm sạch thủ công để:

  • sửa các tiêu đề của các bảng
  • Đã loại bỏ các hàng và cột không cần thiết
  • Các cột chia được hợp nhất với nhau.

Những vấn đề này thường nổi bật trong các bảng tiêu đề lồng nhau và dễ dàng sửa chữa. 😄

Suy nghĩ cuối cùng

Trong bài viết này, chúng tôi đã thấy việc trích xuất các bảng từ các tệp PDF dễ dàng như thế nào và tải chúng dưới dạng khung dữ liệu gấu trúc bằng thư viện Tabula. Thư viện thực hiện một công việc tuyệt vời trong việc trích xuất các bảng, nhưng chúng ta phải luôn xác minh trực quan các bảng để không nhất quán. Hầu hết thời gian bất kỳ sự không nhất quán nào có thể dễ dàng sửa chữa.

Để hoàn thiện, đáng để đề cập đến thư viện khác để trích xuất bảng PDF: Camelot. Mặc dù không được bao phủ ở đây, nhưng nó là một sự thay thế tuyệt vời cho Tabula. Không có sở thích giữa hai người, vì cả hai đều làm một công việc tuyệt vời.

Bây giờ bạn đã có các bảng của mình dưới dạng khung dữ liệu, hãy thoải mái điều khiển chúng đến nội dung trái tim của bạn. 😄

Hy vọng bạn thấy bài viết này hữu ích. Nếu bạn muốn hỗ trợ tôi, hãy cân nhắc tham gia Medium bằng cách sử dụng liên kết giới thiệu của tôi. Điều này sẽ cho phép bạn truy cập vào tất cả các bài viết của tôi và nhiều hơn nữa từ các tác giả tuyệt vời khác trên nền tảng này! 🙏 If you would like to support me, consider joining medium using my referral link. This will give you access to all my articles and more from other amazing authors on this platform! 🙏

Các bài viết khác của tôi mà bạn có thể thích:

Làm cách nào để chuyển đổi tệp PDF thành Python?

Trong bài viết này, bạn sẽ biết cách chuyển đổi tệp văn bản và văn bản thành PDF trong Python. FPDF là một lớp Python cho phép tạo các tệp PDF bằng mã python ...
Nhập lớp fpdf từ mô -đun fpdf ..
Thêm một trang ..
Đặt phông chữ ..
Chèn một ô và cung cấp văn bản ..
Lưu PDF với trên mạng. Tiện ích mở rộng PDF ..

Làm cách nào để tạo bảng dữ liệu từ PDF?

Đây là cách bạn có thể trích xuất các bảng từ tệp PDF bằng Excel:..
Mở bảng tính Excel của bạn ..
Chuyển đến tab Dữ liệu ..
Trong phần GET & Transform, nhấp vào GET dữ liệu ..
Từ danh sách, chọn từ tệp và sau đó chọn từ PDF. ....
Chọn tệp PDF bạn muốn trích xuất các bảng từ ..
Nhấp vào mở ..

Làm cách nào để chuyển đổi tệp PDF thành tệp CSV trong Python?

Khoa học dữ liệu thực tế sử dụng Python..
Đầu tiên, cài đặt gói yêu cầu bằng cách gõ PIP Cài đặt Tabula-Py vào lệnh lệnh ..
Bây giờ, đọc tệp bằng hàm read_pdf ("vị trí tệp", trang = number).Điều này sẽ trả về DataFrame ..
Chuyển đổi DataFrame thành tệp Excel bằng Tabula ..

Làm cách nào để trích xuất dữ liệu từ bảng PDF trong Python?

Làm thế nào để trích xuất các bảng từ PDF trong Python..
PIP3 Cài đặt Camelot-Py [CV] Tabula-Py ..
Nhập tệp Camelot # PDF để trích xuất các bảng từ File = "foo.pdf".
# Trích xuất tất cả các bảng trong bảng tệp PDF = Camelot.....
# Số lượng bảng được trích xuất in ("Tổng số bảng được trích xuất:", bảng. ....
Tổng số bảng được trích xuất: 1 ..