สิ่งนี้ใช้ได้ในเดือนพฤษภาคม 2020 โดยใช้ PDFminer six ใน Python3
การติดตั้งแพ็คเกจ
$ pip install pdfminer.six
การนำเข้าแพคเกจ
from pdfminer.high_level import extract_text
ใช้ PDF ที่บันทึกไว้ในดิสก์
text = extract_text('report.pdf')
หรืออีกทางหนึ่ง:
with open('report.pdf','rb') as f:
text = extract_text(f)
ใช้ PDF อยู่แล้วในหน่วยความจำ
หาก PDF อยู่ในหน่วยความจำแล้วตัวอย่างเช่นหากดึงมาจากเว็บด้วยไลบรารีคำขอก็สามารถแปลงเป็นสตรีมโดยใช้io
ไลบรารี:
import io
response = requests.get(url)
text = extract_text(io.BytesIO(response.content))
ประสิทธิภาพและความน่าเชื่อถือเมื่อเทียบกับ PyPDF2
PDFminer.six ทำงานได้อย่างน่าเชื่อถือมากกว่า PyPDF2 (ซึ่งล้มเหลวกับ PDF บางประเภท) โดยเฉพาะ PDF เวอร์ชัน 1.7
อย่างไรก็ตามการแยกข้อความด้วย PDFminer.six นั้นช้ากว่า PyPDF2 อย่างมีนัยสำคัญโดยมีค่าเท่ากับ 6
ฉันตั้งเวลาการแยกข้อความด้วยtimeit
MBP ขนาด 15 "(2018) กำหนดเวลาเฉพาะฟังก์ชันการแยก (ไม่มีการเปิดไฟล์เป็นต้น) ด้วย PDF 10 หน้าและได้ผลลัพธ์ดังต่อไปนี้:
PDFminer.six: 2.88 sec
PyPDF2: 0.45 sec
pdfminer.six ยังมีขนาดใหญ่โดยต้องใช้ pycryptodome ซึ่งต้องการ GCC และสิ่งอื่น ๆ ที่ติดตั้งโดยผลักดันอิมเมจนักเทียบท่าติดตั้งขั้นต่ำบน Alpine Linux จาก 80 MB เป็น 350 MB PyPDF2 ไม่มีผลกระทบในการจัดเก็บที่เห็นได้ชัดเจน