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