Про це йшлося рік тому тут:
Пакетний OCR для багатьох файлів PDF (ще не OCRed)?
Чи є спосіб отримати PDF-файли OCR, які ще не були OCRed? Це, на мій погляд, сучасний стан речей, які стосуються двох питань:
Пакетні PDF-файли OCR
Windows
Acrobat - Це найпростіший двигун ocr, який здійснюватиме обробку OCR. Єдина проблема, здається, полягає в тому, що вона не пропускає файли, які вже були OCRed. 2) спробуйте кинути в неї купу PDF-файлів (деякі старі) і спостерігати, як вона виходить з ладу. Це трохи баггі. Він попередить вас при кожній помилці, на яку він зіткнеться (хоча ви можете сказати програмному забезпеченню не повідомляти. Але знову ж таки, він жахливо гине на певних типах PDF-файлів, тому ваш пробіг може змінюватися.
ABBYY FineReader (Batch / Scansnap), Omnipage - Це повинні бути одні з найгірших програмованих програм, відомих людині. Якщо ви можете дізнатися, як повністю автоматизувати (без спонукання) пакетну OCR збереження PDF-файлів з тим самим іменем, будь ласка, опублікуйте тут. Здається, єдине рішення, яке я міг десь знайти, не вдалося - перейменування, не повністю автоматизоване тощо. У кращому випадку є спосіб це зробити, але документація та програмування настільки жахливі, що ви ніколи не дізнаєтесь.
ABBYY FineReader Engine , сервер розпізнавання ABBYY - це справді більше корпоративних рішень, вам, мабуть, було б краще просто отримати акробат для запуску папки та спробувати вилучити файли pdfs, які дають вам помилки / збої в роботі програми, ніж переживати проблеми встановити програмне забезпечення для оцінки (якщо припустити, що ви простий кінцевий користувач). Не здається економічно конкурентоспроможним для маленького користувача.
** Робоча станція Autobahn DX ** вартість цього продукту настільки непомітна, що ви, ймовірно, могли придбати 6 примірників акробату. Насправді не для кінцевих користувачів. Якщо ви налаштовані на підприємство, це, можливо, варто для вас.
Linux
- WatchOCR - більше не розроблений і в основному неможливий запуск сучасних дистрибутивів Ubuntu
- pdfsandwich - більше не розвинений, в основному неможливий запуск сучасних дистрибутивів Ubuntu
- ** ABBY LINUX OCR ** - це має бути сценарієм, і, здається, має хороші результати:
http://www.splitbrain.org/blog/2010-06/15-linux_ocr_software_compitation
Однак, як і багато інших цих продуктів ABBYY, які вони заряджають на сторінці, знову ж таки, вам може бути краще спробувати змусити Acrobat Batch OCR працювати.
** Ocrad, GOCR, OCRopus, tesseract, ** - це може працювати, але є кілька проблем:
- Результати OCR не такі великі, як, скажімо, акробат для деяких із них (див. Вище посилання).
- Жодна з програм не приймає PDF-файл і не виводить PDF-файл. Ви повинні створити сценарій і розбити PDF спочатку і запустити програми над кожним, а потім зібрати файл у форматі PDF
- Як тільки ви це зробите, ви можете виявити, як я зробив, що (tesseract) створює шар OCR, який переміщується. Отже, якщо ви будете шукати слово "the", ви отримаєте виділення частини слова поруч.
Пакетна DjVu → Перетворити в PDF - не розглядала, але здається, що це жахливе рішення навколо.
Інтернет
- PDFcubed.com - давай, не дуже пакетне рішення.
- ABBYY Cloud OCR - не впевнений, чи справді це пакетне рішення, так чи інакше, вам доведеться платити сторінкою, і це може стати досить дорогим.
Ідентифікація PDF-файлів, що не мають OCRed
Це дещо простіша проблема, яку можна легко вирішити в Linux і тим більше в Windows. Мені вдалося кодувати сценарій perl, використовуючи, pdffont
щоб визначити, чи вбудовані шрифти, щоб визначити, які файли не є OCRed.
Поточні "рішення"
Використовуйте сценарій для ідентифікації pdfs, що не мають OCRed (щоб ви не повторювали більше тисяч OCRed PDF-файлів) і скопіюйте їх у тимчасовий каталог (зберігши правильне дерево каталогів), а потім використовуйте Acrobat для Windows, щоб перейти на ці сподівання, що менший партії не впадуть.
використовуйте той самий сценарій, але отримайте один з інструментів lrrrrrrr для належної роботи, ризикуючи якістю ocr.
Я думаю, що я спробую №1, я занадто сильно переживаю за результати інструментів Linux OCR (я не думаю, що хтось зробив порівняння), і розбиття файлів на частини та зшивання їх знову, здається, не зайвим буде кодування, якщо Adobe насправді може пакетно використовувати каталог OCR без задухи.
Якщо ви хочете отримати абсолютно безкоштовне рішення, вам доведеться скористатися сценарієм для ідентифікації pdfs, що не мають OCRed (або просто перезапустити їх над OCRed), а потім скористатися одним із інструментів linux, щоб спробувати їх скасувати. Здається, що Teseract має найкращі результати, але знову ж таки, деякі з цих інструментів не підтримуються добре в сучасних версіях Ubuntu, хоча якщо ви можете налаштувати його та виправити проблему, у мене було місце, коли шар зображення не відповідає шару відповідності тексту ( з tesseract), тоді ви отримаєте досить працездатне рішення і ще раз Linux> Windows.
Чи є у вас робоче рішення для цілком автоматизованої, пакетної роботи PDF-файлів OCR , пропускаючи вже якісь файли OCRed, зберігаючи те саме ім’я, з високою якістю ? Якщо так, я б дуже вдячний за внесок.
Сценарій 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\'`;
}
}
}
}
}