¿Cómo puedo distinguir un PDF creado digitalmente de un PDF con capacidad de búsqueda?
Actualmente estoy analizando un conjunto de archivos PDF. Quiero saber cuántos de los archivos PDF se encuentran en esas 3 categorías:
- PDF creado digitalmente: el texto está allí (se puede copiar) y se garantiza que es correcto, ya que se creó directamente, por ejemplo, desde Word
- PDF de solo imagen: un documento escaneado
- PDF con capacidad de búsqueda: un documento escaneado, pero se utilizó un motor de OCR. El motor de OCR coloca texto "debajo" de la imagen para que pueda buscar / copiar el contenido. Como el OCR es bastante bueno, esto es correcto la mayor parte del tiempo. Pero no se garantiza que sea correcto.
Es fácil identificar archivos PDF de solo imagen en mi dominio, ya que todos los archivos PDF contienen texto. Si no puedo extraer ningún texto, es solo una imagen. Pero, ¿cómo puedo saber si es "solo" un PDF con capacidad de búsqueda o si es un PDF creado digitalmente?
Por cierto, no es tan simple como mirar al productor, ya que he visto documentos escaneados donde el campo Productor decía "Microsoft Word".
Nota: como humano, es fácil. Solo hago zoom en el texto. Si veo píxeles, "solo" se pueden buscar.
Aquí hay 3 archivos PDF de ejemplo para probar soluciones:
- PDF creado digitalmente
- PDF escaneado : Bueno ... no realmente; Usé un script para crear imágenes y luego las puse juntas como PDF. Pero eso solo significa que la calidad es muy buena. Debería ser muy similar a un escaneo.
- PDF con capacidad de búsqueda
Lo que intenté / pensé
- Usando el creador / productor : veo "Microsoft Word" en los documentos escaneados. Además, esto sería tedioso.
- Fuentes incrustadas : puede extraer fuentes incrustadas . La idea era que un documento escaneado no tuviera fuentes incrustadas, sino que solo usara las predeterminadas. La idea estaba mal, como se puede ver con el ejemplo.
Respuestas
Con PyMuPDF puede eliminar fácilmente todo el texto según lo requiera la sugerencia de @ypnos.
Como alternativa, con PyMuPDF también puede verificar si el texto está oculto en un PDF. En el "mini-lenguaje" relevante de PDF, esto se activa mediante el comando 3 Tr
("modo de representación de texto", por ejemplo, consulte la página 402 dehttps://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/pdf_reference_1-7.pdf). Entonces, si todo el texto está bajo la influencia de este comando, entonces no se procesará nada, lo que permite la conclusión "esta es una página con OCR".