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\'`;
}
}
}
}
}
Réponses:
Moi aussi, j'ai cherché un moyen d'OCR par lots de nombreux PDF de manière automatisée, sans beaucoup de chance. En fin de compte, j'ai trouvé une solution réalisable similaire à la vôtre, en utilisant Acrobat avec un script comme suit:
Copiez tous les fichiers PDF pertinents dans un répertoire spécifique.
Supprimez les PDF contenant déjà du texte (en supposant qu'ils sont déjà OCRd ou déjà texte - pas idéal je sais, mais assez bon pour l'instant).
Utilisez AutoHotKey pour exécuter automatiquement Acrobat, sélectionnez le répertoire spécifique et OCR tous les documents, en ajoutant "-ocr" à leur nom de fichier.
Déplacez les PDF OCRd vers leur emplacement d'origine, en utilisant la présence d'un fichier "-ocr.pdf" pour déterminer s'il a réussi.
C'est un peu Heath Robinson , mais ça marche plutôt bien.
la source
Je crois que vous devez vous rendre compte qu'ABBYY FineReader est une solution destinée à l'utilisateur final conçue pour fournir une OCR prête à l'emploi rapide et précise.
D'après mon expérience, les projets d'OCR ont des détails significativement différents à chaque fois et il n'y a aucun moyen de créer une âme prête à l'emploi pour chaque cas unique, mais je peux vous proposer des outils plus professionnels qui peuvent faire le travail pour vous:
Jetez un œil à ABBYY Recognition Server , c'est un produit professionnel pour l'automatisation OCR.
En ce qui concerne linux, consultez http://ocr4linux.com , c'est un utilitaire de ligne de commande qui peut vous convenir également.
Pour les tâches plus complexes, ABBYY dispose d'un SDK très flexible comme ABBYY FineReader Engine (hébergé en interne) ou ABBYY Cloud OCR SDK (basé sur Microsoft Azure cloud), qui vous permet de concevoir le traitement OCR comme vous le souhaitez.
Je faisais partie de l'équipe de développement front-end pour le service cloud spécifié ci-dessus et je peux fournir plus d'informations à ce sujet si nécessaire.
Compte tenu de la recherche d'une couche de texte en PDF, je ne peux pas donner de conseil à ce sujet, car cette tâche est un peu à côté de l'OCR qui est ma spécialité, donc je trouve votre approche de l'utilisation d'un script externe très raisonnable. Vous trouverez peut-être cette discussion utile: http://forum.ocrsdk.com/questions/108/check-if-pdf-is-scanned-image-or-contains-text
la source
Sous Linux
Le meilleur moyen et le plus simple de l'utiliser
pypdfocr
est de ne pas changer le pdfÀ la fin, vous en aurez un autre
your_document_ocr.pdf
comme vous le souhaitez avec du texte consultable. L'application ne change pas la qualité de l'image. Augmente un peu la taille du fichier en ajoutant le texte de superposition.Pour regrouper les fichiers PDF
Si les fichiers PDF sont dans des sous-dossiers:
Mise à jour du 3 novembre 2018:
pypdfocr
n'est plus pris en charge depuis 2016 et j'ai remarqué des problèmes de non-mentoring.ocrmypdf
( module ) fait un travail similaire et peut être utilisé comme ceci:À installer:
ou
de sorte que la commande deviendrait
la source
J'ai eu un certain succès au début de 2015 en effectuant une OCR par lots entièrement mains libres en utilisant Nuance OmniPage Ultimate sur Windows. Pas gratuit, prix courant 500 $. Utilisez le programme batch "DocuDirect" inclus. Il a une option "Exécuter le travail sans aucune invite" qui semble la réponse directe à votre question d'origine.
J'ai utilisé DocuDirect pour produire un fichier PDF consultable pour chaque image PDF d'entrée (c'est-à-dire non consultable); on peut lui dire de répliquer l'arborescence du répertoire d'entrée dans le dossier de sortie ainsi que les noms des fichiers d'entrée d'origine (presque - voir ci-dessous). Utilise également plusieurs cœurs. La précision était la meilleure des packages que j'ai évalués. Les documents protégés par mot de passe sont ignorés (sans arrêter le travail, sans afficher de boîte de dialogue).
Mise en garde 1: Presque les noms de fichiers d'origine - le suffixe ".PDF" devient ".pdf" (c'est-à-dire, de majuscules en minuscules) car bon, c'est tout de même sur Windows. (Pouah.)
Avertissement 2: aucun fichier journal, donc le diagnostic des fichiers qui échouent pendant la reconnaissance - ce qu'ils font certainement - est de retour sur vous. DocuDirect produira avec plaisir des sorties brouillées comme des pages entières simplement manquantes. J'ai écrit un script python en utilisant le module PyPDF2 pour implémenter une validation brute: tester que le nombre de pages de sortie correspondait au nombre de pages d'entrée. Voir ci-dessous.
Mise en garde 3: Un fichier d'image d'entrée flou et indistinct entraînera le blocage permanent d'OmniPage, sans utiliser de processeur; il ne récupère jamais. Cela fait vraiment dérailler le traitement par lots et je n'ai trouvé aucune solution de contournement. J'ai également signalé cela à Nuance, mais je n'ai rien obtenu.
@Joe a raison sur le fait que le logiciel est mal programmé et documenté. Je note que le cœur d'OmniPage possède une technologie magique de reconnaissance des caractères incroyable, mais la coque extérieure (interface graphique et traitement par lots) est suffisante pour vous faire tirer vos cheveux.
J'approuve la suggestion de @ Joe et @ Kiwi de filtrer les fichiers à l'aide de scripts, afin de ne présenter le package OCR qu'avec des documents images non protégés.
Ma seule affiliation avec Nuance est en tant que client pas exactement satisfait - j'ai un lot de tickets d'assistance non résolus pour le prouver :)
@Joe: Réponse tardive, mais peut-être toujours pertinente. @SuperUser community: J'espère que vous pensez que c'est sur le sujet.
** La mise à jour ** du package successeur est Nuance PowerPDF Advanced, au prix de seulement 150 $. J'ai eu encore plus de succès avec ça, c'est tout aussi précis mais beaucoup plus stable.
Le script python de validation d'arborescence pré / post-OCR suit.
la source
Vous pouvez envisager l'Autobahn DX d'Aquaforest: http://www.aquaforest.com/en/autobahn.asp
Il est conçu pour traiter des lots de PDF et dispose d'une variété d'options (par exemple, ignorer ou passer des fichiers OCRed) ainsi que des options de traitement intelligent des PDF qui peuvent offrir un meilleur résultat (par exemple, si un PDF contient des pages d'images et d'autres les pages de texte, il peut simplement OCR les pages d'image)
la source
Le
Mac
ouLinux
:parallel --tag -j 2 ocrmypdf '{}' 'output/{}' ::: *.pdf
D' ici .
la source