2010-03-08 11 views
8

¿Cuál es la mejor manera de verificar mediante programación si un archivo PDF es escaneado por completo? Tengo iText y PDFBox a mi disposición. Puedo verificar si un archivo PDF contiene texto o no, y de acuerdo con el resultado para decidir si este archivo está OCRed, pero esta solución no es 100% precisa. Me gustaría saber si hay otra forma de lidiar con el problema.Compruebe si se escanea un archivo PDF

Como comprenderá, la solución debe estar basada en Java.

+0

Oof. Esto suena como un proyecto de investigación de nivel de posgrado o doctorado, especialmente porque el documento escaneado también puede tener el texto disponible. ¡Suerte con ello! –

+1

OCRed pdf contendría texto, ese es el punto de reconocimiento óptico de caracteres. –

+1

cuando dice totalmente escaneado, ¿qué quiere decir? que todo en el documento es una imagen? que todo fue escaneado y luego convertido en texto con OCR? si tomo una foto con una cámara digital y luego la pego en Word, y luego imprimo en un PDF, ¿eso cuenta como una imagen "escaneada"? –

Respuesta

3

Lo mejor que puede hacer es comprobar si tiene texto y también si contiene una imagen de tamaño grande o muchas imágenes de mosaico que cubren la página. Si también verifica los metadatos, esto debería cubrir la mayoría de las opciones.

+1

Mark, Tu respuesta es la más cercana a lo que pensaba. Combinarlo con la sugerencia de Rowan de buscar recursos de texto/fuente y los fundidos de salida o márgenes de papel/libro de Gariel parece ser un buen punto de partida para mí. Gracias, Alex – Alex

+0

Creo que debería verificar las imágenes en páginas con OCR. Este método es utilizado por algunos lectores de PDF con éxito. Estoy tratando de pensar cómo hacerlo de manera óptima aquí http://stackoverflow.com/q/34092991/54964 –

1

En mi humilde opinión no puede decidirse con certeza. Pero puede probar algunas cosas, como buscar el texto, tratar de OCR el pdf y, dependiendo de la cantidad de texto reconocido, puede buscar algunos errores básicos de escaneo como desvanecimientos o márgenes de papel/libro.

+0

"... errores de escaneo básicos como desvanecimientos o márgenes de papel/libro." parece ser una buena idea – Alex

0

¿Tiene algún conocimiento de cómo se habría escaneado el documento, si fuera así? Si bien el elemento de metadatos "Creador" no es obligatorio, podría ser una pista útil si el escáner lo configura.

0

Simplemente lo juzgo por tamaño. Los documentos escaneados no son razonables. Por hasta 1000 páginas, mi regla de oro es: texto verdadero pdf: 1-20 M, el escaneado puede subir de 30 a 100 M.

1

Puede verificar si un PDF tiene algún recurso de fuente (una bonita buena indicación de si el documento contiene alguna fuente) usando la función HasFontResources en Quick PDF Library Lite - un componente ActiveX gratuito, que teóricamente podrías usar desde Java con la ayuda de un complemento de terceros.

La comprobación de recursos de texto/fuente es el método más preciso para determinar si un PDF puede haberse generado a partir de un proceso de escaneo. Eso junto con la sugerencia de Mark Stephens de buscar una imagen de gran tamaño de página, etc.

Desafortunadamente, no hay ningún método 100% garantizado para verificar si se escaneó un PDF.

+0

Esto no funcionará si PDF consta de ambos: páginas de texto y páginas de imágenes – user2988832

0
find ./ -name "*.pdf" -print0 | xargs -0 -I {} bash -c 'export file="{}"; if [ $(pdffonts "$file" 2> /dev/null | wc -l) -lt 3 ]; then echo "$file"; fi' 

Explicación: pdffonts file.pdf mostrará más de 2 líneas si el pdf contiene texto. Muestra los nombres de archivo de todos los archivos PDF que no contienen texto, por lo que se escanean los PDF.

Cuestiones relacionadas