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

в 13:11, , рубрики: Finereader, ocr, Блог компании ABBYY, обработка изображений, распознавание текста

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

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

Как пользователю поучаствовать в обработке документа

Чтобы не изобретать велосипед, начну с простой и понятной схемы из Справки (см. рисунок справа).

Теперь, зная список всех операций, посмотрим на конкретном примере – что может пойти не по плану и как с этим бороться.

Хорошо распознаются только хорошие изображения

А что делать, когда изображения есть, но не очень хорошие? Улучшить прямо в FineReader всё что можно, а, если улучшить нельзя, — попытаться получить изображение заново, устранив проблему. Поскольку тема очень обширная, то при должном интересе будет отдельный пост про то, как подружиться с автоматическими и ручными инструментами обработки изображений прямо в FineReader. Пока же ограничусь замечанием, что изображение будет обработано лучше, если оно:

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

Этап настройки документа/проекта

Можно и нужно сразу указать язык текста, параметры предобработки изображений, некоторые параметры анализа и распознавания. Вот скриншот одной из вкладок диалога настроек.
Укрощение строптивого (на самом деле, нет) FineReader
Эти и прочие настройки подробно описаны в Справке

Этап анализа

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

Чтобы не писать много лишнего про инструменты работы с областями, сошлюсь на раздел Справки, а здесь объясню, что для чего, «что такое хорошо, что такое плохо» (применительно к областям) и как исправить плохой результат.

Назначение областей разных типов

В пользовательском интерфейсе FineReader доступны области нескольких типов, для них есть разные варианты скрываемой панели свойств (внизу окна «Изображение») и контекстного меню (по щелчку правой кнопкой мыши):

  • «Зона распознавания» (по умолчанию серая рамка) — такое название использовано в пользовательском интерфейсе, на мой взгляд правильнее было бы назвать «область для автоматического анализа». Назначение такой области – указать, где на странице вообще нужно искать что-то полезное. Поэтому в результате последующего анализа или анализа+распознавания в пределах каждой «зоны распознавания» может найтись ноль и более областей других типов. Особенно полезны зоны распознавания бывают в шаблонах блоков (подробнее о них в Справке).
    Примеры правильно нарисованных зон распознавания

    Реальный пример из проекта оцифровки Толстого — часть страниц имеет нумерацию строк (пронумерованы строки с номерами, кратными 10), не нужную в результате и затрудняющую вычитку/правку текста, если автоматический анализ включил эти номера в текстовую область колонки. Если страницы были почти одинаково выровнены на сканере или качественно обрезаны после сканирования, то перед анализом к нужной группе страниц можно применить шаблон блоков, где область (или области) распознавания просто не содержит не нужных нам частей страницы:
    Укрощение строптивого (на самом деле, нет) FineReader
    Помните, что в отличие от текстовой области область распознавания может превратиться в области разных типов, что бывало нужно и в этом проекте.

  • Текстовая область – содержит текст одной и более строк, каждая из которых содержит логически связный текст, поэтому выделять две колонки в один блок – очень плохая идея. Может иметь непрямоугольную форму. Бывает нужно задать или поправить после неверного определения автоанализом направление текста, «инверсность» (упрощённо: тёмный текст на светлом фоне — «обычный текст», а светлый текст на тёмном фоне – «инверсный» текст, по умолчанию установлена в «Авто» и почти никогда не требует коррекции).

    Эти параметры задаются на блок, так что выделять текст разного направления или разной инверсности в один блок – другая плохая идея.

    Про направления основного текста страницы

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

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

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

  • Картиночная область – может иметь непрямоугольную форму. Имеет две разновидности – обычная (вытесняет колоночный текст), и фоновая (не вытесняет колоночный текст), они имеют небольшие отличия при рисовании (например, при растягивании фоновой картинки не удаляются накрытые ей текстовые области).
  • Область штрих-кода – содержит штрих-код автоопределяемого или явно указываемого типа. Подобно картинке, может иметь непрямоугольную форму, хотя это бывает нужно редко.

Важные соображения

  • Распознавание и синтез видят только те фрагменты текста, которые оказались выделены в текстовые области или текстовые ячейки таблиц. Если кусок текста не выделен в блоки – распознаваться он не будет.
  • Аналогично и с картинками — если часть картинки оказалась вне области или одна целостная картинка оказалась разделена на несколько областей – скорее всего, в результате обработки будут проблемы.
  • Языки распознавания в FineReader задаются не для галочки – они влияют на очень многие механизмы, начиная уже с анализа: например, иероглифический (китайский, японский, корейский языки) или арабский текст имеют много особенностей, которые учитываются не всегда, а только при выборе соответствующих языков распознавания.

Особенности взаимодействия близкорасположенных или пересекающихся областей

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

  • Пересечение текстовых и табличных блоков друг с другом, если есть символы или их части, оказавшиеся в более чем одном блоке – практически всегда ошибка, такие результаты анализа нужно исправлять, тем более что обычно это делается в несколько движений мыши.

    Пересечение картиночных областей друг с другом – практически всегда ошибка, хотя и менее критичная для обработки именно текста. Такие случаи тоже желательно исправлять.

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

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

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

    Примеры правильного использования картинок в таблице

    Обратите внимание, что с помощью галочки в панели свойств области (внизу) ячейки из левой колонки таблицы сделаны картинками.
    Укрощение строптивого (на самом деле, нет) FineReader

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

    Примеры правильного использования текстовых областей на фоне картинок

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

    Маленькие хитрости для облегчения работы с блоками

    Описанные соглашения отражены в поведении редактора блоков. Например, если вы рисуете новый или растягиваете имеющийся блок так, что он полностью или почти полностью перекрывает другие блоки — эти другие блоки автоматически удаляются.

    Логичность/нелогичность выделения областей

    Тут самое время подумать — для каких целей и какого формата документ хочется получить в результате обработки. Вот некоторые соображения, влияющие на количество и характер исправлений разметки блоков в сложных случаях:

    Вариант 1: нам нужен только текст (возможно, мы этого не понимаем, но дело обстоит именно так)

    Если нужно сохранить документ в PDF с изображениями страниц исходного документа и добавленным «невидимым» распознанным текстом (для его поиска и копирования), то главное – обеспечить разумное выделение текста в текстовые и табличные блоки. Под «разумностью» здесь понимается следующее:

    • нет «мусорных» областей, где в качестве текста или таблиц распознаются (мусором) элементы картинок или элементов оформления страницы.
    • области логично выделяют строки, не допуская попадания символов в более чем одну область и неоправданного дробления строк на более чем одну область.
    • то, что с точки зрения человека является таблицами в оригинале, должно быть выделено в табличные области. Это влияет как на качество распознавания (например, базовые линии строк в разных ячейках могут быть не выровнены по вертикали), так и на удобство поиска и копирования фрагментов текста в выходном документе.

    Если отдельные картинки не должны копироваться из выходного PDF-документа – то такие области можно из документа исключить вовсе (не создавать новые и не оставлять найденные автоматикой, как минимум – удалять нелогично найденные картинки, а если не лень – то и все).

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

    Вариант 2: нужно всё и сразу

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

    Что-то типа заключения данной части

    Итак, мы теперь представляем, как бороться с неправильно выделившимися блоками, которые на непростых с точки зрения наших технологий случаях действительно усложняют жизнь.
    Конечно, FineReader велик, поэтому пользователь хоть что-то, да не знает в нём. Поэтому мы ещё вернёмся к этой теме в отдельном «Практикуме». Если читатели проявят интерес, конечно :)

Автор: SlaSapro

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js