Cela a été discuté il y a un an ici:
OCR par lots pour de nombreux fichiers PDF (pas déjà OCR)?
Existe-t-il un moyen de grouper des PDF OCR qui n'ont pas déjà été OCR? Tel est, je pense, l'état actuel des choses concernant deux questions:
PDF OCR par lots
les fenêtres
Acrobat - Il s'agit du moteur ocr le plus simple qui fournira l'OCR par lots. Le seul problème semble être 1) il ne sautera pas les fichiers qui ont déjà été OCR 2) essayez de jeter un tas de PDF dessus (certains anciens) et de le regarder planter. C'est un petit buggy. Il vous avertira à chaque erreur qu'il rencontre (bien que vous puissiez dire au logiciel de ne pas le signaler. Mais encore une fois, il meurt horriblement sur certains types de PDF, donc votre kilométrage peut varier.
ABBYY FineReader (Batch / Scansnap), Omnipage - Ceux-ci doivent être parmi les pires logiciels programmés connus de l'homme. Si vous pouvez découvrir comment automatiser complètement (sans invite) l'OCR par lots de fichiers PDF enregistrés avec le même nom, veuillez poster ici. Il semble que les seules solutions que j'ai pu trouver aient échoué quelque part - renommer, pas entièrement automatisées, etc. etc. Au mieux, il existe un moyen de le faire, mais la documentation et la programmation sont si horribles que vous ne le découvrirez jamais.
ABBYY FineReader Engine , ABBYY Recognition Server - Ce sont vraiment plus de solutions d'entreprise, vous feriez probablement mieux de simplement faire acrobat pour exécuter sur un dossier et essayer d'éliminer les fichiers PDF qui vous donnent des erreurs / planter le programme que de passer par les tracas d'essayer pour installer un logiciel d'évaluation (en supposant que vous êtes un simple utilisateur final). Ne semble pas compétitif pour les petits utilisateurs.
** Station de travail Autobahn DX ** le coût de ce produit est tellement prohibitif que vous pourriez probablement acheter 6 copies d'acrobate. Pas vraiment une solution pour l'utilisateur final. Si vous êtes une entreprise, cela peut valoir la peine pour vous.
Linux
- WatchOCR - plus développé, et pratiquement impossible à exécuter sur les distributions Ubuntu modernes
- pdfsandwich - n'est plus développé, pratiquement impossible à exécuter sur les distributions Ubuntu modernes
- ** ABBY LINUX OCR ** - cela devrait être scriptable et semble avoir de bons résultats:
http://www.splitbrain.org/blog/2010-06/15-linux_ocr_software_comparison
Cependant, comme beaucoup de ces autres produits ABBYY qu'ils facturent par page, encore une fois, vous feriez mieux d'essayer de faire fonctionner Acrobat Batch OCR.
** Ocrad, GOCR, OCRopus, tesseract, ** - cela peut fonctionner mais il y a quelques problèmes:
- Les résultats de l'OCR ne sont pas aussi bons que, par exemple, l'acrobate pour certains d'entre eux (voir le lien ci-dessus).
- Aucun des programmes n'accepte un fichier PDF et ne génère un fichier PDF. Vous devez d'abord créer un script et séparer le PDF et exécuter les programmes sur chacun, puis réassembler le fichier au format PDF
- Une fois que vous le faites, vous pouvez constater, comme moi, que (tesseract) crée une couche OCR qui est décalée. Donc, si vous recherchez le mot «le», vous obtiendrez un surlignage de la partie du mot à côté de lui.
DjVu par lots → Convertir en PDF - ne s'y est pas penché, mais semble être une horrible solution ronde.
En ligne
- PDFcubed.com - allez, pas vraiment une solution batch.
- ABBYY Cloud OCR - vous ne savez pas s'il s'agit vraiment d'une solution par lots, de toute façon, vous devez payer à la page et cela pourrait devenir assez coûteux.
Identification des fichiers PDF non OCR
C'est un problème un peu plus facile, qui peut être résolu facilement sous Linux et beaucoup moins sous Windows. J'ai pu coder un script perl en utilisant pdffont
pour identifier si les polices sont intégrées pour déterminer quels fichiers ne sont pas OCRed.
"Solutions" actuelles
Utilisez un script pour identifier les fichiers PDF non OCR (afin de ne pas réexécuter des milliers de PDF OCR) et copiez-les dans un répertoire temporaire (en conservant l'arborescence de répertoires appropriée), puis utilisez Acrobat sur Windows pour les exécuter en espérant que les plus petits les lots ne plantent pas.
utilisez le même script mais utilisez l'un des outils linux ocr pour fonctionner correctement, ce qui risque de nuire à la qualité ocr.
Je pense que je vais essayer # 1, je suis juste trop inquiet pour les résultats des outils Linux OCR (je suppose que personne n'a fait de comparaison) et briser les fichiers et les assembler à nouveau semble un codage inutile si Adobe peut réellement OCR par lots un répertoire sans étouffement.
Si vous voulez une solution entièrement gratuite, vous devrez utiliser un script pour identifier les fichiers PDF non OCR (ou simplement réexécuter sur les fichiers OCR), puis utiliser l'un des outils Linux pour essayer de les OCR. Teseract semble avoir les meilleurs résultats, mais encore une fois, certains de ces outils ne sont pas bien pris en charge dans les versions modernes d'Ubuntu, bien que si vous pouvez le configurer et résoudre le problème que j'avais lorsque la couche d'image ne correspondait pas à la couche de correspondance de texte ( avec tesseract) alors vous auriez une solution assez pratique et encore une fois Linux> Windows.
Avez-vous une solution de travail pour automatiser entièrement les PDF OCR par lots , en ignorant les fichiers déjà OCR conservant le même nom, avec une qualité élevée ? Si oui, j'apprécierais vraiment la contribution.
Script Perl pour déplacer des fichiers non OCR vers un répertoire temporaire. Je ne peux pas garantir que cela fonctionne et doit probablement être réécrit, mais si quelqu'un le fait fonctionner (en supposant que cela ne fonctionne pas) ou fonctionne mieux, faites le moi savoir et je publierai une meilleure version ici.
#!/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\'`;
}
}
}
}
}