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\'`;
}
}
}
}
}