Это обсуждалось год назад здесь:
Пакетное распознавание текста для многих PDF-файлов (еще не распознано)?
Есть ли способ пакетной обработки документов OCR PDF, которые еще не были распознаны? Это, я думаю, текущее состояние дел, связанных с двумя проблемами:
Пакетное распознавание PDF
Windows
Acrobat - это самый простой движок OCR, который будет использовать OCR. Единственная проблема, по-видимому, заключается в том, что: 1) он не пропускает файлы, которые уже были распознаны; 2) попробуйте бросить в него кучу PDF-файлов (некоторые старые) и посмотреть, как он вылетает. Это немного глючит. Он будет предупреждать вас о каждой ошибке, с которой он сталкивается (хотя вы можете указать программе не уведомлять об этом. Но, опять же, он ужасно умирает на определенных типах PDF-файлов, поэтому ваш пробег может отличаться.
ABBYY FineReader (Batch / Scansnap), Omnipage - это, должно быть, некоторые из худших запрограммированных частей программного обеспечения, известных человеку. Если вы можете узнать, как полностью автоматизировать (без подсказок) пакетное OCR сохранения PDF-файлов с тем же именем, пожалуйста, напишите здесь. Кажется, что единственные решения, которые я мог найти, где-то не сработали - переименование, не полностью автоматизированный и т. Д. И т. Д. В лучшем случае есть способ сделать это, но документация и программирование настолько ужасны, что вы никогда не узнаете.
ABBYY FineReader Engine , ABBYY Recognition Server - это действительно больше корпоративных решений, вам, вероятно, было бы лучше просто запустить acrobat над папкой и попробовать и отсеять pdf-файлы, которые приводят к ошибкам / сбоям программы, чем испытывать трудности с попытками установить оценочное программное обеспечение (при условии, что вы простой конечный пользователь). Не кажется конкурентоспособным по цене для маленького пользователя.
** Рабочая станция Autobahn DX ** стоимость этого продукта настолько непомерно высока, что вы, вероятно, можете купить 6 копий акробата. Не совсем решение для конечного пользователя. Если вы настроены на предприятии, это может стоить того.
Linux
- WatchOCR - больше не разрабатывается и практически не работает на современных дистрибутивах Ubuntu
- pdfsandwich - больше не разрабатывается, практически невозможно запустить на современных дистрибутивах Ubuntu
- ** ABBY LINUX OCR ** - это должно быть написано в сценарии и, похоже, дает хорошие результаты:
http://www.splitbrain.org/blog/2010-06/15-linux_ocr_software_comparison
Однако, как и многие другие продукты ABBYY, которые они заряжают на странице, опять же, возможно, вам стоит попробовать заставить Acrobat Batch OCR работать.
** Ocrad, GOCR, OCRopus, tesseract, ** - они могут работать, но есть несколько проблем:
- Результаты распознавания не такие большие, как, скажем, у акробатов для некоторых из них (см. Ссылку выше).
- Ни одна из программ не берет файл PDF и не выводит файл PDF. Вы должны создать сценарий и сначала разбить PDF на части и запустить программы для каждого, а затем снова собрать файл в формате PDF.
- Как только вы это сделаете, вы, как и я, можете обнаружить, что (tesseract) создает слой OCR, который смещен. Поэтому, если вы ищете слово «the», вы выделите часть слова рядом с ним.
Пакетное DjVu → Конвертировать в PDF - не рассматривал его, но кажется ужасным решением проблемы.
В сети
- PDFcubed.com - давай, не совсем пакетное решение.
- ABBYY Cloud OCR - не уверен, что это действительно пакетное решение, так или иначе, вам придется платить за страницу, и это может стать довольно дорогим.
Выявление неопубликованных PDF-файлов
Это немного более простая проблема, которая может быть легко решена в Linux и намного меньше в Windows. Я смог закодировать Perl-скрипт, pdffont
чтобы определить, встроены ли шрифты, чтобы определить, какие файлы не-OCRed.
Актуальные «решения»
Используйте сценарий для идентификации PDF-файлов без OCR (чтобы вы не перезапускали более тысячи PDF-файлов с OCR) и скопируйте их во временный каталог (сохраняя правильное дерево каталогов), а затем используйте Acrobat в Windows, чтобы запустить их, надеясь, что меньший размер партии не потерпят крах.
используйте тот же скрипт, но получите один из инструментов linux ocr для правильной работы, рискуя качеством ocr.
Я думаю, что я собираюсь попробовать # 1, я просто слишком беспокоюсь о результатах инструментов OCR в Linux (я не думаю, что кто-то сделал сравнение), и кажется, что разбить файлы на части и соединить их снова быть ненужной кодировки, если Adobe может на самом деле пакетное OCR каталог без удушья.
Если вы хотите получить полностью бесплатное решение, вам нужно будет использовать сценарий, чтобы идентифицировать pdf-файлы без OCR (или просто перезапустить OCR-файлы), а затем использовать один из инструментов linux, чтобы попытаться их OCR. Тезеракт, кажется, дает лучшие результаты, но, опять же, некоторые из этих инструментов не очень хорошо поддерживаются в современных версиях Ubuntu, хотя, если вы можете настроить его и устранить проблему, у меня была проблема, когда слой изображения не соответствовал слою соответствия текста ( с tesseract) тогда у вас будет довольно работоспособное решение и еще раз Linux> Windows.
Есть ли у вас работающее решение для полной автоматизации, пакетной обработки документов OCR PDF , пропуска уже существующих файлов OCR с тем же именем и высокого качества ? Если это так, я был бы очень признателен.
Скрипт Perl для перемещения файлов без OCRed во временный каталог. Не могу гарантировать, что это работает, и, вероятно, его нужно переписать, но если кто-то заставляет его работать (если он не работает) или работает лучше, дайте мне знать, и я выложу здесь лучшую версию.
#!/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\'`;
}
}
}
}
}