это обсуждалось здесь год назад:
пакетный OCR для многих PDF-файлов (еще не OCRed)?
есть ли способ пакетной обработки PDF-файлов OCR, которые еще не были обработаны? Таково, мне кажется, нынешнее положение дел, связанное с двумя вопросами:
партия OCR PDF-файлов
Windows
-
Acrobat - это самый прямолинейный ocr двигатель, который будет пакетной OCR. Только проблема кажется, 1) он не будет пропускать файлы, которые уже были OCRed 2) попробуйте бросить кучу PDF-файлов на него (некоторые старые) и смотреть его аварии. Это немного глючит. Он будет предупреждать вас при каждой ошибке, с которой он сталкивается (хотя вы можете сказать, что программное обеспечение не уведомляет. Но опять же, он ужасно умирает на некоторых типах PDF-файлов, поэтому ваш пробег может отличаться.
-
программы (Batch / Scansnap), Omnipage - эти должны быть одними из худших запрограммированных части программного обеспечения, известные человеку. Если вы можете узнать, как полностью автоматизация (без запроса) пакетный OCR PDF-файлы экономия то же имя тогда, пожалуйста, напишите здесь. Кажется, единственные решения, которые я мог найти, где-то потерпели неудачу-переименование, не полностью автоматизированное и т. д. п. В лучшем случае, есть способ сделать это, но документация и программирование настолько ужасны, что вы никогда не узнаете.
-
ABBYY FineReader Двигатель,ABBYY Recognition Server - это действительно больше корпоративных решений, вам, вероятно, было бы лучше просто заставить acrobat запустить папку и попытаться отсеять PDF-файлы, которые дают вам ошибки/сбой программы, чем пытаться установить оценочное программное обеспечение (предполагая, что вы простой конечный пользователь). Не кажется, что цена конкурсная для малого потребителя.
-
** Автобан станция dх ** стоимость этого продукта настолько запредельно, что вы, вероятно, могли бы купить 6 копий acrobat. Не готовое решение. Если вы-корпоративная установка, это может стоить того.
Linux
- WatchOCR - больше не разрабатывается, и в основном невозможно запустить на современных дистрибутивах Ubuntu
- pdfsandwich - больше не разработаны, в основном невозможно запустить на современных дистрибутивах Ubuntu
- ** * ABBY LINUX OCR ** - это должно быть scriptable, и, кажется, есть некоторые хорошие результаты:
http://www.splitbrain.org/blog/2010-06/15-linux_ocr_software_comparison
однако, как и многие другие продукты ABBYY, они взимают плату за страницу, опять же, вам может быть лучше попытаться заставить Acrobat Batch OCR работать.
-
* * * Ocrad, GOCR, OCRopus, tesseract, * * - они могут работать, но есть несколько проблем:
- OCR результаты не так велики, как, скажем, acrobat для некоторых из них (см. ссылку выше).
- ни одна из программ в файл PDF и вывод в файл PDF. Вы должны создать сценарий и разбить PDF сначала и запустить программы над каждым, а затем собрать файл в формате pdf
- как только вы это сделаете, вы можете обнаружить, как и я, что (Тессеракт)создает слой OCR, который смещается. Поэтому, если вы ищете слово "the", вы получите подсветку части слова рядом с она.
-
Пакетная DjVu → конвертировать в PDF-не смотрел в него, но кажется ужасным решением круглого боя.
Online
- PDFcubed.com – ладно, не пакетное решение.
- ABBYY Cloud OCR - не уверен, что это действительно пакетное решение, в любом случае, вы должны заплатить за страницу, и это может получиться довольно дорогой.
определения номера-распознавания PDF-файлов
это немного легче проблема, которая может быть легко решена в Linux и тем более в Windows. Я смог написать сценарий perl с помощью pdffont
чтобы определить, внедрены ли шрифты, чтобы определить, какие файлы не являются OCRed.
нынешние "решения"
-
используйте скрипт для идентификации PDF-файлов без OCRed (чтобы не перезапускать тысячи OCRed PDF-файлы) и скопируйте их во временный каталог (сохраняя правильное дерево каталогов), а затем используйте Acrobat в Windows, чтобы запустить их в надежде, что меньшие пакеты не будут аварийно завершаться.
-
используйте тот же сценарий, но получите один из инструментов распознавания Linux для правильной работы, рискуя качеством распознавания.
Я думаю, что я собираюсь попробовать #1, я просто слишком беспокоюсь о результатах инструментов OCR Linux (я не предполагаю, что кто-то сделал сравнение) и разбиение файлов на части и сшивание их вместе снова кажется ненужным кодированием, если Adobe может фактически пакетно OCR каталог без удушья.
Если вы хотите полностью бесплатное решение, вам придется использовать скрипт для идентификации неокредных PDF-файлов (или просто перезапустить их), а затем использовать один из инструментов linux для их распознавания. Teseract, кажется, имеют лучшие результаты, но опять же, некоторые из этих инструментов не поддерживаются хорошо в современных версиях Ubuntu, хотя, если вы можно настроить его и решить проблему, которую я имел, где слой изображения, не соответствующий слой соответствия текста (с tesseract), то у вас будет довольно работоспособное решение и еще раз Linux > Windows.
у вас есть рабочее решение полностью автоматизировать, партия OCR PDF-файлов, пропуская уже OCRed файлы с тем же именем, с высокое качество? Если это так, я был бы очень признателен за вклад.
Perl-скрипт для перемещения не-распознавания файлов в директорию Temp. Не могу гарантировать, что это работает и, вероятно, нужно переписать, но если кто-то заставит его работать (предполагая, что он не работает) или работать лучше, дайте мне знать, и я опубликую лучшую версию здесь.
#!/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 OCRedn";
my $currentdir = $File::Find::dir;
if ( $currentdir =~ /$sourcedirectory(.+)/ ) {
#if directory doesn't exist, create
unless(-d $outputroot.){
system("mkdir -p $outputroot");
}
#copy over file
my $fromfile = "$currentdir/$file";
my $tofile = "$outputroot/$file";
print "copy from: $fromfilen";
print "copy to: $tofilen";
copy($fromfile, $tofile) or die "Copy failed: $!";
# `touch $outputroot/'$file'`;
}
}
}
}
}