Pdf sang csv python

Tôi đang sử dụng PYPDF2 để nhận số lượng trang trong PDF và sử dụng nó để lặp qua từng 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

Vui lòng chỉnh 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 trong khung dữ liệu xuất sắc cấu trúc. Hãy để tôi chỉ cho bạn cách làm

Ảnh của Johannes Groll trên unsplash

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. Thư viện pip install tabula-pytabula-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-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. 😎

bảng. 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 đang 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ả]

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

Bạn có thể nhanh chóng nhìn 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á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ẽ 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 đổi 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ễ sửa chữa. 😄

Suy nghĩ cuối cùng

Trong bài viết này, chúng tôi đã thấy công 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 xuống dưới dạng khung dữ liệu cấ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 tiếp các bảng để không quán nhất. Hầu hết thời gian bất kỳ quán nào không nhất 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. lạc đà. 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, bở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 Phương tiện 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à hơn thế nữa từ các tác giả tuyệt vời khác trên nền tảng này. 🙏 Nếu bạn muốn hỗ trợ tôi, hãy cân nhắc tham gia phương tiện bằng liên kết giới thiệu của tôi. Điều này sẽ cung cấp cho bạn quyền truy cập vào tất cả các bài viết của tôi và hơn thế nữa từ các tác giả tuyệt vời khác trên nền tảng này. 🙏

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 sang 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

Chủ Đề