Распознавание текста в больших количествах файлов PDF и DJVU

С использованием утилиты DjvuOCR и дополнительных способов частичной автоматизации.

В теме на форуме (для перехода по ссылке там нужно быть зарегистрированным пользователем) помогли создать скрипт, который, если положить в папку с подпапками, в которых распакованы с DjvuOCR на картинки файлы DJVU в количестве в каждой примерно до 1000 штук с созданными файлами пакетов, автоматизирует их обработку в Finereader 8. Надо открыть файл в редакторе AutoIt и изменить там путь до директории с папками, где файлы для обработки.


Выпущена новая версия скрипта для пакетного распознавания DJVU. Скачать архив. Теперь можно выставить любые нужные из имеющихся в вашей версии программы языки и сохранить настройки в файл. Для вызова горячими клавишами окна сохранения настроек это надо одновременно нажать и подержать «Alt+t+o». У меня этот файл лежит в «Мои документы», думаю, что можно и по другому пути. Вам возможно может понадобиться не этот файл просто положить в эту папку, а сохранить из программы свой, чтобы Finereader запомнил место. Имя должно быть такое же (это прописано в скрипте, если брать другое название, то нужно изменить там). Интерфейс Finereader 8 также должен быть на английском языке. После запуска скрипта какие то окна других программ трогать не надо, так как полез закрывать одно окно и скрипт остановился, пришлось перезапускать. Если Вы запускаете Finereader в первый раз, то надо снять галочку вывода окна приветствия каждый раз, которое сначала появляется. Надо поправить в файле путь до вашей рабочей директории, сейчас там выставлено «D:\djvu». В настройки сохранял в качестве дополнительного латинский язык, это нужно для обработки документов официальной медицины. Также можно добавить украинский язык, если текст написан в этой стране.

Если Вы распознавали перед этим что то в другой директории, советую маленький файлик в 1-3 страницы распознать и сохранить в папку с подпапками, в которых файлы. Чтобы Finereader запомнил путь.

Было и такое, что обработка остановилась при выборе загрузки настроек. Нажал вручную «Alt»+T+O и обработка продолжилась.

Через некоторое время обнаружилось, что новая версия может распознать только одну папку и обработка остановится. Как вариант, можно запусть по новой. Заново может распознаться уже сделаное и то что не было обработано с первого раза..

Сравнил версии, новую с той, что была раньше и в строке 139 увидел, что вставлено комментирование строки. Это мешает делать скриншот в папку, где подпапки с обрабатываемыми папками. На каждую обработанную подпапку должно делаться автоматически по одному скриншоту, таким образом сразу будет заметно, если какая то папка не обработана. Потестил пару раз с убранным комментированием строки и отработало так как надо, обработав все папки.
То есть в новой версии вот так:
;_ScreenCapture_CaptureWnd($i & ".jpg", WinGetHandle("ABBYY FineReader")) ; <= удалить после отладки
Надо убрать первый знак спереди, чтобы стало вот так:
;_ScreenCapture_CaptureWnd($i & ".jpg", WinGetHandle("ABBYY FineReader")) ; <= удалить после отладки


Русификация комментариев в коде скриптов Scite.


Хороший человек на форуме AutoIT помог с написанием скриптов автоматизации для DJVUOCR v.2.3.

Скачать. Напоминаю, что файлы автоматически можно рассортировать по подпапкам по 1000 страниц утилитой с соответствующей страницы.

Рекомендую начинать обработку не более, чем с 4-5 папками проектов для Finereader и увеличивать при необходимости, если всё будет нормально с этим количеством. Чтобы в случае сбоя не пришлось потратить много времени на переделывание.

Вот так лучше делать, в отличие от того, что написано в архиве для программы ограничения нагрузки процессора:
После запуска ограничителя ресурсов процессора выбирите «File»-«Watch...». Если не активен этот пункт в меню софта после предыдущей работы, то надо закрыть и снова открыть программу.


Пользователь InnI с форума AutoIt также создал программу, которая заставляет подавать звуковой сигнал через системный динамик при малой нагрузке на процессор.
Это полезно, когда на одном ПК работаете, а на другом идет распознавание. Если у обоих компьютеров общие монитор, клавиатура, мышь, аудиоколонки, а переключение производится свитчем, то этот способ даст возможность узнать, когда обработка остановилась. Только эта возможность работает в Windows XP, а не в более поздних операционных системах. Так как у них нет вывода на внутренний динамик, а только на звуковую карту.

Примечание. Замечен нежелательный момент. Бывает, когда один файл распознан, идет сохранение, перед вторым файлом начинает пикать. Создана новая версия с настройками. После тестирования планирую опубликовать здесь.


С помощью скрипта для PDF файлов.

Выяснилось через некоторое время. Подсказал знающий человек. Чтобы в некоторых случаях не происходила остановка перед нажатием на кнопку сохранения, нужно в самый верх оригинального скрипта добавить строку (сейчас в скачиваемом варианте нету этого):
Opt("SendKeyDelay", 700)

С помощью скрипта для DJVU файлов.

Несколько вспомогательных программ здесь, написанных на C+, имеют одинаковые файлы. Вот исходники.

Для обсуждения некоторых нерешенных вопросов создал темы в разделе форума:
http://publ.lib.ru/cgi/forum/YaBB.pl?board=skan.


Резервная копия дистрибутива AutoIt, уроки и дополнительный софт по нему для программистов:

Часть 1, часть 2.

Версия, которая у меня установлена на 12 мая 2017 года 3.3.12.0.


Обновления информации:

Через некоторое время понял, что в DjvuOCR лучше выставлять галочку на "В серый", а с "В чёрно-былый" убрать и сохранить настройки. Тогда, если в файле текст будет не чёткий, он всё равно может быть разпознан, а в чёрно - белом варианте просто может быть замылин чёрным или белым цветом.

В Finereader 9 в настройках сохранения я рекомендую снимать галочку включения колонтитулов в конечный результат (Keep headers and footers). В этом случае больше шансов, что фразы или слова на разных страницах будут разорваны многочисленными повторяющимся фразами. Но это часто не работает и колонтитулы всё равно попадают в текст.

Очень могут ослажнить работу встречающиеся запароленные файлы. Существует бесплатная версия программы для поиска их заранее. Её можно было запустить на компьютерах только в прошлые годы. В комплекте софт, который помогает ей работать на современных ПК.
Скачать поисковик запароленных..
Очень редко у меня эта программа пропускала файл с паролем, то есть не находила.

При работе с PDF напоминаю, что если произошла остановка перед сохранением в Finereader 8, то можно нажать на кнопку сохранения и бывает, что со следующим файлом уже всё нормально, делает автоматически дальше. Но лучше если у Вас будет резервная копия файлов, которые лежат в папке распознаваемых файлов, потому что иногда перезаписывается файл оригинала, а иногда он нужен снова, если были замечены какие то проблемы распознанной версии и надо его обработать по новой.

Ранее писал про программу TTFA нарезки PDF для файлов с размером в несколько десятков мегабайт и несколько сотен страниц (для файлов типа журналов с малым количеством страниц всё нормально бывает без сбоев (имею в виду, что для распознавания такие файлы нету смысла резать)). Нашёл новый порядок выставления количества частей при нарезки. Там на колонке Parts count ставьте число и жмите Enter. Перескочит на новую строку, опять число и жмите Enter и так далее. Таким образом можно относительно быстро проставить число нарезок. Страница, где качал с сайта не работает, поэтому вот дистрибутив для загрузки (на всякий случай положил прогу автора программы для склейки PDF): Скачать TTFA.

Бывают попадаются PDF или DJVU, в которых страницы лежат боком. На момент написания этого текста, когда нужно, обрабатываю их в Finereader 9 поштучно, выставив в настройках исправление ориентации (автоматически делает) и разрезку на страницы, если там сдвоенный разворот.

Для документов на официальную медицинскую тематику, существуют варианты Finereader 8 с несколькими языками, в которой в настройках можно найти дополнительно латинский язык (это в Shose more languages, выбрать latin).

Если версия программы не содержит этот язык, то можно распаковать архив с файлом латинского языка в папку с Finereader 8.

На некоторых файлах (очень редко) происходит ошибка, потому что не хватает места на системном жёстком диске. То есть папка временных файлов заполняется быстрее, чем документ обрабатывается. У меня под установку операционной системы Windows XP был создан диск «C» размером 25 гигабайт. Думаю, что если есть возможность, то нужно делать больше (50-100 Gb).

При обработке многих PDF сразу со скриптом и Finereader 8 некоторые файлы получаются очень большого размера. Можно такие пакеты заданий открыть повторно и сохранить с настройкой «Medium (for screen)».
В качестве альтернативного варианта можно открыть пакет задания распознанного файла в Finereader 9 и он автоматически переконвертируется быстро в его формат. Там в настройках сохранения PDF для картинок выбрать 60%, оставив 300 DPI и галочку улучшения изображения не снимать. При количестве страниц, как в журналах нормально получается. И для файлов по несколько сотен страниц тоже может быть хорошо. Если размер всё равно получается больше 100 мегабайт, то в некоторых случаях для таких документов в несколько сотен страниц с высокой чёткостью изображения можно выбрать 200 dpi и качество около 45-50% (это подходит скорее для документов с высоким чётким качеством картинки. А когда попалась с сильно забеленным содержимом, то получилось плохо). Размер при этом может уменьшиться с несколько сотен мегабайт до десятков. Там можно сохранить в файл настройки и при надобности загружать их снова, чтобы вручную не выставлять по новой параметры (в английской версии это в Tools-Options-Advanced). В некоторых случаях (очень редко) размер всё равно не уменьшается и в этом случае может помочь максимальное сдвигание ползунка качества изображения влево на 10%. Но помогает не всегда. Также в качестве варианта можно не делать такие манипуляции, а просто в меню «Picture settings» выбирать «Medium (for screen)»

Когда открывал пакет задания «Finereader 8» в «Finereader 9». При этом у меня автоматически выставлялась галочка на «Use Mixed Raster Content», а возможно и на «Keep headers and footers». Советую обязательно снимать эти галочки. Если Вы не снимите галочку с пункта «Use Mixed Raster Content», то на скриншотах показываю (плохие и хорошие варианты рядом), к чему это может привести на примерах из книги авторов А.В. Пёрышкин, Е.М. Гутник «Физика. 9 класс» за 2014 год:






Если в Finereader 9 сохранять результат распознавания в PDF, выбрав один из вариантов таких настроек:

То часть страниц в одном и том же файле может принять такой вид (пример из книги автора Максимович Я.Б. «Прописывание, несовместимость и побочное действие лекарственных средств» 1979 год.):

Чтобы получить картинку такого вида:

можно попробовать снять галочку с пункта «Enhance image quality»: