Trích xuất các bảng từ python pdf được quét

Bài đăng này sẽ giới thiệu một số cách xóa bảng từ tệp PDF bằng Python. Để tìm hiểu thêm về cách cạo bảng và dữ liệu khác từ tệp PDF bằng R, hãy nhấp vào đây. Lưu ý, tùy chọn này sẽ chỉ hoạt động đối với các tệp PDF được nhập - không phải hình ảnh được quét

tabula-py

tabula-py là một gói rất hay cho phép bạn cạo các tệp PDF cũng như chuyển đổi các tệp PDF trực tiếp thành các tệp CSV. tabula-py có thể được cài đặt bằng pip

pip install tabula-py

Nếu bạn gặp sự cố với cài đặt, hãy kiểm tra điều này. Sau khi cài đặt, tabula-py rất dễ sử dụng. Dưới đây, chúng tôi sử dụng nó để cạo tất cả các bảng từ một bài báo về phân loại liên quan đến bộ dữ liệu Iris (có sẵn tại đây)

import tabula

file = "http://lab.fs.uni-lj.si/lasin/wp/IMIT_files/neural/doc/seminar8.pdf"

tables = tabula.read_pdf(file, pages = "all", multiple_tables = True)

Kết quả được lưu trữ trong các bảng là danh sách các khung dữ liệu tương ứng với tất cả các bảng được tìm thấy trong tệp PDF. Để tìm kiếm tất cả các bảng trong một tệp, bạn phải chỉ định tham số page = “all” và multiple_tables = True

Bạn cũng có thể sử dụng tabula-py để chuyển trực tiếp tệp PDF thành tệp CSV. Dòng đầu tiên bên dưới sẽ tìm bảng đầu tiên trong PDF và xuất nó thành CSV. Nếu chúng ta thêm tham số all = True, chúng ta có thể ghi tất cả các bảng của PDF vào CSV

# output just the first table in the PDF to a CSV
tabula.convert_into(file, "iris_first_table.csv")

# output all the tables in the PDF to a CSV
tabula.convert_into(file, "iris_all.csv", all = True)


tabula-py cũng có thể cạo tất cả các tệp PDF trong một thư mục chỉ bằng một dòng mã và thả các bảng từ mỗi tệp vào tệp CSV

tabula.convert_into_by_batch("/path/to/files", output_format = "csv", pages = "all")

Chúng ta có thể thực hiện thao tác tương tự, ngoại trừ thả các tệp ra JSON, như bên dưới

tabula.convert_into_by_batch("/path/to/files", output_format = "json", pages = "all")

lạc đà

Camelot là một khả năng khác để cạo các bảng từ các tệp PDF. Camelot có thể được cài đặt như vậy

pip install camelot-py[cv]

Camelot có một số phụ thuộc bổ sung, bao gồm GhostScript, được liệt kê tại đây. Sau khi cài đặt, chúng ta có thể sử dụng Camelot tương tự như tabula-py để cạo các bảng PDF

file = "http://lab.fs.uni-lj.si/lasin/wp/IMIT_files/neural/doc/seminar8.pdf"

tables = camelot.read_pdf(file, pages = "1-end")

Điều này trả về một đối tượng TableList. Để truy cập bất kỳ bảng nào được tìm thấy theo chỉ mục, bạn có thể thực hiện việc này

# get the 0th-indexed-table table
tables[0].df

# get the 3rd-indexed-table
tables[3].df

Một tính năng thú vị của Camelot là bạn cũng nhận được “báo cáo phân tích cú pháp” cho mỗi bảng đưa ra chỉ số chính xác, trang tìm thấy bảng và tỷ lệ phần trăm khoảng trắng có trong bảng

________số 8

Trích xuất các bảng từ python pdf được quét

Từ đây, chúng ta có thể thấy rằng bảng xác định được lập chỉ mục thứ 0 về cơ bản là khoảng trắng. Nếu chúng ta xem bản PDF thô, chúng ta có thể thấy không có bảng trên trang đó, vì vậy có thể bỏ qua khung dữ liệu trống này một cách an toàn

Giống như tabula-py, bạn có thể xuất tất cả các bảng đã loại bỏ thành một tệp. Camelot hỗ trợ (khi viết bài này) CSV, JSON, HTML và SQLite. Nếu bạn chọn CSV thì mặc định Camelot sẽ tạo 1 file CSV riêng cho từng bảng. Bạn có thể tạo tệp zip của các CSV này bằng cách thêm tham số nén = True. Chọn xuất sang excel sẽ tạo một sổ làm việc chứa một trang tính riêng cho mỗi bảng

# export all tables at once to CSV files
tables.export("camelot_tables.csv", f = "csv")

# export all tables at once to CSV files in a single zip
tables.export("camelot_tables.csv", f = "csv", compress = True)

# export each table to a separate worksheet in an Excel file
tables.export("camelot_tables.xlsx", f = "excel")

Nếu bạn chỉ muốn xuất một bảng, bạn có thể thực hiện giống như trong gấu trúc vì mỗi bảng riêng lẻ có thể được gọi là đối tượng khung dữ liệu

import tabula

file = "http://lab.fs.uni-lj.si/lasin/wp/IMIT_files/neural/doc/seminar8.pdf"

tables = tabula.read_pdf(file, pages = "all", multiple_tables = True)

0

Excalibur

Nếu bạn đang tìm kiếm một giao diện web để sử dụng để trích xuất các bảng PDF, bạn có thể xem Excalibur, được xây dựng trên Camelot

Nếu Camelot đã được cài đặt, bạn chỉ cần sử dụng pip để cài đặt Excalibur

import tabula

file = "http://lab.fs.uni-lj.si/lasin/wp/IMIT_files/neural/doc/seminar8.pdf"

tables = tabula.read_pdf(file, pages = "all", multiple_tables = True)

1

Bạn có thể bắt đầu với Excalibur từ dòng lệnh. Sau khi bạn mở dòng lệnh, chỉ cần gõ như sau

import tabula

file = "http://lab.fs.uni-lj.si/lasin/wp/IMIT_files/neural/doc/seminar8.pdf"

tables = tabula.read_pdf(file, pages = "all", multiple_tables = True)

2

Lệnh trên sẽ khởi tạo một cơ sở dữ liệu meta cần thiết cho ứng dụng. Tiếp theo, chạy lệnh bên dưới để khởi động máy chủ web qua Flask

Python có thể làm việc với các tệp PDF để trích xuất bảng dữ liệu không?

Có một số thư viện Python mà bạn có thể trích xuất dữ liệu từ tệp PDF. Ví dụ: bạn có thể sử dụng thư viện PyPDF2 để trích xuất văn bản từ các tệp PDF trong đó văn bản ở dạng tuần tự hoặc được định dạng. e. trong dòng hoặc hình thức. Bạn cũng có thể trích xuất bảng dưới dạng PDF thông qua thư viện Camelot .

Bạn có thể trích xuất một bảng từ PDF không?

Có nhiều phương pháp bạn có thể sử dụng để trích xuất bảng từ tệp PDF và sử dụng chúng trong bảng tính của mình. Bạn có thể sử dụng Excel và Power BI để trích xuất và nhập bảng từ PDF vào bảng tính của mình dưới dạng bảng được định dạng . Ngoài ra, bạn cũng có thể sử dụng Adobe Acrobat DC để xuất tệp PDF của mình dưới dạng tệp sổ làm việc Excel.