После короткого рассказа о том, как устроен ABBYY FineReader (aka «теоретическая часть»), самое время перейти к применению полученных знаний. И да, котиков под катом нет: всё очень серьёзно.
Как пользователю поучаствовать в обработке документа
Чтобы не изобретать велосипед, начну с простой и понятной схемы из Справки (см. рисунок справа).
Теперь, зная список всех операций, посмотрим на конкретном примере – что может пойти не по плану и как с этим бороться.
Хорошо распознаются только хорошие изображения
А что делать, когда изображения есть, но не очень хорошие? Улучшить прямо в FineReader всё что можно, а, если улучшить нельзя, — попытаться получить изображение заново, устранив проблему. Поскольку тема очень обширная, то при должном интересе будет отдельный пост про то, как подружиться с автоматическими и ручными инструментами обработки изображений прямо в FineReader. Пока же ограничусь замечанием, что изображение будет обработано лучше, если оно:
- (после сканирования) не имеет выраженных геометрических искажений — перекоса или заметного страниц изгиба толстой книги у корешка двухстраничного разворота,
- (после фотографирования, в дополнение к предыдущему) не имеет ещё и нелинейных геометрических искажений («подушка», «трапеция»), имеет равномерную фокусировку (а желательно и яркость) по всей площади, не имеет шумов от недостаточной освещённости, не имеет выраженной засветки от вспышки (особенно на глянцевой бумаге).
Этап настройки документа/проекта
Можно и нужно сразу указать язык текста, параметры предобработки изображений, некоторые параметры анализа и распознавания. Вот скриншот одной из вкладок диалога настроек.
Эти и прочие настройки подробно описаны в Справке
Этап анализа
Программа автоматически выделяет области различных типов с точки зрения распознавания. На этом этапе мы можем как самостоятельно разметить области, так и поправить (при необходимости) те, что нашёл модуль Анализа.
Чтобы не писать много лишнего про инструменты работы с областями, сошлюсь на раздел Справки, а здесь объясню, что для чего, «что такое хорошо, что такое плохо» (применительно к областям) и как исправить плохой результат.
Назначение областей разных типов
В пользовательском интерфейсе FineReader доступны области нескольких типов, для них есть разные варианты скрываемой панели свойств (внизу окна «Изображение») и контекстного меню (по щелчку правой кнопкой мыши):
- «Зона распознавания» (по умолчанию серая рамка) — такое название использовано в пользовательском интерфейсе, на мой взгляд правильнее было бы назвать «область для автоматического анализа». Назначение такой области – указать, где на странице вообще нужно искать что-то полезное. Поэтому в результате последующего анализа или анализа+распознавания в пределах каждой «зоны распознавания» может найтись ноль и более областей других типов. Особенно полезны зоны распознавания бывают в шаблонах блоков (подробнее о них в Справке).
Примеры правильно нарисованных зон распознаванияРеальный пример из проекта оцифровки Толстого — часть страниц имеет нумерацию строк (пронумерованы строки с номерами, кратными 10), не нужную в результате и затрудняющую вычитку/правку текста, если автоматический анализ включил эти номера в текстовую область колонки. Если страницы были почти одинаково выровнены на сканере или качественно обрезаны после сканирования, то перед анализом к нужной группе страниц можно применить шаблон блоков, где область (или области) распознавания просто не содержит не нужных нам частей страницы:
Помните, что в отличие от текстовой области область распознавания может превратиться в области разных типов, что бывало нужно и в этом проекте. - Текстовая область – содержит текст одной и более строк, каждая из которых содержит логически связный текст, поэтому выделять две колонки в один блок – очень плохая идея. Может иметь непрямоугольную форму. Бывает нужно задать или поправить после неверного определения автоанализом направление текста, «инверсность» (упрощённо: тёмный текст на светлом фоне — «обычный текст», а светлый текст на тёмном фоне – «инверсный» текст, по умолчанию установлена в «Авто» и почти никогда не требует коррекции).
Эти параметры задаются на блок, так что выделять текст разного направления или разной инверсности в один блок – другая плохая идея.
Про направления основного текста страницыВ европейских языках в нормальной ориентации текста строки читаются сверху вниз (в блоке с повёрнутым текстом – от логического верха в сторону логического низа), но в случае иероглифических языков всё гораздо веселее – даже на одной странице одни области могут содержать текст в горизонтальной ориентации, а другие – в колоночной, причём иероглифы имеют одинаковую ориентацию во всех этих областях (если тема дальневосточных и ближневосточных языков интересна – просите отдельный пост про тамошние навороты). - Табличная область – содержит таблицу, как с видимыми разделителями строк и столбцов, так и невидимыми (частично или везде). Таблица может иметь только прямоугольную форму, каждая из ячеек тоже является прямоугольником, но используя объединение групп ячеек или групп строк, можно передавать весьма сложные конфигурации текста.
В каждой ячейке может быть распознаваемый текст (возможно, пустой) или картинка. Если вы хотите распознавать текст в ячейке, то можно задать ему особые параметры распознавания, а если нет, то стоит указать «картинка во всю ячейку». Кстати, можно выделить сразу прямоугольную группу ячеек таблицы и изменить нужное свойство у всех сразу.Таблицы — сложный объект для автоматического анализа, особенно при частично или везде невидимых разделителях. Чрезвычайно важно, что вручную исправить расположение и разметку таблицы до первого или повторного распознавания всегда проще, чем исправлять неверную структуру текста уже после распознавания — в FineReader или даже после сохранения, в целевом приложении. Так что в разделе «Практикум» я приведу очень много примеров из реальной жизни исправления ошибок автоматической разметки таблиц.
- Картиночная область – может иметь непрямоугольную форму. Имеет две разновидности – обычная (вытесняет колоночный текст), и фоновая (не вытесняет колоночный текст), они имеют небольшие отличия при рисовании (например, при растягивании фоновой картинки не удаляются накрытые ей текстовые области).
- Область штрих-кода – содержит штрих-код автоопределяемого или явно указываемого типа. Подобно картинке, может иметь непрямоугольную форму, хотя это бывает нужно редко.
Важные соображения
- Распознавание и синтез видят только те фрагменты текста, которые оказались выделены в текстовые области или текстовые ячейки таблиц. Если кусок текста не выделен в блоки – распознаваться он не будет.
- Аналогично и с картинками — если часть картинки оказалась вне области или одна целостная картинка оказалась разделена на несколько областей – скорее всего, в результате обработки будут проблемы.
- Языки распознавания в FineReader задаются не для галочки – они влияют на очень многие механизмы, начиная уже с анализа: например, иероглифический (китайский, японский, корейский языки) или арабский текст имеют много особенностей, которые учитываются не всегда, а только при выборе соответствующих языков распознавания.
Особенности взаимодействия близкорасположенных или пересекающихся областей
Следующие правила важны как для правильного обращения с областями в оболочке программы, так и для понимания — что с ними получится в результатах распознавания и сохранения.
- Пересечение текстовых и табличных блоков друг с другом, если есть символы или их части, оказавшиеся в более чем одном блоке – практически всегда ошибка, такие результаты анализа нужно исправлять, тем более что обычно это делается в несколько движений мыши.
Пересечение картиночных областей друг с другом – практически всегда ошибка, хотя и менее критичная для обработки именно текста. Такие случаи тоже желательно исправлять.
- Картиночная область на фоне большей текстовой области – законное и нередко востребованное сочетание. Основное применение – обработка так называемых inline-картинок, когда внутри строки (или между строк) встречается фрагмент (пиктограмма, формула или её часть и т.п.), который плохо распознаётся или совсем не распознаётся в используемой в FineReader модели текста.
Примеры правильного использования картинок в таблицеОбратите внимание, что с помощью галочки в панели свойств области (внизу) ячейки из левой колонки таблицы сделаны картинками.
Текстовая область на фоне «картиночной» области — тоже важный инструмент: на фоне обычных картиночных областей могут находиться подписи к ним, на «фоновых» картиночных областях может располагаться и основной («колоночный») текст документа, а также таблицы.
Примеры правильного использования текстовых областей на фоне картинокМаленькие хитрости для облегчения работы с блоками
Описанные соглашения отражены в поведении редактора блоков. Например, если вы рисуете новый или растягиваете имеющийся блок так, что он полностью или почти полностью перекрывает другие блоки — эти другие блоки автоматически удаляются.
Логичность/нелогичность выделения областей
Тут самое время подумать — для каких целей и какого формата документ хочется получить в результате обработки. Вот некоторые соображения, влияющие на количество и характер исправлений разметки блоков в сложных случаях:
Вариант 1: нам нужен только текст (возможно, мы этого не понимаем, но дело обстоит именно так)
Если нужно сохранить документ в PDF с изображениями страниц исходного документа и добавленным «невидимым» распознанным текстом (для его поиска и копирования), то главное – обеспечить разумное выделение текста в текстовые и табличные блоки. Под «разумностью» здесь понимается следующее:
- нет «мусорных» областей, где в качестве текста или таблиц распознаются (мусором) элементы картинок или элементов оформления страницы.
- области логично выделяют строки, не допуская попадания символов в более чем одну область и неоправданного дробления строк на более чем одну область.
- то, что с точки зрения человека является таблицами в оригинале, должно быть выделено в табличные области. Это влияет как на качество распознавания (например, базовые линии строк в разных ячейках могут быть не выровнены по вертикали), так и на удобство поиска и копирования фрагментов текста в выходном документе.
Если отдельные картинки не должны копироваться из выходного PDF-документа – то такие области можно из документа исключить вовсе (не создавать новые и не оставлять найденные автоматикой, как минимум – удалять нелогично найденные картинки, а если не лень – то и все).
Я надеюсь шире и глубже раскрыть тему «разумности» картинок в статье про сохранение документов — если такая будет интересна читателям данного материала.
Вариант 2: нужно всё и сразу
Если документ, включающий не одно лишь текстовое содержимое (в одну или две колонки), предполагается сохранить сразу как электронную книгу в форматах FB2/e-pub или в любой промежуточный редактируемый формат (Вордовый или HTML) для дальнейшего редактирования и производства электронной книги, то осмысленное выделение таблиц и картинок становится особенно важно.
Среди прочего нужно определиться с тем, что делать с группами рядом расположенных картинок, и что делать с подписями к картинкам, как рядом стоящими, так и накладывающимися на картинки. Подробнее разберём эту тему в «Практикуме», на реальных примерах.Что-то типа заключения данной части
Итак, мы теперь представляем, как бороться с неправильно выделившимися блоками, которые на непростых с точки зрения наших технологий случаях действительно усложняют жизнь.
Конечно, FineReader велик, поэтому пользователь хоть что-то, да не знает в нём. Поэтому мы ещё вернёмся к этой теме в отдельном «Практикуме». Если читатели проявят интерес, конечно :)
Автор: SlaSapro