Укрощение строптивого (на самом деле, нет) FineReader

1c8e7f45ac244679b630822c219eaf62.pngСодержание

После короткого рассказа о том, как устроен ABBYY FineReader (aka «теоретическая часть»), самое время перейти к применению полученных знаний. И да, котиков под катом нет: всё очень серьёзно.Как пользователю поучаствовать в обработке документа Чтобы не изобретать велосипед, начну с простой и понятной схемы из Справки (см. рисунок справа).Теперь, зная список всех операций, посмотрим на конкретном примере — что может пойти не по плану и как с этим бороться.

Хорошо распознаются только хорошие изображения А что делать, когда изображения есть, но не очень хорошие? Улучшить прямо в FineReader всё что можно, а, если улучшить нельзя, — попытаться получить изображение заново, устранив проблему. Поскольку тема очень обширная, то при должном интересе будет отдельный пост про то, как подружиться с автоматическими и ручными инструментами обработки изображений прямо в FineReader. Пока же ограничусь замечанием, что изображение будет обработано лучше, если оно:(после сканирования) не имеет выраженных геометрических искажений — перекоса или заметного страниц изгиба толстой книги у корешка двухстраничного разворота, (после фотографирования, в дополнение к предыдущему) не имеет ещё и нелинейных геометрических искажений («подушка», «трапеция»), имеет равномерную фокусировку (а желательно и яркость) по всей площади, не имеет шумов от недостаточной освещённости, не имеет выраженной засветки от вспышки (особенно на глянцевой бумаге). Этап настройки документа/проекта Можно и нужно сразу указать язык текста, параметры предобработки изображений, некоторые параметры анализа и распознавания. Вот скриншот одной из вкладок диалога настроек.b6c638fdaf3247b9a0f9f6503dddfc96.pngЭти и прочие настройки подробно описаны в СправкеЭтап анализа Программа автоматически выделяет области различных типов с точки зрения распознавания. На этом этапе мы можем как самостоятельно разметить области, так и поправить (при необходимости) те, что нашёл модуль Анализа.Чтобы не писать много лишнего про инструменты работы с областями, сошлюсь на раздел Справки, а здесь объясню, что для чего, «что такое хорошо, что такое плохо» (применительно к областям) и как исправить плохой результат.

Назначение областей разных типов В пользовательском интерфейсе FineReader доступны области нескольких типов, для них есть разные варианты скрываемой панели свойств (внизу окна «Изображение») и контекстного меню (по щелчку правой кнопкой мыши): «Зона распознавания» (по умолчанию серая рамка) — такое название использовано в пользовательском интерфейсе, на мой взгляд правильнее было бы назвать «область для автоматического анализа». Назначение такой области — указать, где на странице вообще нужно искать что-то полезное. Поэтому в результате последующего анализа или анализа+распознавания в пределах каждой «зоны распознавания» может найтись ноль и более областей других типов. Особенно полезны зоны распознавания бывают в шаблонах блоков (подробнее о них в Справке).Примеры правильно нарисованных зон распознавания Реальный пример из проекта оцифровки Толстого — часть страниц имеет нумерацию строк (пронумерованы строки с номерами, кратными 10), не нужную в результате и затрудняющую вычитку/правку текста, если автоматический анализ включил эти номера в текстовую область колонки. Если страницы были почти одинаково выровнены на сканере или качественно обрезаны после сканирования, то перед анализом к нужной группе страниц можно применить шаблон блоков, где область (или области) распознавания просто не содержит не нужных нам частей страницы: af90aecd6dea423084339b4a1295f7d7.pngПомните, что в отличие от текстовой области область распознавания может превратиться в области разных типов, что бывало нужно и в этом проекте. Текстовая область — содержит текст одной и более строк, каждая из которых содержит логически связный текст, поэтому выделять две колонки в один блок — очень плохая идея. Может иметь непрямоугольную форму. Бывает нужно задать или поправить после неверного определения автоанализом направление текста, «инверсность» (упрощённо: тёмный текст на светлом фоне — «обычный текст», а светлый текст на тёмном фоне — «инверсный» текст, по умолчанию установлена в «Авто» и почти никогда не требует коррекции).Эти параметры задаются на блок, так что выделять текст разного направления или разной инверсности в один блок — другая плохая идея.

Про направления основного текста страницы В европейских языках в нормальной ориентации текста строки читаются сверху вниз (в блоке с повёрнутым текстом — от логического верха в сторону логического низа), но в случае иероглифических языков всё гораздо веселее — даже на одной странице одни области могут содержать текст в горизонтальной ориентации, а другие — в колоночной, причём иероглифы имеют одинаковую ориентацию во всех этих областях (если тема дальневосточных и ближневосточных языков интересна — просите отдельный пост про тамошние навороты).

0c48322c9a9542db9ed5afbaaa9080f8.pngТабличная область — содержит таблицу, как с видимыми разделителями строк и столбцов, так и невидимыми (частично или везде). Таблица может иметь только прямоугольную форму, каждая из ячеек тоже является прямоугольником, но используя объединение групп ячеек или групп строк, можно передавать весьма сложные конфигурации текста.В каждой ячейке может быть распознаваемый текст (возможно, пустой) или картинка. Если вы хотите распознавать текст в ячейке, то можно задать ему особые параметры распознавания, а если нет, то стоит указать «картинка во всю ячейку». Кстати, можно выделить сразу прямоугольную группу ячеек таблицы и изменить нужное свойство у всех сразу.Таблицы — сложный объект для автоматического анализа, особенно при частично или везде невидимых разделителях. Чрезвычайно важно, что вручную исправить расположение и разметку таблицы до первого или повторного распознавания всегда проще, чем исправлять неверную структуру текста уже после распознавания — в FineReader или даже после сохранения, в целевом приложении. Так что в разделе «Практикум» я приведу очень много примеров из реальной жизни исправления ошибок автоматической разметки таблиц.

Картиночная область — может иметь непрямоугольную форму. Имеет две разновидности — обычная (вытесняет колоночный текст), и фоновая (не вытесняет колоночный текст), они имеют небольшие отличия при рисовании (например, при растягивании фоновой картинки не удаляются накрытые ей текстовые области). Область штрих-кода — содержит штрих-код автоопределяемого или явно указываемого типа. Подобно картинке, может иметь непрямоугольную форму, хотя это бывает нужно редко. Важные соображения Распознавание и синтез видят только те фрагменты текста, которые оказались выделены в текстовые области или текстовые ячейки таблиц. Если кусок текста не выделен в блоки — распознаваться он не будет. Аналогично и с картинками — если часть картинки оказалась вне области или одна целостная картинка оказалась разделена на несколько областей — скорее всего, в результате обработки будут проблемы. Языки распознавания в FineReader задаются не для галочки — они влияют на очень многие механизмы, начиная уже с анализа: например, иероглифический (китайский, японский, корейский языки) или арабский текст имеют много особенностей, которые учитываются не всегда, а только при выборе соответствующих языков распознавания. Особенности взаимодействия близкорасположенных или пересекающихся областей Следующие правила важны как для правильного обращения с областями в оболочке программы, так и для понимания — что с ними получится в результатах распознавания и сохранения.Пересечение текстовых и табличных блоков друг с другом, если есть символы или их части, оказавшиеся в более чем одном блоке — практически всегда ошибка, такие результаты анализа нужно исправлять, тем более что обычно это делается в несколько движений мыши.Пересечение картиночных областей друг с другом — практически всегда ошибка, хотя и менее критичная для обработки именно текста. Такие случаи тоже желательно исправлять.

Картиночная область на фоне большей текстовой области — законное и нередко востребованное сочетание. Основное применение — обработка так называемых inline-картинок, когда внутри строки (или между строк) встречается фрагмент (пиктограмма, формула или её часть и т.п.), который плохо распознаётся или совсем не распознаётся в используемой в FineReader модели текста.8e0ebab50c074f279f047b13a6ecd880.png

e649b6051955460188bd5033867be628.png

Примеры правильного использования картинок в таблице Обратите внимание, что с помощью галочки в панели свойств области (внизу) ячейки из левой колонки таблицы сделаны картинками.70338b8a28c14b2490f2b46b2d7f0c57.png Текстовая область на фоне «картиночной» области — тоже важный инструмент: на фоне обычных картиночных областей могут находиться подписи к ним, на «фоновых» картиночных областях может располагаться и основной («колоночный») текст документа, а также таблицы.Примеры правильного использования текстовых областей на фоне картинок 166c3a3f052d4c9a890a3f16841db619.png Маленькие хитрости для облегчения работы с блоками Описанные соглашения отражены в поведении редактора блоков. Например, если вы рисуете новый или растягиваете имеющийся блок так, что он полностью или почти полностью перекрывает другие блоки — эти другие блоки автоматически удаляются.Логичность/нелогичность выделения областей Тут самое время подумать — для каких целей и какого формата документ хочется получить в результате обработки. Вот некоторые соображения, влияющие на количество и характер исправлений разметки блоков в сложных случаях: Вариант 1: нам нужен только текст (возможно, мы этого не понимаем, но дело обстоит именно так) Если нужно сохранить документ в PDF с изображениями страниц исходного документа и добавленным «невидимым» распознанным текстом (для его поиска и копирования), то главное — обеспечить разумное выделение текста в текстовые и табличные блоки. Под «разумностью» здесь понимается следующее: нет «мусорных» областей, где в качестве текста или таблиц распознаются (мусором) элементы картинок или элементов оформления страницы. области логично выделяют строки, не допуская попадания символов в более чем одну область и неоправданного дробления строк на более чем одну область. то, что с точки зрения человека является таблицами в оригинале, должно быть выделено в табличные области. Это влияет как на качество распознавания (например, базовые линии строк в разных ячейках могут быть не выровнены по вертикали), так и на удобство поиска и копирования фрагментов текста в выходном документе. Если отдельные картинки не должны копироваться из выходного PDF-документа — то такие области можно из документа исключить вовсе (не создавать новые и не оставлять найденные автоматикой, как минимум — удалять нелогично найденные картинки, а если не лень — то и все).

Я надеюсь шире и глубже раскрыть тему «разумности» картинок в статье про сохранение документов — если такая будет интересна читателям данного материала.

Вариант 2: нужно всё и сразу Если документ, включающий не одно лишь текстовое содержимое (в одну или две колонки), предполагается сохранить сразу как электронную книгу в форматах FB2/e-pub или в любой промежуточный редактируемый формат (Вордовый или HTML) для дальнейшего редактирования и производства электронной книги, то осмысленное выделение таблиц и картинок становится особенно важно.Среди прочего нужно определиться с тем, что делать с группами рядом расположенных картинок, и что делать с подписями к картинкам, как рядом стоящими, так и накладывающимися на картинки. Подробнее разберём эту тему в «Практикуме», на реальных примерах.Что-то типа заключения данной части Итак, мы теперь представляем, как бороться с неправильно выделившимися блоками, которые на непростых с точки зрения наших технологий случаях действительно усложняют жизнь.Конечно, FineReader велик, поэтому пользователь хоть что-то, да не знает в нём. Поэтому мы ещё вернёмся к этой теме в отдельном «Практикуме». Если читатели проявят интерес, конечно :)

© Habrahabr.ru