Come posso distinguere un PDF creato digitalmente da un PDF ricercabile?

Aug 19 2020

Attualmente sto analizzando una serie di file PDF. Voglio sapere quanti file PDF rientrano in queste 3 categorie:

  • PDF creato digitalmente: il testo è lì (copiabile) ed è garantito per essere corretto poiché è stato creato direttamente, ad esempio da Word
  • PDF di sole immagini: un documento scansionato
  • PDF ricercabile: un documento scansionato, ma è stato utilizzato un motore OCR. Il motore OCR inserisce il testo "sotto" l'immagine in modo che tu possa cercare / copiare il contenuto. Poiché l'OCR è abbastanza buono, questo è corretto il più delle volte. Ma non è garantito che sia corretto.

È facile identificare i PDF di sole immagini nel mio dominio poiché ogni PDF contiene testo. Se non riesco a estrarre alcun testo, è solo immagine. Ma come faccio a sapere se si tratta "solo" di un PDF ricercabile o se si tratta di un PDF creato digitalmente?

A proposito, non è così semplice come guardare il produttore perché ho visto documenti scansionati in cui il campo del produttore diceva "Microsoft Word".

Nota: come essere umano, è facile. Ho solo ingrandito il testo. Se vedo pixel, è "solo" ricercabile.

Ecco 3 file PDF di esempio per testare le soluzioni:

  • PDF creato digitalmente
  • PDF scansionato : beh ... non proprio; Ho usato uno script per creare immagini e poi metterle insieme come PDF. Ma questo significa solo che la qualità è molto buona. Dovrebbe essere molto simile a una scansione.
  • PDF ricercabile

Quello che ho provato / pensato

  • Utilizzando il creatore / produttore : vedo "Microsoft Word" nei documenti scansionati. Anche questo sarebbe noioso.
  • Caratteri incorporati : è possibile estrarre i caratteri incorporati . L'idea era che un documento scansionato non avesse caratteri incorporati ma usasse solo i caratteri predefiniti. L'idea era sbagliata, come si può vedere con l'esempio.

Risposte

2 JorjMcKie Aug 20 2020 at 14:47

Con PyMuPDF puoi rimuovere facilmente tutto il testo come richiesto per il suggerimento di @ypnos.

In alternativa, con PyMuPDF puoi anche verificare se il testo è nascosto in un PDF. Nella "mini-lingua" pertinente del PDF questo viene attivato dal comando 3 Tr("modalità di rendering del testo", ad es. Vedere pagina 402 dihttps://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/pdf_reference_1-7.pdf). Quindi, se tutto il testo è sotto l'influenza di questo comando, nessuno di esso verrà reso - consentendo la conclusione "questa è una pagina con OCR".