Это обсуждалось год назад здесь:
Пакетное распознавание текста для многих 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\'`;
}
}
}
}
}
Ответы:
Я тоже искал способ пакетного распознавания многих PDF-файлов в автоматическом режиме, без особой удачи. В конце концов, я нашел работоспособное решение, подобное вашему, используя Acrobat со следующим сценарием:
Скопируйте все соответствующие PDF-файлы в определенный каталог.
Удалите PDF-файлы, уже содержащие текст (при условии, что они уже OCRd или уже текст - я не знаю, что это идеально, но на данный момент достаточно хорошо).
Используйте AutoHotKey для автоматического запуска Acrobat, выбора определенного каталога и OCR для всех документов, добавляя «-ocr» к их имени файла.
Переместите файлы OCRd обратно в их исходное местоположение, используя файл «-ocr.pdf», чтобы определить, был ли он успешным.
Это немного Хит Робинсон , но на самом деле работает довольно хорошо.
источник
Полагаю, вам необходимо осознать, что ABBYY FineReader - это решение для конечного пользователя, предназначенное для обеспечения быстрого и точного оптического распознавания текста.
Исходя из моего опыта, проекты OCR каждый раз содержат существенно разные детали, и нет никакого способа создать индивидуальный подход к каждому уникальному случаю. Но я могу предложить вам более профессиональные инструменты, которые могут сделать эту работу за вас:
Взгляните на ABBYY Recognition Server , это профессиональный продукт для автоматизации распознавания.
Что касается Linux, взгляните на http://ocr4linux.com , это утилита командной строки, которая может вам подойти.
Для более сложных задач у ABBYY есть очень гибкие SDK, такие как ABBYY FineReader Engine (собственный) или ABBYY Cloud OCR SDK (на основе облака Microsoft Azure), которые позволяют вам обрабатывать OCR так, как вы этого хотите.
Я входил в состав группы разработчиков фронт-энда для облачного сервиса, указанного выше, и могу предоставить больше информации о нем, если это необходимо.
Рассматривая поиск текстового слоя в PDF, я не могу дать никаких советов по этому поводу, потому что эта задача немного отличается от OCR, которая является моей специальностью, поэтому я нахожу ваш подход к использованию внешнего сценария очень разумным. Может быть, вам пригодится эта дискуссия: http://forum.ocrsdk.com/questions/108/check-if-pdf-is-scanned-image-or-contains-text
источник
На Linux
Лучший и самый простой выход -
pypdfocr
это не менять PDFВ конце у вас будет другой,
your_document_ocr.pdf
как вы хотите, с возможностью поиска текста. Приложение не меняет качество изображения. Немного увеличивает размер файла, добавляя оверлейный текст.Пакетные PDF-файлы
Если PDF-файлы находятся в подпапках:
Обновление 3 ноября 2018 года:
pypdfocr
больше не поддерживается с 2016 года, и я заметил некоторые проблемы из-за незанятости.ocrmypdf
( модуль ) выполняет знакомую работу и может использоваться следующим образом:Установить:
или
так что команда станет
источник
У меня был некоторый успех в начале 2015 года, когда я полностью использовал автоматическое распознавание текста с использованием Nuance OmniPage Ultimate для Windows. Не бесплатно, цена по прейскуранту $ 500. Используйте пакетную программу «DocuDirect», которая входит в комплект. У него есть опция «Запускать работу без каких-либо подсказок», которая кажется прямым ответом на ваш оригинальный вопрос.
Я использовал DocuDirect для вывода одного PDF-файла с возможностью поиска для каждого входного изображения (т. Е. PDF-файла без возможности поиска); можно сказать, чтобы реплицировать дерево входных каталогов в выходной папке, а также исходные имена входных файлов (почти - см. ниже). Использует несколько ядер тоже. Точность была лучшей из пакетов, которые я оценил. Защищенные паролем документы пропускаются (без остановки задания, без отображения диалогового окна).
Предупреждение 1: Почти исходные имена файлов - суффикс ".PDF" становится ".pdf" (т. Е. Из верхнего в нижний регистр), потому что, эй, это все то же самое в Windows. (Уф).
Предостережение 2: Нет файла журнала, поэтому диагностика, какие файлы потерпели неудачу во время распознавания - что они определенно делают - возвращается на вас. DocuDirect с удовольствием выдаст искаженные результаты, например, просто пропустив целые страницы. Я написал скрипт на Python, используя модуль PyPDF2 для реализации грубой проверки: проверки того, что число выходных страниц соответствует количеству входных страниц. См. ниже.
Предупреждение 3: нечеткий, нечеткий входной файл изображения приведет к зависанию OmniPage навсегда, без использования какого-либо процессора; это просто никогда не восстанавливается. Это действительно срывает пакетную обработку, и я не нашел никаких обходных путей. Я также сообщил об этом Nuance, но ничего не получил.
@Joe прав насчет того, что программное обеспечение плохо программируется и документируется. Я отмечаю, что ядро OmniPage имеет удивительную магическую технологию распознавания символов, но внешней оболочки (GUI и пакетной обработки) достаточно, чтобы заставить вас выдернуть волосы.
Я поддерживаю предложение @ Joe's и @ Kiwi отсеивать файлы с использованием сценариев, чтобы представить пакет OCR только с незащищенными документами с изображениями.
Моя единственная связь с Nuance - не совсем удовлетворенный клиент - у меня есть партия неразрешенных билетов поддержки, чтобы доказать это :)
@Joe: поздний ответ, но, возможно, все еще актуален. Сообщество @SuperUser: надеюсь, вы считаете, что это по теме.
** Обновление ** преемник пакета Nuance PowerPDF Advanced, цена по прейскуранту всего $ 150. У меня был еще больший успех с этим, он такой же точный, но гораздо более стабильный.
Сценарий Python для проверки дерева до / после OCR приведен ниже.
источник
Вы можете рассмотреть Autobahn DX Aquaforest: http://www.aquaforest.com/en/autobahn.asp
Он предназначен для обработки пакетов PDF-файлов и имеет различные параметры (например, пропуск или сквозное распознавание файлов), а также параметры интеллектуальной обработки PDF-файлов, которые могут обеспечить лучший результат (например, если в PDF есть несколько страниц с изображениями и некоторые текстовые страницы, это может просто OCR изображения страниц)
источник
На
Mac
илиLinux
:parallel --tag -j 2 ocrmypdf '{}' 'output/{}' ::: *.pdf
От сюда .
источник