¿Cómo convertir un PDF en un PDF de búsqueda de texto?

20

Tengo varios documentos escaneados en pdf y quiero poder buscarlos. ¿Cómo puedo hacer eso?

Esencialmente tengo que OCR el pdf y luego mezclar el texto extraído nuevamente en un nuevo pdf. He probado sin éxito varias soluciones diferentes (incluidas las que se encuentran en Agregar información de OCR a un PDF ).

  1. pdfocr (que me da este problema: https://github.com/gkovacs/pdfocr/issues/7 )
  2. pdfsandwich (de los cuales el centro de software dice que es un paquete deficiente y no debería instalarlo)
  3. OCRfeeder (en el centro de software) exporta a odt muy bien, pero no reacciona al exportar a pdf.
  4. Gscan2pdf exporta una imagen completamente negra (pero que se puede buscar) como se informó en esta discusión .
  5. No creo que el visor Pdfxchange pueda manejar ocr sobre la marcha en archivos de más de 500 páginas.

¿Hay algún paquete de software que desconozca? O un guión que hace esto?

don.joey
fuente
3
Todavía no lo he probado, pero he visto este proyecto recomendado en el pasado.
Glutanimate
Que acabo de escribir pdf2searchablepdf. Se basa en tesseract. Funciona bien. Súper fácil de usar. Mira aquí. askubuntu.com/a/1187881/327339
Gabriel Staples el

Respuestas:

12

Ubuntu <16.04

Tras el comentario de Glutanimate, he encontrado una solución que funciona. Es el script OCRmyPDF .

git clone https://github.com/jbarlow83/OCRmyPDF
cd OCRmyPDF
sh ./OCRmyPDF.sh -h  # to see the usage

Si recibe un mensaje que dice que debe instalar GNU en paralelo. Se puede hacer (siguiendo /ubuntu//a/298598/115155 ) con (la segunda línea es opcional y depende de su sabor y versión):

sudo apt-get install parallel
sudo rm /etc/parallel/config

Finalmente puede OCR su pdf con el comando:

sh ./OCRmyPDF.sh input.pdf output.pdf  # change input and output to the files you want

Si parece que el comando no responde, puede aumentar la verbosidad usando la -vbandera (que se puede usar de forma incremental como -vvo -vvv). Puede ser mejor probar los resultados primero en un pdf más corto. Puede acortar un pdf de la siguiente manera:

pdftk A=input.pdf cat A1-5 output output.pdf

Ubuntu> = 16.04

A partir de Ubuntu 16.04, OCRmyPDF está disponible a través de apt. Solo corre

sudo apt install ocrmypdf
ocrmypdf -h   # to see the usage

Finalmente puede OCR su pdf con el comando:

ocrmypdf input.pdf output.pdf  # change input and output to the files you want

Si parece que el comando no responde, puede aumentar la verbosidad usando la -vbandera (que se puede usar de forma incremental como -vvo -vvv). Puede ser mejor probar los resultados primero en un pdf más corto. Puede acortar un pdf de la siguiente manera:

pdftk A=input.pdf cat A1-5 output output.pdf

Si tiene alguna pregunta, eche un vistazo en el nuevo Repo de Github .

don.joey
fuente
¿Aceptaría su respuesta para resolverla? (Para que no aparezca en la lista de respuestas)
Usuario registrado
Solo sudo -H pip install git+https://github.com/jbarlow83/OCRmyPDFpara Ubuntu 16.04
Martin Thoma
1
Para Ubuntu 16.10 y versiones posteriores, puedes hacerlo sudo apt install ocrmypdf.
endolito
6

@ don.joey respondió con el script ocrmypdf . Sin embargo, se puede instalar directamente ahora (desde 16.10 en adelante).

sudo apt install ocrmypdf

Luego debe instalar los idiomas de tesseract que necesita.

Para enumerar qué idiomas ya están en su sistema, escriba:

tesseract --list-langs

En caso de que pierda uno, instálelo. Por ejemplo,

sudo apt install tesseract-ocr-spa

Ahora puede producir un PDF con capacidad de búsqueda (cuya calidad variará, dependiendo del documento escaneado) con el siguiente comando

ocrmypdf -l 'spa' old.pdf new.pdf

Por supuesto, puede consultar su página de manual para ver algunas opciones adicionales.

Ludenticus
fuente
Tener mi voto, señor!
don.joey
4

pdfsandwichrealiza exactamente este trabajo. No sabía que hay un paquete provisto en el centro de software, pero estoy proporcionando paquetes de Deb para Ubuntu en el sitio web del proyecto (ver http://www.tobias-elze.de/pdfsandwich/ para más detalles), incluida la versión más reciente actualmente (0.1.2), que es poco probable que esté en ningún centro de software todavía.

Si tiene un archivo escaneado scanned_file.pdf, simplemente llame

pdfsandwich scanned_file.pdf

que genera el archivo scanned_file_ocr.pdfcon el texto reconocido agregado a las páginas escaneadas.

En comparación con la mayoría de las soluciones existentes, detecta automáticamente la versión tesseract instalada y adapta su comportamiento en consecuencia. Además, realiza el preprocesamiento de las imágenes escaneadas antes del proceso de OCR, como destornillamiento o eliminación de bordes oscuros, etc., lo que puede mejorar considerablemente el reconocimiento óptico de caracteres.

DESCARGO DE RESPONSABILIDAD: Soy el desarrollador pdfsandwichy, por lo tanto, muy parcial.

Tobias Elze
fuente
Suena genial, pero ¿por qué la versión 0.1.4 de pdfsandwich instalada usando apt-get convierte cada carácter en un rectángulo negro para mí en Ubuntu 16.04?
Valentas
1
Eso es difícil de responder sin más detalles. En primer lugar, recomiendo usar una versión más reciente de la herramienta. La versión actual es 0.1.6. Puede encontrar paquetes de Deb para Ubuntu en el sitio web. En segundo lugar, si eso no ayuda, puede usar la opción -verbose para obtener más detalles y usar estos detalles para presentar un informe de error.
Tobias Elze
Un par de problemas para mí. convertir: intenta realizar una operación no permitida por la política de seguridad 'PDF' @ error / constitut.c / IsCoderAuthorized / 408. así que tuve que instalar imagemagick desde la fuente descargada de imagemagick.org/script/install-source.php y luego recibí un error al cargar las bibliotecas compartidas: libMagickCore-7.Q16HDRI.so.6: no se puede abrir el archivo de objeto compartido: "No existe file or directory "'y esta solución funcionó ejecutando' sudo ldconfig / usr / local / lib '. La versión de imagemagick es 7.0.8-56 obtenida por' generate -version '.
Pierre
Puede valer la pena agregar estas utilidades si planea manipular o recortar archivos PDF. 1. pdfshuffler para dividir las páginas izquierda y derecha (de originales a 2 caras) 2. pdftk cadena de pdf Use pdftk (como un archivo jar) para dividir el archivo en páginas pares e impares por separado: 4 para recortar páginas pdfquench - También necesitaba gir1. 2-goocanvas-2.0 gir1.2-poppler-0.18 python-pygoocanvas python-poppler python-pypdf2. pdfsandwich funcionó de maravilla, redujo el tamaño del archivo en 10X también. Gracias. Ubuntu 19.04 también pdfsam para dividir y fusionar, ejecutar como un archivo jar de Java después de la descarga
pierrely
0

OCRfeeder tiene un error en

/usr/lib/python2.7/dist-packages/reportlab/pdfgen/textobject.py

la línea 436 debería leer:

            lines = asUnicode(stuff).strip().split('\n')
# bug here, was:
#            lines = '\n'.split(asUnicode(stuff).strip())

cambió esto y funcionó para mí

AndreR
fuente
0

SO: Ubuntu 18.04

Primero, instale tesseract-ocrcon:

apt-cache show tesseract-ocr
sudo apt-get update && sudo apt-get upgrade
apt-get install tesseract-ocr --print-uris
apt-get install tesseract-ocr
sudo !!

Si va a utilizar un idioma que no sea inglés con tesseract, deberá instalar el paquete de idioma correspondiente. Por ejemplo, para el portugués, deberá hacer:

sudo apt-get install tesseract-ocr-por

De lo contrario, obtendrá el error:

Error opening data file /usr/share/tesseract-ocr/4.00/tessdata/por.traineddata
Please make sure the TESSDATA_PREFIX environment variable is set to your 
"tessdata" directory.
Failed loading language 'por'
Tesseract couldn't load any languages!
Could not initialize tesseract.

Si busca en Google "tesseract PDF", probablemente encontrará esta publicación algo desactualizada . Sin embargo, te da algunos consejos útiles. Primero tendrá que convertir su .pdfarchivo a .tiffuno. Correr:

convert -density 125 originalfile.pdf -depth 8 -alpha Off newfile.tiff

Si, como en la publicación obsoleta, olvida agregar alpha -Off, obtendrá el siguiente error:

Tesseract Open Source OCR Engine v4.0.0-beta.1 with Leptonica
Error in pixReadFromTiffStream: spp not in set {1,3,4}

Ahora puedes ejecutar el comando final. En el caso particular de que su PDF original esté en portugués, necesitará este comando:

tesseract -l por newfile.tiff output pdf 

Se nombrará el archivo generado output.pdf. Si, por ejemplo, su PDF está en francés, después de instalar el correspondiente tesseract-ocr-fra, ejecutará:

tesseract -l fra newfile.tiff output pdf 

Y el archivo deseado será, nuevamente output.pdf,.

evaristegd
fuente
0

Tuve este mismo problema, así que escribí esto durante el fin de semana. Dale un tiro; funciona muy bien! Es un simple envoltorio alrededor tesseract. Se usa pdftoppmpara convertir un PDF en un montón de archivos TIFF, luego se usa tesseractpara realizar OCR (reconocimiento óptico de caracteres) en ellos y producir un PDF con capacidad de búsqueda como salida. Todos los archivos temporales intermedios se eliminan automáticamente cuando se completa el script.

Código fuente: https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF

Instrucciones para instalar y usar pdf2searchablepdf:

Probado en Ubuntu 18.04 el 11 de noviembre de 2019.

Instalar en pc:

git clone https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF.git
./PDF2SearchablePDF/install.sh
sudo apt update
sudo apt install tesseract-ocr

Utilizar:

pdf2searchablepdf mypdf.pdf

¡Ahora tendrá un pdf llamado mypdf_searchable.pdf , que contiene texto de búsqueda!

Hecho. El contenedor no tiene dependencias de python, ya que actualmente está escrito completamente en bash.

Referencias o recursos relacionados:

  1. PDF2SearchablePDF : https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF
  2. ¿Cómo convertir un PDF en un PDF de búsqueda de texto?
  3. ¿Cuál es la mejor y más simple solución de OCR?
  4. Extraer imágenes incrustadas de un PDF
  5. pdfsandwich : Contenedor de software alternativo que acabo de descubrir, ¡vale la pena echarle un vistazo también! http://www.tobias-elze.de/pdfsandwich/
  6. /unix/301318/how-to-ocr-a-pdf-file-and-get-the-text-stored-within-pdf/551526#551526
  7. [cómo convertir un PDF en un montón de imágenes con pdftoppm] Extracción de imágenes incrustadas de un PDF
Gabriel Staples
fuente