Tính năng này hoạt động vào tháng 5 năm 2020 bằng cách sử dụng PDFminer sáu trong Python3.
Cài đặt gói
$ pip install pdfminer.six
Nhập gói hàng
from pdfminer.high_level import extract_text
Sử dụng tệp PDF được lưu trên đĩa
text = extract_text('report.pdf')
Hay cách khác:
with open('report.pdf','rb') as f:
text = extract_text(open('report.pdf','rb'))
Sử dụng PDF đã có trong bộ nhớ
Nếu tệp PDF đã có trong bộ nhớ, chẳng hạn như nếu được truy xuất từ web với thư viện yêu cầu, nó có thể được chuyển đổi thành một luồng bằng io
thư viện:
import io
response = requests.get(url)
text = extract_text(io.BytesIO(response.content))
Hiệu suất và độ tin cậy so với PyPDF2
PDFminer.six hoạt động đáng tin cậy hơn PyPDF2 (không thành công với một số loại PDF nhất định), cụ thể là phiên bản PDF 1.7
Tuy nhiên, trích xuất văn bản bằng PDFminer.six chậm hơn đáng kể so với PyPDF2 theo hệ số 6.
Tôi đã hẹn giờ trích xuất văn bản timeit
trên MBP 15 "(2018), chỉ định thời gian cho chức năng trích xuất (không mở tệp, v.v.) với PDF 10 trang và nhận được kết quả sau:
PDFminer.six: 2.88 sec
PyPDF2: 0.45 sec
pdfminer.six cũng có một dấu ấn lớn, yêu cầu pycryptodome cần GCC và những thứ khác được cài đặt đẩy một hình ảnh docker cài đặt tối thiểu trên Alpine Linux từ 80 MB đến 350 MB. PyPDF2 không có tác động lưu trữ đáng chú ý.