ฉันจะแยกแยะ PDF ที่สร้างแบบดิจิทัลจาก PDF ที่ค้นหาได้อย่างไร
ฉันกำลังวิเคราะห์ชุดไฟล์ PDF ฉันต้องการทราบจำนวนไฟล์ PDF ใน 3 ประเภทดังกล่าว:
- PDF ที่สร้างแบบดิจิทัล: ข้อความอยู่ที่นั่น (คัดลอกได้) และรับประกันว่าถูกต้องตามที่สร้างขึ้นโดยตรงเช่นจาก Word
- PDF แบบรูปภาพเท่านั้น: เอกสารที่สแกน
- PDF ที่ค้นหาได้: เอกสารที่สแกน แต่มีการใช้เครื่องมือ OCR เครื่องมือ OCR จะใส่ข้อความ "ด้านล่าง" ของรูปภาพเพื่อให้คุณสามารถค้นหา / คัดลอกเนื้อหาได้ เนื่องจาก OCR ค่อนข้างดีจึงถูกต้องเกือบตลอดเวลา แต่ไม่รับประกันว่าจะถูกต้อง
เป็นเรื่องง่ายที่จะระบุไฟล์ PDF แบบรูปภาพเท่านั้นในโดเมนของฉันเนื่องจาก PDF ทุกไฟล์มีข้อความ ถ้าฉันไม่สามารถดึงข้อความใด ๆ ออกมามันเป็นเพียงรูปภาพเท่านั้น แต่จะทราบได้อย่างไรว่าเป็น PDF ที่ค้นหาได้ "เพียง" หรือเป็น PDF ที่สร้างขึ้นแบบดิจิทัล
ยังไงก็ตามมันไม่ง่ายเหมือนแค่มองไปที่โปรดิวเซอร์อย่างที่ฉันเห็นเอกสารสแกนที่ช่อง Producer พูดว่า "Microsoft Word"
หมายเหตุ: ในฐานะมนุษย์มันเป็นเรื่องง่าย ฉันแค่ขยายข้อความ ถ้าฉันเห็นพิกเซลแสดงว่า "แค่" ค้นหาได้
นี่คือไฟล์ PDF ตัวอย่าง 3 ไฟล์สำหรับการทดสอบโซลูชัน:
- PDF ที่สร้างแบบดิจิทัล
- สแกน PDF : อืม .. ไม่จริง ฉันใช้สคริปต์เพื่อสร้างรูปภาพแล้วรวมเข้าด้วยกันเป็น PDF แต่นั่นหมายความว่าคุณภาพดีมากเท่านั้น มันควรจะคล้ายกับการสแกนมาก
- PDF ที่ค้นหาได้
สิ่งที่ฉันพยายาม / คิดเกี่ยวกับ
- การใช้ผู้สร้าง / ผู้ผลิต : ฉันเห็น "Microsoft Word" ในเอกสารที่สแกน นอกจากนี้สิ่งนี้จะน่าเบื่อ
- ฝังตัวอักษร : คุณสามารถดึงฝังตัวอักษร แนวคิดคือเอกสารที่สแกนจะไม่มีฟอนต์ฝังตัว แต่ใช้ค่าเริ่มต้นเท่านั้น ความคิดนั้นผิดอย่างที่เห็นด้วยตัวอย่าง
คำตอบ
ด้วย PyMuPDF คุณสามารถลบข้อความทั้งหมดได้อย่างง่ายดายตามที่จำเป็นสำหรับคำแนะนำของ @ypnos
อีกทางเลือกหนึ่งด้วย PyMuPDF คุณยังสามารถตรวจสอบว่าข้อความถูกซ่อนอยู่ใน PDF หรือไม่ ใน "มินิภาษา" ที่เกี่ยวข้องของ PDF สิ่งนี้ถูกทริกเกอร์โดยคำสั่ง3 Tr
("โหมดการแสดงข้อความ" เช่นดูหน้า 402 ของhttps://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/pdf_reference_1-7.pdf). ดังนั้นหากข้อความทั้งหมดอยู่ภายใต้อิทธิพลของคำสั่งนี้จะไม่มีการแสดงผลใด ๆ - ทำให้ได้ข้อสรุป "นี่คือหน้า OCR'ed"