¿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.
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.
¿Alguna idea para mejorar este script para agregar una etapa de corrección ortográfica para corregir errores en el paso de reconocimiento?
Gökhan Sever
@ Gökhan Sever, ¿quiere decir que agrega un corrector ortográfico interactivo donde se le solicita al usuario que reemplace las palabras mal escritas / desconocidas? Creo que podría hacer eso agregando algo como aspell check --mode=html "$base.html"en el script justo después de ejecutar cuneiforme.
Jukka Matilainen
Esta es una solución. Sin embargo, sin ver todo el contexto del texto, es difícil hacer correcciones. Sería mejor ver una interfaz integrada en el ocrfeeder.
Gökhan Sever
1
Por cierto, uso tesseract para el reconocimiento de caracteres: reemplazando la línea cuneiforme con: tesseract "$ page" "$ base" hocr
Gökhan Sever
1
Pequeña corrección: la línea para tesseract al menos para otros idiomas además del inglés, aquí, por ejemplo, alemán (= deu) es: `tesseract" $ page "" $ base "-l deu hocr` (por supuesto, debe eliminar el ``) .
Keks Dose
14
Vea si pdftotext funcionará para usted. Si no está en su máquina, deberá instalar el paquete poppler-utils
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).
Convierte el pdf a una imagen
Escanee la imagen a texto usando las herramientas de OCR
Convertir pdf a imagen
gs: El siguiente comando debe convertir archivos PDF de varias páginas a archivos tiff individuales.
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.
¿Este programa también funciona para documentos de texto escritos a mano?
Ivo Flipse
1
No, no creo que tenga capacidades de OCR. Simplemente puede extraer el texto incrustado en el pdf. Página del manual
nagul
Sí, esto funciona para documentos PDF que ya vienen con el texto incrustado. Mi caso es exactamente uno donde no lo hace.
Helder S Ribeiro
1
@ obvio171 Se agregó la mejor opción que pude encontrar para que OCR funcione en su caso.
nagul
12
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.
La respuesta no es realmente específica de Ubuntu, pero realmente quiero agradecerles: ¡una solución BRILLANTE! :)
Pitto
Esto fue realmente útil :) Subí un archivo de 50 MB ayer y funcionó. Parece que han aumentado el límite de tamaño.
Gaurav
2
Geza Kovacs ha creado un paquete de Ubuntu que es básicamente un script que utiliza hocr2pdfcomo lo sugirió Jukka, pero hace que las cosas sean un poco más rápidas de configurar.
La mejor y más fácil forma de usarlo pypdfocres que no cambia el pdf
pypdfocr your_document.pdf
Al final, tendrá otro de your_document_ocr.pdfla 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.
Actualización 3 de noviembre de 2018:
pypdfocrya 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í:
Cree una imagen para cada página del PDF; cualquiera de los ejemplos de gs anteriores debería funcionar
Generar salida de hOCR para cada página; Utilicé tesseract (pero tenga en cuenta que Cuneiform parece funcionar mejor).
Mueva las imágenes y los archivos hOCR a una nueva carpeta; los nombres de archivo deben corresponder, por lo que file001.tif necesita file001.html, file002.tif file002.html, etc.
En la nueva carpeta, ejecute
pdfbeads * > ../Output.pdf
Esto colocará el PDF recopilado y OCR en el directorio principal.
#!/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"
Esta publicación indica que el producto puede hacerlo, lo cual es una sugerencia útil que debe publicarse como comentario. No explica cómo resolver realmente el problema, que es lo que deberían hacer las respuestas. ¿Puedes ampliar tu respuesta para que alguien pueda ver cómo hacer la solución?
Fixer1234
Gracias @ fixer1234, lo he editado para incluir el comando.
Encontré que ABBYY OCR es bastante lamentable, uno de los programas menos capaces que he probado. Puede ser que sea adecuado, con una imagen muy limpia del texto fuente estándar de tamaño de texto del cuerpo típica, sin fuentes mezcladas, tamaños mixtos, diseño complejo, gráficos, líneas, etc.
fixer1234
Ya también lo intenté, funciona bien. Tengo alguna duda, ¿puedes ayudarme?
Praveen Kumar KR
Si lo que necesita no está cubierto en otras respuestas aquí, lo mejor que puede hacer es hacer su propia pregunta. Eso lo expondrá a muchos ojos.
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:
Tenga en cuenta que el script anterior es muy rudimentario. Por ejemplo, no retiene ningún metadato PDF.
fuente
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
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.
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 imagen a texto con OCR
Tomado de la lista de Wikipedia de software OCR
fuente
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.
fuente
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
Ejecutar ocr en un archivo
Repositorio de GitHub para el código https://github.com/gkovacs/pdfocr/
fuente
La mejor y más fácil forma de usarlo
pypdfocr
es que no cambia el pdfAl 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.Actualización 3 de noviembre de 2018:
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í:Instalar:
o
fuente
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
Esto colocará el PDF recopilado y OCR en el directorio principal.
fuente
otro script usando tesseract:
fuente
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:
Nota: el 'pdf' independiente especifica el formato de salida.
Descargo de responsabilidad: soy un empleado de la empresa que produce el producto anterior.
fuente
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.
fuente