¿Cómo extraigo texto de un PDF que no se creó con un índice? Todo es texto, pero no puedo buscar ni seleccionar nada. Estoy ejecutando Kubuntu, y Okular no tiene esta característica.
¿Cómo extraigo texto de un PDF que no se creó con un índice? Todo es texto, pero no puedo buscar ni seleccionar nada. Estoy ejecutando Kubuntu, y Okular no tiene esta característica.
Respuestas:
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 el origen. Asegúrese de tener las bibliotecas ImageMagick C ++ instaladas para admitir esencialmente cualquier formato de imagen de entrada (de lo contrario, solo aceptará BMP).
Si bien parece ser esencialmente indocumentado, aparte de un breve archivo README, 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 , de modo que sea posible volver a colocar el texto en la posición correcta en una capa oculta de un archivo PDF. De esta manera, puede crear archivos PDF "buscables" desde los cuales puede copiar texto.
He usado hocr2pdf para recrear archivos PDF a partir de los resultados de OCR y PDF originales de solo imagen. 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 retiene ningún metadato PDF.
aspell check --mode=html "$base.html"
en el script justo después de ejecutar cuneiforme.
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: dado que necesita 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 pdf a imagen
gs: El siguiente comando debe convertir archivos PDF de varias páginas a archivos tiff individuales.
gs -SDEVICE = tiffg4 -r600x600 -sPAPERSIZE = letter -sOutputFile = filename_% 04d.tif -dNOPAUSE -dBATCH - filename
Utilidades de ImageMagik : hay otras preguntas en el sitio de SuperUser sobre el uso de ImageMagik que puede utilizar para ayudarlo a realizar la conversión.
convertir foo.pdf foo.png
Convertir imagen a texto con OCR
Tomado de la lista de Wikipedia de software OCR
Google Docs se ahora utilizar OCR para convertir sus documentos subidos imagen / PDF a texto. He tenido buen éxito con eso.
Están utilizando el sistema OCR que se utiliza para el gigantesco proyecto de Google Books .
Sin embargo, debe tenerse en cuenta que solo se aceptarán archivos PDF con un tamaño de 2 MB para su procesamiento.
Actualización
1. Para probarlo, cargue un archivo PDF de <2 MB en 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á en texto y se generará en un nuevo archivo con el mismo nombre pero el tipo de Google Docs en la misma carpeta.
Geza Kovacs ha creado un paquete de Ubuntu que es básicamente un script que utiliza hocr2pdf
como lo sugirió Jukka, pero hace que las cosas sean un poco más rápidas de configurar.
De la publicación del foro de Ubuntu de Geza con detalles sobre el paquete ...
Agregar el repositorio e instalar en Ubuntu
sudo add-apt-repository ppa:gezakovacs/pdfocr
sudo apt-get update
sudo apt-get install pdfocr
Ejecutar ocr en un archivo
pdfocr -i input.pdf -o output.pdf
Repositorio de GitHub para el código https://github.com/gkovacs/pdfocr/
La mejor y más fácil forma de usarlo pypdfocr
es que no cambia el pdf
pypdfocr your_document.pdf
Al final, tendrá otro de your_document_ocr.pdf
la forma que lo desee con texto de búsqueda. La aplicación no cambia la calidad de la imagen. Aumenta un poco el tamaño del archivo al agregar el texto superpuesto.
pypdfocr
ya no es compatible desde 2016 y noté algunos problemas debido a que no se mentained. ocrmypdf
( module ) hace un trabajo symiliar y puede usarse así:
ocrmypdf in.pdf out.pdf
Instalar:
pip install ocrmypdf
o
apt install ocrmypdf
PDFBeads funciona bien para mí. Este hilo " Convertir imágenes escaneadas en un solo archivo PDF " me puso en funcionamiento. Para un escaneo de libros en blanco y negro, debe:
En la nueva carpeta, ejecute
pdfbeads * > ../Output.pdf
Esto colocará el PDF recopilado y OCR en el directorio principal.
otro script usando tesseract:
#!/bin/bash
# Run OCR on a multi-page PDF file and create a txt with the
# extracted text in hidden layer. Requires tesseract, gs.
# Usage: ./pdf2ocr.sh input.pdf output.txt
set -e
input="$1"
output="$2"
tmpdir="$(mktemp -d)"
# extract images of the pages (note: resolution hard-coded)
gs -SDEVICE=tiff24nc -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}"
tesseract "$base.tiff" $base
done
# combine the pages into one txt
cat "$tmpdir"/page-*.txt > $output
rm -rf -- "$tmpdir"
Asprise OCR Library funciona en la mayoría de las versiones de Linux. Puede tomar la entrada y salida de PDF como PDF de búsqueda.
Es un paquete comercial. Descargue una copia gratuita de Asprise OCR SDK para Linux aquí y ejecútelo de esta manera:
aocr.sh input.pdf pdf
Nota: el 'pdf' independiente especifica el formato de salida.
Descargo de responsabilidad: soy un empleado de la empresa que produce el producto anterior.
Pruebe Apache PDFBox para extraer contenido de texto del archivo PDF. En el caso de imágenes incrustadas en archivos PDF, utilice ABBYY FineReader Engine CLI para Linux para extraer texto.