Come posso distinguere un PDF creato digitalmente da un PDF ricercabile?
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
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".