Esto se discutió hace un año aquí:
¿OCR por lotes para muchos archivos PDF (no OCR)?
¿Hay alguna forma de agrupar archivos PDF de OCR que no hayan sido OCR? Este es, creo, el estado actual de las cosas relacionadas con dos problemas:
PDF de OCR por lotes
Ventanas
Acrobat : este es el motor OCR más directo que procesará OCR por lotes. El único problema parece ser 1) no saltará archivos que ya han sido OCRed 2) intente arrojarle un montón de archivos PDF (algunos viejos) y vea cómo se bloquea. Es un pequeño buggy. Le advertirá en cada error que encuentre (aunque puede decirle al software que no lo notifique. Pero nuevamente, muere horriblemente en ciertos tipos de archivos PDF, por lo que su kilometraje puede variar.
ABBYY FineReader (Batch / Scansnap), Omnipage : estos deben ser algunos de los peores programas de software conocidos por el hombre. Si puede descubrir cómo automatizar completamente (sin preguntar) el OCR por lotes de archivos PDF guardados con el mismo nombre , publique aquí. Parece que las únicas soluciones que pude encontrar fallaron en alguna parte: cambio de nombre, no totalmente automatizado, etc. etc. En el mejor de los casos, hay una manera de hacerlo, pero la documentación y la programación son tan horribles que nunca lo descubrirás.
ABBYY FineReader Engine , ABBYY Recognition Server : estas son realmente más soluciones empresariales, probablemente sea mejor que solo acrobat ejecute una carpeta y pruebe y elimine los archivos PDF que le dan errores / bloquean el programa que pasar por la molestia de intentarlo para instalar software de evaluación (suponiendo que es un usuario final simple). No parece un costo competitivo para el pequeño usuario.
** Estación de trabajo Autobahn DX ** el costo de este producto es tan prohibitivo que probablemente podría comprar 6 copias de acrobat. No es realmente una solución para el usuario final. Si tiene una configuración empresarial, esto puede valer la pena para usted.
Linux
- WatchOCR : ya no se desarrolla y es básicamente imposible de ejecutar en distribuciones modernas de Ubuntu
- pdfsandwich : ya no se desarrolla, básicamente imposible de ejecutar en distribuciones modernas de Ubuntu
- ** ABBY LINUX OCR **: debe ser programable y parece tener buenos resultados:
http://www.splitbrain.org/blog/2010-06/15-linux_ocr_software_comparison
Sin embargo, al igual que muchos de estos otros productos de ABBYY que cobran por página, nuevamente, es mejor que intente hacer que Acrobat Batch OCR funcione.
** Ocrad, GOCR, OCRopus, tesseract, ** - estos pueden funcionar pero hay algunos problemas:
- Los resultados de OCR no son tan buenos como, por ejemplo, acrobat para algunos de estos (ver enlace anterior).
- Ninguno de los programas toma un archivo PDF y genera un archivo PDF. Debe crear un script y separar el PDF primero y ejecutar los programas sobre cada uno y luego volver a ensamblar el archivo como un pdf
- Una vez que lo haga, puede encontrar, como lo hice, que (tesseract) crea una capa de OCR que se desplaza. Entonces, si busca la palabra 'the', obtendrá un resaltado de la parte de la palabra al lado.
Batch DjVu → Convertir a PDF: no lo he examinado, pero parece una horrible solución de combate.
En línea
- PDFcubed.com - vamos, no es realmente una solución por lotes.
- ABBYY Cloud OCR : no estoy seguro de si esta es realmente una solución por lotes, de cualquier manera, debe pagar por página y esto podría ser bastante costoso.
Identificación de archivos PDF sin OCR
Este es un problema un poco más fácil, que se puede resolver fácilmente en Linux y mucho menos en Windows. Pude codificar un script perl pdffont
para identificar si las fuentes están incrustadas para determinar qué archivos no están OCR.
"Soluciones" actuales
Use una secuencia de comandos para identificar archivos PDF no OCR (para no volver a ejecutar miles de archivos PDF OCR) y cópielos en un directorio temporal (conservando el árbol de directorios correcto) y luego use Acrobat en Windows para ejecutarlos con la esperanza de que los lotes no se estrellarán.
use el mismo script pero obtenga una de las herramientas de Linux OCR para que funcione correctamente, arriesgando la calidad de OCR.
Creo que voy a intentar el n. ° 1, solo estoy demasiado preocupado por los resultados de las herramientas de OCR de Linux (no creo que alguien haya hecho una comparación) y parece que separar los archivos y unirlos nuevamente Sería innecesaria la codificación si Adobe realmente puede OCR por lotes de un directorio sin asfixia.
Si desea una solución completamente gratuita, tendrá que usar un script para identificar los archivos PDF no OCR (o simplemente volver a ejecutar sobre los OCR), y luego usar una de las herramientas de Linux para probar y OCR. Teseract parece tener los mejores resultados, pero de nuevo, algunas de estas herramientas no son compatibles con las versiones modernas de Ubuntu, aunque si puede configurarlo y solucionar el problema que tuve cuando la capa de imagen no coincide con la capa de coincidencia de texto ( con tesseract), entonces tendría una solución bastante viable y una vez más Linux> Windows.
¿Tiene una solución de trabajo para automatizar completamente, PDF de OCR por lotes , omitiendo los archivos ya OCR con el mismo nombre, con alta calidad ? Si es así, realmente agradecería la entrada.
Script Perl para mover archivos no OCR a un directorio temporal. No puedo garantizar que esto funcione y probablemente deba reescribirse, pero si alguien lo hace funcionar (suponiendo que no funciona) o funciona mejor, avíseme y publicaré una versión mejor aquí.
#!/usr/bin/perl
# move non-ocred files to a directory
# change variables below, you need a base dir (like /home/joe/), and a sourcedirectory and output
# direcotry (e.g books and tempdir)
# move all your pdfs to the sourcedirectory
use warnings;
use strict;
# need to install these modules with CPAN or your distros installer (e.g. apt-get)
use CAM::PDF;
use File::Find;
use File::Basename;
use File::Copy;
#use PDF::OCR2;
#$PDF::OCR2::CHECK_PDF = 1;
#$PDF::OCR2::REPAIR_XREF = 1;
my $basedir = '/your/base/directory';
my $sourcedirectory = $basedir.'/books/';
my @exts = qw(.pdf);
my $count = 0;
my $outputroot = $basedir.'/tempdir/';
open( WRITE, >>$basedir.'/errors.txt' );
#check file
#my $pdf = PDF::OCR2->new($basedir.'/tempfile.pdf');
#print $pdf->page(10)->text;
find(
{
wanted => \&process_file,
# no_chdir => 1
},
$sourcedirectory
);
close(WRITE);
sub process_file {
#must be a file
if ( -f $_ ) {
my $file = $_;
#must be a pdf
my ( $dir, $name, $ext ) = fileparse( $_, @exts );
if ( $ext eq '.pdf' ) {
#check if pdf is ocred
my $command = "pdffonts \'$file\'";
my $output = `$command`;
if ( !( $output =~ /yes/ || $output =~ /no/ ) ) {
#print "$file - Not OCRed\n";
my $currentdir = $File::Find::dir;
if ( $currentdir =~ /$sourcedirectory(.+)/ ) {
#if directory doesn't exist, create
unless(-d $outputroot.$1){
system("mkdir -p $outputroot$1");
}
#copy over file
my $fromfile = "$currentdir/$file";
my $tofile = "$outputroot$1/$file";
print "copy from: $fromfile\n";
print "copy to: $tofile\n";
copy($fromfile, $tofile) or die "Copy failed: $!";
# `touch $outputroot$1/\'$file\'`;
}
}
}
}
}
Respuestas:
También he buscado una manera de OCR por lotes de muchos archivos PDF de manera automatizada, sin mucha suerte. Al final, se me ocurrió una solución viable similar a la suya, usando Acrobat con un script de la siguiente manera:
Copie todos los PDF relevantes a un directorio específico.
Elimine los archivos PDF que ya contienen texto (suponiendo que ya sean OCRd o que ya sean texto; no es lo ideal, lo sé, pero lo suficientemente bueno por ahora).
Use AutoHotKey para ejecutar Acrobat automáticamente, seleccione el directorio específico y OCR todos los documentos, agregando "-ocr" a su nombre de archivo.
Mueva los PDF de OCRd a su ubicación original, usando la presencia de un archivo "-ocr.pdf" para determinar si fue exitoso.
Es un poco Heath Robinson , pero en realidad funciona bastante bien.
fuente
Creo que debe darse cuenta de que ABBYY FineReader es una solución para el usuario final diseñada para proporcionar un OCR rápido y preciso listo para usar.
Según mi experiencia, los proyectos de OCR tienen detalles significativamente diferentes cada vez y no hay forma de crear una alma de fábrica para cada caso único, pero puedo sugerirle más herramientas profesionales que pueden hacer el trabajo por usted:
Eche un vistazo a ABBYY Recognition Server , este es un producto profesional para la automatización de OCR.
Cuando se trata de Linux, eche un vistazo a http://ocr4linux.com , es una utilidad de línea de comandos que también puede adaptarse a usted.
Para tareas más complejas, ABBYY tiene un SDK muy flexible como ABBYY FineReader Engine (alojado internamente) o ABBYY Cloud OCR SDK (basado en la nube de Microsoft Azure), que le permite diseñar el procesamiento de OCR de la manera que lo desee.
Fui parte del equipo de desarrollo front-end para el servicio en la nube especificado anteriormente y puedo proporcionar más información si es necesario.
Teniendo en cuenta la búsqueda de una capa de texto en PDF, no puedo dar ningún consejo al respecto, porque esta tarea está un poco al margen de OCR, que es mi especialidad, por lo que su enfoque de usar un script externo es muy razonable. Tal vez encuentre útil esta discusión: http://forum.ocrsdk.com/questions/108/check-if-pdf-is-scanned-image-or-contains-text
fuente
En linux
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.Para agrupar los archivos PDF
Si los archivos PDF están en subcarpetas:
Actualización 3 de noviembre de 2018:
pypdfocr
ya no es compatible desde 2016 y noté algunos problemas debido a que no se resolvióocrmypdf
( módulo ) hace un trabajo similar y se puede usar así:Instalar:
o
entonces el comando se convertiría
fuente
Tuve cierto éxito a principios de 2015 haciendo OCR por lotes completamente sin intervención usando Nuance OmniPage Ultimate en Windows. No es gratis, precio de lista $ 500. Utilice el programa por lotes "DocuDirect" que se incluye. Tiene una opción "Ejecutar trabajo sin avisos" que parece la respuesta directa a su pregunta original.
Utilicé DocuDirect para generar un archivo PDF con capacidad de búsqueda para cada imagen PDF de entrada (es decir, sin capacidad de búsqueda); Se le puede pedir que replique el árbol del directorio de entrada en la carpeta de salida, así como los nombres de los archivos de entrada originales (casi, ver más abajo). Utiliza múltiples núcleos también. La precisión fue el mejor de los paquetes que evalué. Los documentos protegidos con contraseña se omiten (sin detener el trabajo, sin mostrar un diálogo).
Advertencia 1: Casi los nombres de archivo originales: el sufijo ".PDF" se convierte en ".pdf" (es decir, de mayúsculas a minúsculas) porque bueno, todo es lo mismo en Windows. (Ugh.)
Advertencia 2: No hay archivo de registro, por lo que el diagnóstico de qué archivos fallan durante el reconocimiento, lo que definitivamente hacen, es una decisión suya. DocuDirect producirá felizmente resultados confusos como páginas enteras que simplemente faltan. Escribí un script de Python usando el módulo PyPDF2 para implementar una validación cruda: probar que el recuento de páginas de salida coincidía con el recuento de páginas de entrada. Vea abajo.
Advertencia 3: un archivo de imagen de entrada borroso e indistinto hará que OmniPage se cuelgue para siempre, sin usar ninguna CPU; simplemente nunca se recupera. Esto realmente descarrila el procesamiento por lotes y no encontré ninguna solución. También informé esto a Nuance, pero no llegué a ninguna parte.
@ Joe tiene razón acerca de que el software está mal programado y documentado. Noto que el núcleo de OmniPage tiene una increíble tecnología mágica de reconocimiento de caracteres, pero la carcasa externa (GUI y procesamiento por lotes) es suficiente para que te saques el pelo.
Respaldo la sugerencia de @ Joe's y @ Kiwi de descartar archivos usando scripts, para presentar el paquete OCR solo con documentos de imagen desprotegidos.
Mi única afiliación con Nuance es como un cliente no exactamente satisfecho: tengo un lote de tickets de soporte no resueltos para probarlo :)
@ Joe: Respuesta tardía, pero tal vez aún sea relevante. Comunidad @SuperUser: Espero que sienta que esto es un tema.
** Actualización ** paquete sucesor es Nuance PowerPDF Advanced, precio de lista de solo $ 150. Tuve un éxito aún mayor con esto, es igual de preciso pero mucho más estable.
La secuencia de comandos python de validación de árbol previa / posterior a OCR sigue.
fuente
Puede considerar el Autobahn DX de Aquaforest: http://www.aquaforest.com/en/autobahn.asp
Está diseñado para procesar lotes de archivos PDF y tiene una variedad de opciones (por ejemplo, saltar o pasar archivos OCR), así como opciones para el tratamiento inteligente de archivos PDF que pueden ofrecer un mejor resultado (por ejemplo, si un PDF tiene algunas páginas de imágenes y algunas páginas de texto, solo puede OCR las páginas de imagen)
fuente
En
Mac
oLinux
:parallel --tag -j 2 ocrmypdf '{}' 'output/{}' ::: *.pdf
A partir de aquí .
fuente