GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo extraer texto con OCR de un PDF en Linux?

He tenido éxito con el puerto Linux con licencia BSD del sistema Cuneiform OCR.

Parece que no hay paquetes binarios disponibles, por lo que debe compilarlo desde la fuente. Asegúrese de tener instaladas las bibliotecas de ImageMagick C++ para admitir prácticamente cualquier formato de imagen de entrada (de lo contrario, solo aceptará BMP).

Si bien parece estar esencialmente indocumentado, aparte de un breve archivo LÉAME, he encontrado que los resultados de OCR son bastante buenos. Lo bueno de esto es que puede generar información de posición para el texto OCR en formato hOCR, por lo que es posible volver a colocar el texto en la posición correcta en una capa oculta de un archivo PDF. De esta forma, puede crear archivos PDF "que permiten búsquedas" desde los que puede copiar texto.

He usado hocr2pdf para recrear archivos PDF a partir de los resultados de OCR y PDF de solo imagen originales. Lamentablemente, el programa no parece admitir la creación de archivos PDF de varias páginas, por lo que es posible que deba crear un script para manejarlos:

#!/bin/bash
# Run OCR on a multi-page PDF file and create a new pdf with the
# extracted text in hidden layer. Requires cuneiform, hocr2pdf, gs.
# Usage: ./dwim.sh input.pdf output.pdf

set -e

input="$1"
output="$2"

tmpdir="$(mktemp -d)"

# extract images of the pages (note: resolution hard-coded)
gs -SDEVICE=tiffg4 -r300x300 -sOutputFile="$tmpdir/page-%04d.tiff" -dNOPAUSE -dBATCH -- "$input"

# OCR each page individually and convert into PDF
for page in "$tmpdir"/page-*.tiff
do
    base="${page%.tiff}"
    cuneiform -f hocr -o "$base.html" "$page"
    hocr2pdf -i "$page" -o "$base.pdf" < "$base.html"
done

# combine the pages into one PDF
gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="$output" "$tmpdir"/page-*.pdf

rm -rf -- "$tmpdir"

Tenga en cuenta que el script anterior es muy rudimentario. Por ejemplo, no conserva ningún metadato PDF.


Vea si pdftotext funcionará para usted. Si no está en su máquina, deberá instalar el paquete poppler-utils

sudo apt-get install poppler-utils 

También puede encontrar el kit de herramientas pdf de uso.

Una lista completa de software pdf aquí en wikipedia.

Editar: Ya que necesitas Capacidades de OCR, creo que tendrá que probar una táctica diferente. (es decir, no pude encontrar un convertidor de pdf2text de Linux que haga OCR).

  • Convertir el pdf en una imagen
  • Escanear la imagen a texto usando las herramientas de OCR

Convertir pdf a imagen

  • gs:el siguiente comando debe convertir pdf de varias páginas en archivos tiff individuales.

    gs -SDEVICE=tiffg4 -r600x600 -sPAPERSIZE=letra -sOutputFile=nombre de archivo_%04d.tif -dNOPAUSE -dBATCH -- nombre de archivo

  • Utilidades de ImageMagik:hay otras preguntas en el sitio SuperUser sobre el uso de ImageMagik que podría usar para ayudarlo a realizar la conversión.

    convertir foo.pdf foo.png

Convertir imagen a texto con OCR

  • GOCR:página de Wikipedia
  • Ocrad:página de Wikipedia
  • ocropus:página de Wikipedia
  • tesseract-ocr:página de Wikipedia

Tomado de la lista de Wikipedia de software OCR


Google docs ahora usará OCR para convertir sus documentos de imagen/pdf subidos a texto. He tenido mucho éxito con eso.

Están usando el sistema OCR que se usa para el gigantesco proyecto de Google Books.

Sin embargo, debe tenerse en cuenta que solo se aceptarán para su procesamiento archivos PDF con un tamaño de 2 MB.

Actualizar
1. Para probarlo, suba un pdf de <2 MB a Google Docs desde un navegador web.
2. Haga clic derecho en el documento cargado y haga clic en "Abrir con Google Docs".
...Google Docs se convertirá a texto y generará un archivo nuevo con el mismo nombre pero el tipo de Google Docs en la misma carpeta.


Linux
  1. Cómo crear un video a partir de archivos PDF en Linux

  2. gImageReader:extraiga texto de imágenes y PDF en Linux

  3. Cómo enviar un correo electrónico con archivo adjunto y cuerpo desde Linux

  4. Cómo distinguir binarios de archivos de texto en Linux

  5. ¿Cómo comparto internet con Windows desde mi caja Linux?

Cómo mostrar datos de un archivo de texto en Linux

Cómo asegurar servidores Linux con SE Linux

Cómo trabajar con Nano Editor en Linux

Cómo extraer direcciones de correo electrónico de un archivo de texto en Linux

Cómo convertir una página web a PDF en Linux

Cómo abrir un PDF en la terminal de Linux