Agregar información de OCR a un PDF


28

Tengo un escaneo de buena calidad de un documento; dicho escaneo está en formato pdf.

¿Cómo puedo agregar información ocr al pdf para que se pueda buscar? Al buscar, me refiero a que el objetivo es que al ver el pdf con evidencia, CTRL-F realmente me permite buscar en el contenido del pdf.



44
@Jakob, no creo que sea un tonto, estamos preguntando cosas diferentes. La otra pregunta es sobre extraer texto de algún pdf (es decir, generar los archivos txt correspondientes), mientras que mi pregunta es sobre modificar el pdf para agregar información ocr y hacer que funcione la función de búsqueda en el lector de pdf. Aclararé la pregunta.
fdierre

¿Cómo y qué utilizó para escanear el documento?
Mitch

@ Mitch Usé mi impresora / copiadora / escáner Ricoh Aficio MP-C2500 de mi oficina, que tiene un alimentador de documentos muy agradable. :-)
fdierre

¿Software de escaneo y / o OCR?
Mitch

Respuestas:


21

pdfsandwich

Hace lo que quiere y proporciona paquetes de Ubuntu Deb. Utiliza tesseract como motor OCR. La siguiente llamada agrega la capa de texto a su PDF escaneado:

pdfsandwich scanned.pdf

Lo siguiente hace lo mismo pero con otro idioma (código ISO 639-2, tesseract-ocr-LANGCODEpaquete de descarga ) y configurando el diseño:

pdfsandwich  -verbose -lang spa -layout single scanned.pdf

Si obtiene algún error, descargue la última versión deb de Sourceforge .

Descargo de responsabilidad: soy el desarrollador de pdfsandwich y, por lo tanto, obviamente soy parcial.


66
Esto es realmente genial, gracias. Sin embargo, parece modificar las imágenes, parece que ejecuta una máscara de desenfoque sobre ellas o algo así. ¿Hay alguna manera de dejar las imágenes exactamente como estaban antes? En mi caso particular, el filtro incluso logró eliminar la barra de un par de fracciones en algunas ecuaciones. Sin embargo, todo lo demás funciona bastante bien ...
naught101

Paquete de mala calidad: `Resultados de verificación de Lintian para /tmp/pdfsandwich_0.1.3_amd64.deb: E: pdfsandwich: control-file-has-bad-permissions md5sums 0664! = 0644 E: pdfsandwich: control-file-has-bad-owner md5sums james / james! = root / root E: pdfsandwich: propietario de archivo incorrecto-uid-or-gid usr / 1000/1000 E: pdfsandwich: propietario de archivo incorrecto-uid-or-gid usr / bin / 1000 / 1000 E: pdfsandwich: mal-file-owner-uid-or-gid usr / bin / pdfsandwich ...
AB

Descargue la última versión deb de SF . Si obtiene un error al final, podría estar relacionado con ghostscript (v0.1.4). Ahora v0.1.6 utiliza pdfunite.
Pablo A

1
@PabloBianchi ¿Hay alguna forma de revisar manualmente el texto OCR pdfsandwitch? Estoy haciendo esto con algunos documentos suecos, y funciona bien, excepto por algunos errores ortográficos (probablemente debido a la fuente del original) que serían fáciles de corregir si se tratara de un archivo de texto, pero ¿cómo puedo hacer esto en el PDF resultante? ?
zrajm

@zrajm puede usar algunos de los parámetros de pdfsandwich para un mejor reconocimiento en el paso OCR. Para editar texto oculto detrás de la imagen de un PDF, puede editar la capa de cuadros de texto con LibreOffice Draw, Inkscape o cualquier herramienta de edición de PDF. Si encuentra una mejor manera, publíquela aquí. DaH jImej!
Pablo A


4

Encontré una solución no ideal, pero muy efectiva.

Yo uso PDF X-Change Viewer a través de Wine. Tiene una función de OCR que agrega una capa de texto al PDF existente basado en imágenes.

Por lo tanto, puede buscar y copiar texto de esta capa invisible.

ingrese la descripción de la imagen aquí


2

Para una solución de línea de comando, puede usar pdfocr .

En resumen, instale el software:

$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:gezakovacs/pdfocr
$ sudo apt-get update
$ sudo apt-get install pdfocr

Luego ejecute pdfocr:

$ pdfocr -i scanned.pdf -o scanned.with.search.pdf

Eso funcionó para mí en Ubuntu 12.04 LTS.


66
Github aquí: github.com/gkovacs/pdfocr . Pero esto tiene el mismo problema que pdfsandwich, ya que modifica / comprime archivos PDF que contienen imágenes de alta resolución, básicamente destruyendo parte de la información de la imagen original.
jmiserez

2

Una solución que es fácilmente implementable y que proporciona un PDF de salida con la misma calidad de archivo de entrada más un tamaño razonable es OCRmyPDF:

https://github.com/jbarlow83/OCRmyPDF


He tenido excelentes resultados con tu guión. A diferencia de pdfocr de Geza Kovacs, no requiere ninguna biblioteca adicional (¡difícil de compilar en algunas distribuciones de Linux!). ¡Gracias!
Maxim

0

Esta es mi solución rápida y sucia basado en ImageMagick de convert, tesseract, parallely pdftk(todos disponibles en distribuciones basadas en Debian). Se basa en gran medida en esta publicación de blog .

#!/bin/sh -ex

density=${2:-"300"} # default to 300 DPI if 2nd parameter is not given

convert -monitor -density "$density" "$1" -monochrome -compress lzw -alpha deactivate page_%05d.tif
parallel --bar "tesseract {} {.} pdf 2>/dev/null" ::: page_*.tif
pdftk page_*.pdf cat output "${1%.*}-ocred.pdf" compress

# Cleanup temp files
rm page_?????.tif page_?????.pdf

0

Para todo el directorio con archivos ppm puede usar este script ppm2ocrpdf.sh

#!/bin/sh

mkdir .pdf
for f in *.ppm; do
    echo " Running convert -compress JPEG -quality 88 "$f" -page a4 "$f"ppm.pdf"
    convert -compress JPEG -quality 88 "$f" -page a4 "$f"ppm.pdf
    echo " Running tesseract -l deu "$f" "$f" pdf"
    tesseract -l deu "$f" "$f" pdf
    echo " Running pdftk "$f".pdf cat output ./.pdf/"$f"ocr.pdf"
    pdftk "$f".pdf cat output ./.pdf/"$f"ocr.pdf
    echo " Running rm "$f"ppm.pdf"
    rm "$f"ppm.pdf
    echo " Running rm "$f".pdf"
    rm "$f".pdf
done
echo " Running pdftk *.pdf cat output ../outdocument.pdf"
pdftk ./.pdf/*.pdf cat output outOcrDocument.pdf
echo " Running rm ./.pdf/*.pdf"
rm ./.pdf/*.pdf
echo " Running rmdir .pdf"
rmdir .pdf
echo "Done"
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.