Пакетное распознавание документов при помощи FineReader и AutoIT
Опубликовано Cyrill 25.03.2008Привет,
Прошу прощения, что давно не писал - исправляюсь.
Возможно вам доводилось сталкиваться с задачей, когда надо распознать в удобочитаемый (или редактируемый) вид сканированные или отфотографированные изображения каких-нибудь текстов. Например, редкие учебные пособия, переснятые в перерыве или, например, куча сканированной рабочей документации. Основная проблема в такой ситуации состоит в том, что FineReader, являющийся, на мой взгляд, лидером в точности распознавания, не имеет встроенных средств для пакетной обработки. Существует корпоративная версия, но она, по сути, решает несколько другие задачи: работа по расписанию и т.п. В общем, не совсем то, что нужно. Теоретически, существует Abbyy Recognition Server - но он стоит совсем других денег и лицензируется на объем обрабатываемых документов (либо абсолютное значение, либо помесячный лимит), что не вполне подходит под мои требования =)
Посему, было решено обходиться малыми средствами, а сэкономленное пустить на компьютер, который будет заниматься распознаванием.
После дискуссии на форуме Abbyy, обнаружил скрипт автоматизации FineReader 8 средствами абсолютно бесплатного средства автоматизации действий с интерфейсом AutoIT. Выяснилось, что с девятым FR скрипт работает не совсем корректно, посему пришлось дорабатывать напильником.
Результат тестировался в русских версиях Vista HB и Windows XP Prof, и, в общем, работает =) В скрипте есть ряд задержек, выявленных эмпирическим путем. Допускаю, что серией экспериментов эти задержки можно сократить.
Как пользоваться скриптом?
- Скачайте и установите AutoIT.
- Установите ABBYY FineReader.
- Установите в системе английскую раскладку клавиатуры умолчанию
- Запустите FR и его переключите его интерфейс на английский язык
- Откройте и распознайте в ручном режиме любые (желательно небольшие) файлы изображений из папки, предварительно установив необходимые опции распознавания (это нужно для сохранения настроек FR, эти же настройки будут применяться ко всем автоматически распознаваемым файлам)
- После сохранения распознанного вручную файла, FR нужно закрыть; в диалоговом окне сохранения файла нужно выключить галочку “Открыть сохраненный файл в родном приложении”, иначе открытые файлы очень быстро съедят память
- При поврежденном файле изображения скрипт приостанавливает выполнение и ждет нажатия кнопки, после чего выполнение продолжается.
- При необходимости изменить в коде скрипта константы $FR_dir, $drive и $START_dir
- Чтобы построить список папок, выполните небольшой батничек, приведенный под катом, результат его работы положите в папку $START_dir. Обратите внимание, что пустые папки тоже попадают в список, поэтому их надо вычистить вручную.
Известные слабые места скрипта:
- Для каждой итерации FR запускается заново
- Существуют случайные баги в работе скрипт - подозреваю, это связано с AutoIT, но у меня скрипт стабильно работает при выключенном explorer.exe, отключенном антивирусе, остановленных некритичных службах XP и остановленном антивирусе - чтобы минимизировать возможность воздействия на работу скрипта
- Задержка в 15 секунд после сохранения файла - чудовищно велика при большом количестве папок; уменьшение ее, однако, влечет увеличение сбоев в работе скрипта
Вот так - сыро, местами глючно, но чертовски дешево (100 € за FineReader Prof).
Под катом - код для AutoIT и bat-файл для сбора дерева папок. Удачного распознавания! Спасибо Alexrey (ник U235 на форумах ABBYY) за скрипты для FR8.

Свежие комментарии