Dies wurde vor einem Jahr hier diskutiert:
Stapel-OCR für viele PDF-Dateien (noch nicht OCR-fähig)?
Gibt es eine Möglichkeit zum Stapeln von OCR-PDFs, die noch nicht OCR-fähig sind? Ich denke, dies ist der aktuelle Stand der Dinge, die sich mit zwei Problemen befassen:
Stapel-OCR-PDFs
Windows
Acrobat - Dies ist die direkteste OCR-Engine, mit der sich OCR stapeln lässt. Das einzige Problem scheint zu sein: 1) Es werden keine Dateien übersprungen, die bereits mit OCR versehen wurden. 2) Wirf ein paar PDFs darauf (einige alte) und sieh zu, wie es abstürzt. Es ist ein kleiner Buggy. Es warnt Sie bei jedem aufgetretenen Fehler (obwohl Sie die Software anweisen können, sich nicht zu benachrichtigen). Bei bestimmten PDF-Typen stirbt es jedoch erneut fürchterlich ab, sodass Ihre Laufleistung variieren kann.
ABBYY FineReader (Batch / Scansnap), Omnipage - Dies müssen einige der schlechtesten programmierten Softwareteile sein, die der Mensch kennt . Wenn Sie herausfinden können, wie Sie die Stapel-OCR von PDFs , die mit demselben Namen gespeichert werden, vollständig automatisieren können (ohne Aufforderung), posten Sie dies bitte hier. Es scheint, dass die einzigen Lösungen, die ich finden konnte, irgendwo fehlgeschlagen sind - Umbenennen, nicht vollautomatisch usw. usw. Bestenfalls gibt es eine Möglichkeit, dies zu tun, aber die Dokumentation und Programmierung sind so schrecklich, dass Sie es nie herausfinden werden.
ABBYY FineReader Engine , ABBYY Recognition Server - Dies sind wirklich mehr Unternehmenslösungen, wahrscheinlich ist es besser, wenn Sie Acrobat dazu bringen, einen Ordner zu überfliegen und pdfs auszusortieren, die Ihnen Fehler / Abstürze des Programms verursachen, als das mühsame Ausprobieren Evaluierungssoftware installieren (vorausgesetzt, Sie sind ein einfacher Endbenutzer). Scheint für den kleinen Benutzer nicht wettbewerbsfähig zu sein.
** Autobahn DX Workstation ** Die Kosten für dieses Produkt sind so unerschwinglich, dass Sie wahrscheinlich 6 Exemplare von Akrobaten kaufen könnten. Nicht wirklich eine Endbenutzerlösung. Wenn Sie ein Unternehmenssetup sind, kann sich dies für Sie lohnen.
Linux
- WatchOCR - nicht mehr entwickelt und auf modernen Ubuntu-Distributionen grundsätzlich nicht lauffähig
- pdfsandwich - nicht mehr entwickelt, auf modernen Ubuntu-Distributionen grundsätzlich nicht lauffähig
- ** ABBY LINUX OCR ** - dies sollte skriptfähig sein und scheint einige gute Ergebnisse zu haben:
http://www.splitbrain.org/blog/2010-06/15-linux_ocr_software_comparison
Wie bei vielen dieser anderen ABBYY-Produkte, die sie pro Seite berechnen, ist es jedoch möglicherweise besser, Acrobat Batch OCR zum Laufen zu bringen.
** Ocrad, GOCR, OCRopus, Tesseract, ** - diese können funktionieren, aber es gibt ein paar Probleme:
- OCR-Ergebnisse sind für einige von ihnen nicht so gut wie beispielsweise Akrobat (siehe obigen Link).
- Keines der Programme nimmt eine PDF-Datei auf und gibt eine PDF-Datei aus. Sie müssen zuerst ein Skript erstellen und die PDF-Datei aufteilen, die Programme über jede einzelne ausführen und dann die Datei als PDF neu zusammenstellen
- Wenn Sie dies tun, stellen Sie möglicherweise wie ich fest, dass (tesseract) eine OCR-Ebene erstellt, die verschoben wird. Wenn Sie also nach dem Wort 'the' suchen, erhalten Sie eine Hervorhebung des Teils des Wortes daneben.
Batch DjVu → In PDF konvertieren - habe es nicht untersucht, aber es scheint eine schreckliche Rundumlösung zu sein.
Online
- PDFcubed.com - komm schon, nicht wirklich eine Batch-Lösung.
- ABBYY Cloud OCR - Sie sind sich nicht sicher, ob dies wirklich eine Batch-Lösung ist, oder nicht. Sie müssen seitenweise bezahlen, was sehr teuer werden kann.
Identifizieren von nicht OCR-fähigen PDFs
Dies ist ein etwas einfacheres Problem, das unter Linux und noch viel weniger unter Windows leicht gelöst werden kann. Ich konnte ein Perl-Skript codieren, pdffont
um festzustellen, ob Schriftarten eingebettet sind, um festzustellen, welche Dateien nicht OCR-geschützt sind.
Aktuelle "Lösungen"
Verwenden Sie ein Skript, um nicht-OCRed-PDFs zu identifizieren (damit Sie nicht Tausende von OCRed-PDFs erneut ausführen), und kopieren Sie diese in ein temporäres Verzeichnis (wobei die richtige Verzeichnisstruktur beibehalten wird). Verwenden Sie dann Acrobat unter Windows, um diese zu überfliegen, in der Hoffnung, dass die kleinere Chargen stürzen nicht ab.
Verwenden Sie dasselbe Skript, aber sorgen Sie dafür, dass eines der Linux Ocr-Tools ordnungsgemäß funktioniert.
Ich denke, ich werde es mit Nummer 1 versuchen. Ich mache mir zu viele Sorgen um die Ergebnisse der Linux-OCR-Tools (ich nehme nicht an, dass jemand einen Vergleich angestellt hat). Es scheint, als würde man die Dateien aufteilen und wieder zusammenfügen unnötige Codierung sein, wenn Adobe tatsächlich ein Verzeichnis stapelweise OCR-fähig macht, ohne daran zu ersticken.
Wenn Sie eine völlig kostenlose Lösung wünschen, müssen Sie ein Skript verwenden, um die nicht-OCR-fähigen PDFs zu identifizieren (oder sie einfach erneut über OCR-fähige PDFs ausführen), und dann eines der Linux-Tools verwenden, um sie zu testen und zu OCRen. Teseract scheint die besten Ergebnisse zu liefern, aber auch hier werden einige dieser Tools in modernen Ubuntu-Versionen nicht gut unterstützt. Wenn Sie es jedoch einrichten und das Problem beheben können, bei dem die Bildebene nicht mit der Textanpassungsebene übereinstimmt ( mit tesseract) hättest du dann eine ziemlich brauchbare lösung und nochmal Linux> Windows.
Haben Sie eine funktionierende Lösung zur vollständigen Automatisierung von OCR-PDFs im Stapelbetrieb , bei der bereits OCR-Dateien mit gleichem Namen in hoher Qualität übersprungen werden ? Wenn ja, würde ich die Eingabe wirklich schätzen.
Perl-Skript zum Verschieben von Nicht-OCR-Dateien in ein temporäres Verzeichnis. Kann nicht garantieren, dass dies funktioniert und muss wahrscheinlich umgeschrieben werden, aber wenn jemand es funktioniert (vorausgesetzt, es funktioniert nicht) oder besser, lass es mich wissen und ich werde hier eine bessere Version posten.
#!/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\'`;
}
}
}
}
}