Một thẻ đã tồn tại với tên chi nhánh được cung cấp. Nhiều lệnh Git chấp nhận cả tên thẻ và tên nhánh, vì vậy việc tạo nhánh này có thể gây ra hành vi không mong muốn. Bạn có chắc chắn muốn tạo nhánh này không?
Tiết lộ. Bài đăng này có thể chứa các liên kết liên kết, nghĩa là khi bạn nhấp vào liên kết và mua hàng, chúng tôi sẽ nhận được hoa hồng
Bạn muốn xuất bảng từ file PDF bằng ngôn ngữ lập trình Python?
Camelot là một thư viện Python và một công cụ dòng lệnh giúp mọi người dễ dàng trích xuất các bảng dữ liệu bị mắc kẹt trong các tệp PDF, kiểm tra tài liệu chính thức và kho lưu trữ Github của họ
Trong khi Tabula-py là một trình bao bọc Python đơn giản của tabula-java, có thể đọc các bảng trong PDF. Nó cho phép bạn chuyển đổi tệp PDF thành CSV, TSV, JSON hoặc thậm chí là DataFrame của gấu trúc
Trong hướng dẫn này, bạn sẽ tìm hiểu cách trích xuất các bảng trong PDF bằng cách sử dụng cả thư viện camelot và tabula-py trong Python
Có liên quan. Cách trích xuất hình ảnh từ PDF bằng Python
Trước tiên, bạn cần cài đặt các phụ thuộc cần thiết để thư viện camelot hoạt động bình thường, sau đó bạn có thể cài đặt các thư viện bằng dòng lệnh
pip3 install camelot-py[cv] tabula-py
Lưu ý rằng bạn cần đảm bảo rằng bạn đã cài đặt đúng cách Tkinter và ghostscript [là các phần phụ thuộc cần thiết cho camelot] trong máy tính của bạn
Trích xuất các bảng PDF bằng Camelot
Bây giờ bạn đã cài đặt tất cả các yêu cầu cho hướng dẫn này, hãy mở một tệp Python mới và làm theo
import camelot
# PDF file to extract tables from
file = "foo.pdf"
Tôi có một tệp PDF trong thư mục hiện tại có tên là "foo. pdf" [lấy tại đây] là một trang PDF bình thường chứa một bảng được hiển thị trong hình ảnh sau
Chỉ là một bảng ngẫu nhiên, hãy giải nén nó bằng Python
# extract all the tables in the PDF file
tables = camelot.read_pdf[file]
hàm read_pdf[] trích xuất tất cả các bảng trong tệp PDF, hãy in số lượng bảng được trích xuất
# number of tables extracted
print["Total tables extracted:", tables.n]
kết quả này
Total tables extracted: 1
Chắc chắn rồi, nó chỉ chứa một bảng, in bảng này dưới dạng Khung dữ liệu Pandas
# print the first table as Pandas DataFrame
print[tables[0].df]
đầu ra
0 1 2 3 4 5 6
0 Cycle \nName KI \n[1/km] Distance \n[mi] Percent Fuel Savings
1 Improved \nSpeed Decreased \nAccel Eliminate \nStops Decreased \nIdle
2 2012_2 3.30 1.3 5.9% 9.5% 29.2% 17.4%
3 2145_1 0.68 11.2 2.4% 0.1% 9.5% 2.7%
4 4234_1 0.59 58.7 8.5% 1.3% 8.5% 3.3%
5 2032_2 0.17 57.8 21.7% 0.3% 2.7% 1.2%
6 4171_1 0.07 173.9 58.1% 1.6% 2.1% 0.5%
Điều đó chính xác, hãy xuất bảng thành tệp CSV
# export individually as CSV
tables[0].to_csv["foo.csv"]
CSV không phải là tùy chọn duy nhất, bạn cũng có thể sử dụng các phương pháp
import camelot
# PDF file to extract tables from
file = "foo.pdf"
6, import camelot
# PDF file to extract tables from
file = "foo.pdf"
7, import camelot
# PDF file to extract tables from
file = "foo.pdf"
8 và import camelot
# PDF file to extract tables from
file = "foo.pdf"
9, đây là một ví dụ xuất sang bảng tính Excelimport camelot
# PDF file to extract tables from
file = "foo.pdf"
2Hoặc nếu bạn muốn xuất tất cả các bảng trong một lần
import camelot
# PDF file to extract tables from
file = "foo.pdf"
3tham số f cho biết định dạng tệp, trong trường hợp này là "csv". Bằng cách đặt tham số nén bằng True, thao tác này sẽ tạo tệp ZIP chứa tất cả các bảng ở định dạng CSV
Bạn cũng có thể xuất các bảng sang định dạng HTML
import camelot
# PDF file to extract tables from
file = "foo.pdf"
0hoặc bạn cũng có thể xuất sang các định dạng khác như JSON và Excel
Điều đáng chú ý là Camelot chỉ hoạt động với các tệp PDF dựa trên văn bản chứ không phải tài liệu được quét. Nếu bạn có thể nhấp và kéo để chọn văn bản trong bảng của mình trong trình xem PDF, thì đó là PDF dựa trên văn bản, do đó, điều này sẽ hoạt động trên giấy tờ, sách, tài liệu, v.v.
Đọc thêm. Cách chia nhỏ tệp PDF bằng Python
Trích xuất các bảng PDF bằng Tabula-py
Mở một tệp Python mới và nhập tabula
import camelot
# PDF file to extract tables from
file = "foo.pdf"
1Chúng tôi chỉ đơn giản sử dụng phương pháp
# extract all the tables in the PDF file
tables = camelot.read_pdf[file]
0 để trích xuất các bảng trong tệp PDF [một lần nữa, hãy lấy ví dụ PDF tại đây]import camelot
# PDF file to extract tables from
file = "foo.pdf"
2Chúng tôi đặt
# extract all the tables in the PDF file
tables = camelot.read_pdf[file]
1 thành # extract all the tables in the PDF file
tables = camelot.read_pdf[file]
2 để trích xuất các bảng trong tất cả các trang PDF, phương thức # extract all the tables in the PDF file
tables = camelot.read_pdf[file]
3] trả về danh sách các # extract all the tables in the PDF file
tables = camelot.read_pdf[file]
4 gấu trúc, mỗi # extract all the tables in the PDF file
tables = camelot.read_pdf[file]
4 tương ứng với một bảng. Bạn cũng có thể chuyển một URL tới phương thức này và nó sẽ tự động tải xuống tệp PDF trước khi giải nén các bảngĐoạn mã dưới đây là một ví dụ về việc lặp qua tất cả các bảng được trích xuất và lưu chúng dưới dạng bảng tính Excel
import camelot
# PDF file to extract tables from
file = "foo.pdf"
3Điều này sẽ tạo thư mục
# extract all the tables in the PDF file
tables = camelot.read_pdf[file]
6 và đặt tất cả các bảng được phát hiện ở định dạng Excel vào thư mục đó, hãy dùng thửBây giờ, nếu bạn muốn trích xuất tất cả các bảng từ một tệp PDF và đổ chúng vào một tệp CSV thì sao?
import camelot
# PDF file to extract tables from
file = "foo.pdf"
4Nếu bạn có nhiều tệp PDF và bạn muốn chạy phần trên trên tất cả chúng, thì bạn có thể sử dụng phương pháp
# extract all the tables in the PDF file
tables = camelot.read_pdf[file]
7import camelot
# PDF file to extract tables from
file = "foo.pdf"
5Điều này sẽ xem xét thư mục
# extract all the tables in the PDF file
tables = camelot.read_pdf[file]
8 và xuất tệp CSV cho từng tệp PDF trong thư mục đóSự kết luận
Đối với các tệp lớn, thư viện camelot có xu hướng hoạt động tốt hơn tabula-py. Tuy nhiên, đôi khi bạn sẽ gặp phải
# extract all the tables in the PDF file
tables = camelot.read_pdf[file]
9 đối với một số tệp PDF khi sử dụng thư viện camelot, bạn có thể sử dụng tabula-py thay thếLưu ý rằng điều này sẽ không chuyển đổi các ký tự hình ảnh thành văn bản kỹ thuật số, nếu muốn, bạn có thể sử dụng các kỹ thuật OCR để chuyển đổi các ký tự quang học của hình ảnh thành văn bản thực tế có thể thao tác được trong Python, các hướng dẫn bên dưới có thể giúp bạn đáng kể
Dưới đây là một số hướng dẫn PDF có liên quan có thể giúp bạn trong công việc của mình
Để biết danh sách đầy đủ, hãy kiểm tra trang của danh mục
Được rồi, đây là hướng dẫn dành cho hướng dẫn này, hãy xem tài liệu chính thức của Camelot và tài liệu chính thức của tabula-py để biết thêm thông tin chi tiết
Kiểm tra mã đầy đủ ở đây
Lặn sâu hơn với Python
Cuối cùng, nếu bạn là người mới bắt đầu và muốn học Python, tôi khuyên bạn nên tham gia khóa học Python For Everyone Coursera, trong đó bạn sẽ học được nhiều điều về Python, chúc may mắn