FineReader 12 — переход количества в качество
Как и в любой области человеческой деятельности, в мире софта нередко встречаются продукты, которые после яркого дебюта постепенно умирают. Читатель сам легко найдет примеры, когда все новые усовершенствования лишь загромождают некогда простую и изящную програмку, ничего не добавляя к основной ее функциональности. Наученный подобным горьким опытом на примере некоторых известных продуктов (не будем тыкать пальцем), я много лет не обращал внимания на регулярно появляющиеся новые версии самого, возможно, распространенного в мире произведения отечественных программистов: программы оптического распознавания символов ABBYY FineReader.
Как и в любой области человеческой деятельности, в мире софта нередко встречаются продукты, которые после яркого дебюта постепенно умирают. Читатель сам легко найдет примеры, когда все новые усовершенствования лишь загромождают некогда простую и изящную програмку, ничего не добавляя к основной ее функциональности. Наученный подобным горьким опытом на примере некоторых известных продуктов (не будем тыкать пальцем), я много лет не обращал внимания на регулярно появляющиеся новые версии самого, возможно, распространенного в мире произведения отечественных программистов: программы оптического распознавания символов (OCR, Optical Character Recognition) ABBYY FineReader. Распознает печатные тексты, если их засунуть в сканер — и ладно, а что еще можно от нее ждать? Вот когда «оно» научится распознавать рукописи Пушкина…
Так рассуждал я примерно десятилетие: возможности FineReader мне пришлось изучить подробно еще в начале двухтысячных, примерно в седьмой его версии. Тогда пришлось оцифровать целую книжку, я даже приобрел официальную Pro-копию программы и был разочарован: этот процесс потребовал такого количества ручной работы, что собственно скорость и качество распознавания почти не играли никакой роли.
Пару лет назад мне опять пришлось вплотную заняться распознаванием, я познакомился с последними версиями и искренне восхитился проделанной в компании ABBYY работой. Мало того, что программа с лету «кушала» PDF и DJVU, если в них ленивые оцифровщики разместили лишь слой изображения — она теперь научилась распознавать таблицы, помечать номера страниц, как колонтитулы, не мешая их с основным текстом, и даже (не поверите!) распознавать сноски, именно как сноски. В результате подготовка новой электронной версии той же самой 350-страничной книги с доведением копии до возможного идеала, заняла всего четыре дня (вместо почти трех недель десятилетие назад!). Сейчас я бы справился еще быстрее — много времени ушло на изучение новых приемов работы с распознанным текстом.
В прошлом году программа FineReader отметила свое двадцатилетие — первая версия вышла еще в 1993 году, когда сканеры были медленными, примитивными и безумно дорогими, а бытовые цифровые фотоаппараты существовали разве что в воображении генерального директора корпорации Apple Джона Скалли. С тех пор FineReader прошел необычайно большой путь — ему было куда совершенствоваться.
В первой половине февраля вышла очередная, 12-я версия программы. Рассказывая о ней, я не буду подробно останавливаться на отличиях от предыдущей, 11-й версии — хотя улучшения заметны невооруженным взглядом, отличия все таки не слишком велики. Здесь хочется просто остановиться на возможностях современных версий: современный Fine Reader отличается от себя самого десятилетием ранее, пожалуй, больше, чем выпускник технического вуза от юного члена кружка «Юных техников».
Не требуя от программы невозможного, тем не менее отметим также недостатки и упущения, в небезосновательной надежде, что разработчики обратят на эту публикацию внимание — во время написания статьи я докладывал о выявленных недостатках в компанию, и мне было обещано, что «все учтут».
Что мы делаем
Программа ABBYY FineReader предоставляет очень много возможностей для получения результатов оцифровки в самых разных форматах и для различных целей. Разобрать их все досконально мы не будем даже пытаться — для этого не хватит и целой книги, не то что журнальной статьи. Потому сосредоточимся на одной, но весьма востребованной сейчас задаче: подготовке электронных версий бумажных книг и брошюр. Эта задача охватывает достаточно много функций программы, чтобы познакомится с ней подробно.
Сначала о том, что мы хотим получить в результате. Несмотря на распространение мобильных «читалок» (в последнее время, к сожалению, стремительно теряющих рынок в пользу универсальных планшетов), производители которых выдумали множество форматов электронных книг, базовым форматом для них остается старый добрый PDF. Он позволяет получить аутеничную копию бумажной книги, добавив к ней традиционные «электронные» удобства, такие, как полнотекстовый поиск или гиперссылки (в том числе интерактивное оглавление). Конкуренцию PDF может составить более компактный формат DJVU, но он менее распространен, и традиционно электронные книги в этом формате содержат лишь слой изображения. Программа FineReader, как мы говорили, может воспринимать DJVU, как исходник для последующего распознавания (причисляя его к изображениям).
Но так как собственно «читалки» формат PDF воспринимают плохо (страницы в этом формате практически невозможно корректно масштабировать под разные размеры шрифта и экрана), то интерес представляет возможность также сохранить распознанный документ в популярных форматах электронных ридеров: в FineReader они представлены EPUB и FB2. Последовательно рассмотрим, какие действия нужно предпринять и какие подводные камни могут встретиться на этом пути.
Сканирование
В принципе FineReader позволяет оригиналы переснимать фотокамерой, но для объемных документов я этот способ не посоветую: ручной работы по доводке, которой и без того достаточно, неизбежно окажется еще больше, чем в случае нормального сканера. Оригиналы могут быть цветными или монохромными, неважно — по умолчанию FineReader 12 все изображения переводит в оттенки серого. Если требуется воспроизводить цветные иллюстрации, то при сканировании из самого FineReader следует заранее проверить, включен ли цветной режим, иначе информация о цвете будет потеряна. В 12-й версии кнопка включения цветного режима находится прямо на панели инструментов.
Совершенно не возбраняется заранее сделать набор сканов страниц в виде последовательно нумерованных файлов изображений в каком-нибудь распространенном формате. Разница в том, что при сканировании из FineReader программа сама настроит оптимальный режим, а при сканирования из другой программы об этом придется позаботиться вам. В принципе условие только одно: для обычных книжных страниц должно быть установлено разрешение сканирования не ниже 300 dpi (разрешения выше этого значения тоже не требуется — файлы лишь станут неподъемными по размеру). Однако, есть случаи, когда предварительная ручная обработка сканов предпочтительнее, чем непосредственное сканирование из программы. Для примера рассмотрим ситуацию, когда вы хотите оцифровать документ, в оригинале представляющий собой пятую-шестую машинописную копию на пожелтевшей бумаге.
Пример фрагмента такого текста представлен на рис. 1, слева. В течение многих лет этот листочек служит у меня тестом для программ распознавания. Если посмотреть на увеличенное слово «секретные» внизу, становится понятно, почему FineReader вообще его пропустил: качество печати таково, что фактически перед нами вариант теста CAPTCHA, недоступный для распознавания. Надо сказать, что из попадавшихся мне OCR-программ только FineReader представил хоть какой-нибудь результат для этого текста, и то только в последних версиях – десять лет назад он тоже выдавал сплошной набор нераспознанных штрихов и загогулин.
Рис. 1. Изображение шестого экземпляра машинописного экземпляра текста, ниже — результаты его распознавания в 12-й версии FineReader. Слева — необработанный оригинал, справа — он же, пропущенный через фильтр увеличения резкости Unsharp Mask, снижение шума и повышение контрастности. Внизу для наглядности приведены увеличенные фрагменты проблемного слова в том и другом случае.
Иная картина перед нами предстает на фрагментах справа: здесь сканированный текст во внешней графической программе был пропущен через фильтр увеличения резкости Unsharp Mask, затем фильтр снижения шума Median Cut, и через повышение контрастности. Результаты распознавания стали куда более осмысленными, причем в 12-й версии FineReader они еще лучше, чем в предыдущих. Попеняю, к слову, разработчикам программы: в принципе в FineReader есть все нужные инструменты для доводки изображения, но на практике они оказываются почти бесполезными. Во встроенном редакторе изображений ощутимый эффект дают лишь инструменты изменения яркости/контрастности и обрезки картинки, остальные в таких сложных случаях видимого действия не оказывают. Потому доводку подобных оригиналов и приходится делать во внешней программе.
Шестая машинописная копия, конечно, экстремальный случай — надеюсь, вам не придется в жизни с таким возиться. А обычную книжную страницу FineReader в современных версиях распознает без каких-либо проблем — повозиться придется лишь с опечатками из-за дефектов оригинала, и, главное, с форматированием.
Перед сканированием стоит просмотреть оригинал на предмет наличия в нем фрагментов на различных языках. В моем случае много времени ушло, когда в списке литературы в конце книги нашлось несколько позиций на смешанном русском и украинском языках. Если заранее ввести украинский язык в список автоматического распознавания, не придется терять время на ручную правку таких отрывков, как «з історії Українській PCP» (среднестатистический россиянин едва ли сможет здесь грамотно расставить все нужные варианты буквы «и»).
Отметим, что в Справке этот момент отражен довольно невнятно — при ее изучении вообще создается впечатление, что авторы выполняли домашнее задание для галочки. Правильная последовательность действий следующая: на панели инструментов рядом с большой кнопкой Распознать есть пункт Язык документа с выпадающим списком, в котором следует выбрать самый нижний пункт Выбор языков. Появится панель (рис. 2), на которой должен быть отмечен верхний пункт Автоматически выбирать язык распознавания. Через кнопку Указать… следует добавить в перечень языков нужный (в нашем случае «украинский»). Вероятность, что автоматика перепутает язык, невелика: по крайней мере для европейских языков мне ни разу не пришлось воспользоваться пунктом Указать языки распознавания вручную (см. рис. 2), который рекомендуется употреблять в сложных случаях.
Рис. 2. Панель выбора языков распознавания
Редактирование
Если распознаваемый документ имеет сложную структуру, то в Справке рекомендуется еще до сканирования отключить автоматическое распознавание (Сервис>Настройки…, на вкладке Сканировать/Открыть снять отметку с пункта Автоматически обрабатывать добавленные страницы). Тогда вы можете вручную указать расположение, тип и назначение областей для каждой страницы в отдельности. Для нашей задачи — распознавание целой книги — такой прием использовать практически нереально: проще постфактум править отдельные неверно распознанные страницы. Чтобы в окне результатов распознавания видеть текст, более-менее приближенный к тому, что потом окажется в результирующем файле, следует выбрать нужную опцию из выпадающего списка Оформление документа (в нашем случае это будет Точная копия).
Как минимум, вам придется вручную отредактировать все страницы с иллюстрациями, особенно, если они представляют собой схемы или чертежи с надписями. FineReader неизбежно будет пытаться разбить их на области различного типа, и тут без ручной правки не обойтись. Такие фрагменты текста, как математические формулы, проще выделить отдельно и объявить изображениями (особенно это касается рукописных вставок с формулами, характерных для оригиналов эпохи докомпьютерной верстки). Иногда целесообразно наложить текстовые области поверх картинки — они будут распознаны, но при соответствующем выборе конечного результата (см. далее) будут в нем выглядеть, как в оригинале. Иногда в этом случае стоит изображение выделить в область типа Фоновая картинка, и проследить, чтобы текст был распознан корректно.
В книгах довольно часто встречаются страницы с крупными иллюстрациями, развернутыми относительно всех остальных страниц книги. При всей своей «интеллектуальности», FineReader самостоятельно не умеет распознавать текст, если он развернут так, как показано на рис. 3. Для того, чтобы распознавание было верным, выделите область текста и внизу на панели свойств выберите из выпадающего списка Ориентация нужную позицию (на рис. 3 на нее указывает стрелка курсора).
Рис. 3. Страница с иллюстрацией и подписью, развернутыми относительно остальных страниц книги
После любого подобного действия — изменения типа области, границ рисунка, редактирования изображения страницы целиком (в 12-й версии это делается через главное меню Страница>Редактор изображений), изменения языка и тому подобных операций обязательно надо запустить распознавание страницы заново (пункт Распознать страницу наверху окна изображения страницы или контекстное меню отдельных областей). При этом не ошибитесь и не запустите распознавание всего документа заново через кнопку Распознать на панели инструментов — вы можете потерять все результаты кропотливой ручной правки.
Заметим, что FineReader имеет множество опций для частных случаев редактирования сложных документов, но останавливаться на них у нас здесь нет возможности. Остановимся только на одном существенном моменте именно в случае сканирования книг: неприятно, если номера страниц в PDF-файле и в самой книге не будут совпадать. Если нет никакой возможности привести их в соответствие перенумерацией (см. пункт Перенумеровать страницы контекстного меню окна Страницы), то можно сделать так, чтобы оригинальные номера страниц в результирующем файле не отображались вовсе. Для этого следует проверить, что все номера страниц распознаны, как колонтитулы (и при необходимости выделить их в отдельную текстовую область, которой в панели свойств области придать назначение Колонтитул — не забудьте потом запустить распознавание страницы или соответствующих областей заново!), а затем в меню Сервис>Настройки>Сохранить>PDF снять отметку с пункта Сохранять колонтитулы.
О том, что делать, если вы хотите в результирующем файле создать корректное оглавление, рассказано во врезке.
Оглавление в электронной книге
По умолчанию на странице свойств (Сервис>Настройки>Сохранить>PDF) стоит отметка в пункте Создать оглавление (см. рис. 5 в тексте). Вот только без дополнительных действий создать его корректно не удастся: FineReader научился очень многим вещам, но правильно распознать уровни заголовков ему не под силу. И не только уровни: иногда он принимает за заголовки просто выделенный или крупный текст. В результате в автоматическом режиме распознавания вместо оглавления неизбежно получается совершенная каша. Приходится либо снимать эту отметку и обходится без оглавления, либо доводить полученный файл во внешних программах, причем найти удобный и недорогой инструмент для редактирования PDF — задача не из тех, что решаются с полпинка. Заметим, что проблема для других форматов электронных книг (aka FB2 и EPUB) еще острее, потому что там оглавление формируется всегда, без всяких дополнительных указаний, и доводить его потом придется так или иначе. Хотя и делается это проще, чем в случае PDF — FB2 устроен не сложнее, чем HTML, и легко поддается редактированию вручную.
Итак, предполагаем, что у нас уже имеется автоматически распознанный текст. Прежде, чем приступать к операции, обратитесь к редактору стилей (кнопка Стили наверху окна текста, слева от выпадающего списка с указанием шрифта — см. рис. 4) и сформируйте стили нескольких уровней заголовков: установите шрифт, размер и начертание так, чтобы было единообразно по всей книге. Целесообразно заодно и подсократить количество стилей, объединив похожие: FineReader всегда отличался большим количеством создаваемых стилей и разработчики пока не могут с этим справиться (хотя уверяют, что в последней версии их число уменьшилось).
Дело осложняется тем, что просто выделить текст и объявить его стилем заголовка нужного уровня не получается — стиль установится, но в результирующем файле все равно все будет по-старому. После некоторых обсуждений с представителями ABBYY, которые честно признались, что функция эта пока осталась не доведенной до ума, был установлен работающий алгоритм действий, который включает в себя следующие шаги:
— на нужной странице переформатировать выделение текстовых областей так, чтобы заголовок оказался в отдельной текстовой области (см. окно изображения на рис. 4 слева);
— распознать заново сначала текстовые области (через контекстное меню выделенной области, пункт Распознать, а не через распознавание всей страницы!), и в последнюю очередь, отдельно — область заголовка;
— поставить курсор в область текста заголовка (не выделяя текст!) и установить стиль заголовка нужного уровня через один из выпадающих списков стилей наверху или внизу окна с текстом (см. рис. 4). Если надо, наоборот, убрать лишний заголовок, то следует точно так же поставить курсор в эту область (повторим: не выделяя текст!) и установить для него один из стилей основного текста.
Рис. 4. Установка стиля заголовка для определенной области текста
Таким образом следует пройти весь текст книги: нельзя остановиться лишь на каких-то важных моментах, потому что в иначе в результирующем оглавлении окажется много мусора.
Сохранение результатов
Перед тем, как сохранять результаты в PDF-файле, необходимо в том же меню Сервис>Настройки>Сохранить>PDF установить желаемый конечный результат. Для аутеничной копии бумажного оригинала подходят варианты Текст поверх изображения страницы или Текст под изображением страницы (рис. 4). Если оригинал совсем плох, и аутеничную копию делать не имеет смысла, то можно выбрать вариант Только текст и картинки. Чтобы в последнем случае приблизить копию к оригиналу (в режиме Точная копия), важно установить размер бумаги. Для книг иногда можно ограничиться стандартным форматом А5, а для более точной подгонки необходимо из выпадающего списка выбрать либо Использовать размер оригинала, либо через самый нижний пункт Пользовательский размер бумаги… установить точные размеры в миллиметрах.
Рис. 5. Настройка конечного результата распознавания в окне свойств PDF-файла
Кроме того, обязательно следует правильно заполнить поля свойств документа на вкладке Документ — как минимум Название и Авторы. Это существенно для всех разновидностей документов, но особенно критично для таких конечных форматов, как FB2 и EPUB: в противном случае у вас книга просто не будет правильно отображаться в перечне книг в «читалке».
Кстати, о формате FB2, ставшем стандартом де-факто для отечественных электронных библиотек, включая и легальные книжные магазины. Формат этот плохо приспособлен для деловой, научной и учебной литературы с большим количеством иллюстраций и таблиц, но удобен для беллетристики. FineReader позволяет получать на удивление адекватные результаты в этом формате — например, может включать изображения обложек, и, в отличие от многих конверторов, правильно распознает сноски. Однако, результат в FB2, полученный через FineReader, даже с корректным оглавлением, все-таки придется доводить до ума вручную или в одной из программ типа FB2Editor: в формате много полезных и информативных полей помимо автора и названия (серия, аннотация и т.д.), которые FineReader почему-то не предусматривает.
Автор выражает благодарность компании ABBYY за помощь в подготовке этой статьи.