ฉันจะแยกแยะ PDF ที่สร้างแบบดิจิทัลจาก PDF ที่ค้นหาได้อย่างไร

Aug 19 2020

ฉันกำลังวิเคราะห์ชุดไฟล์ 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" ในเอกสารที่สแกน นอกจากนี้สิ่งนี้จะน่าเบื่อ
  • ฝังตัวอักษร : คุณสามารถดึงฝังตัวอักษร แนวคิดคือเอกสารที่สแกนจะไม่มีฟอนต์ฝังตัว แต่ใช้ค่าเริ่มต้นเท่านั้น ความคิดนั้นผิดอย่างที่เห็นด้วยตัวอย่าง

คำตอบ

2 JorjMcKie Aug 20 2020 at 14:47

ด้วย 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"