Распознавание По Картинке Оставить Нельзя, Или Что-То Про Сложные Случаи Оптического Распознавания Текста

Этот пост был вдохновлен интервью, которое наш европейский офис дал компьютерному журналу.

Мы говорили об ABBYYFineReader и технологиях распознавания.

Среди вопросов было что-то вроде этого: Какие основные проблемы пришлось преодолеть при разработке программного обеспечения? Были ли какие-то особенно сложные проблемы? В ответ просто хочу раздать официальную тираду о том, что изображения очень разные, фотографии нечеткие, разрешение низкое, бумага грязная, буквы вычурные.

В общем, даже не зная о наших технологиях ничего или почти ничего, можно сказать что-то правдоподобное.

И здесь есть повод задуматься.

Все-таки с точки зрения сложности задач это не так интересно — низкое качество изображения и декоративные шрифты.

Примерно то же самое мы могли сказать и пять лет назад, и десять, и двадцать лет назад. Да, несомненно, прогресс есть - и для большинства версий известный обозреватель и наш старый друг Сергей Голубицкий нашел именно те картинки, которые были на "переднем крае" наших технологий - так что новая версия FineReader начала их обрабатывать практически отлично, а старый "спотыкался".

Но чтобы рассказать о том, с какими трудностями мы еще сталкиваемся, стоит прибегнуть к небольшой метафоре.

Вот трудности, с которыми вы столкнулись при решении следующей проблемы

Распознавание по картинке оставить нельзя, или что-то про сложные случаи оптического распознавания текста

Хм.

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

И если вы спросите, «какие трудности возникают при решении этой задачи», вы захотите рассказать, как извлечь корень пятой степени, расположив число в ряд и используя векторные операции.

Но для «искусственного интеллекта» извлечение корня будет быть почти самым простым из его действий.

Настоящие трудности будут иными:

  • Распознавать рукописные цифры
  • Разобрать и разложить формулу
  • В общем как-то догадайтесь, что это нужно сделать
Можно отметить, что в этом примере, чем проще часть задачи для человека, тем сложнее она для «искусственного интеллекта».

Этого нельзя поместить в маркетинговые материалы или сказать в интервью.

«Мы стали делать меньше ошибок при разборе формулы» - «Гы-гы-гы, любой дурак сможет разобрать формулу, вы делаете ерунда.

" И с последним пунктом есть особая проблема.

Как понять, что здесь делать? Кто может пообещать, что нам придется решать такую проблему хотя бы еще раз? Мы только что подошли к связи между метафорой и задачами распознавания.

Сама фраза «задача на распознавание» — это ловушка.

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

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

В качестве примера возьмем задачу по исправлению перекоса текста на фотографиях.

На первый взгляд это выглядит не очень сложно.

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



Распознавание по картинке оставить нельзя, или что-то про сложные случаи оптического распознавания текста

Беда в том, что на одном изображении часто бывает несколько направлений текстовых строк.

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

Но помимо перекоса на изображении могут быть перспективные искажения, и тогда одним поворотом проблему не решить.

Фотографии двухстраничных документов, например паспортов, могут иметь разные искажения перспективы для каждой страницы.

Кривые линии на развороте журнала могут возникнуть как в результате кривизны листа, так и из-за «художественной» верстки.

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

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

Далее мы начали учиться сегментировать страницу.

Выделяйте столбцы текста, картинки, таблицы.

Как отличить текст от картинок? Нет ничего проще; В нашем сервисе более 9000 статей на эту тему.

Реализовали, всё нормально, запускаем и видим следующую картину:

Распознавание по картинке оставить нельзя, или что-то про сложные случаи оптического распознавания текста

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

Но человек, который переводил учебник по базам данных в электронный формат, похоже, это совсем не то, что нужно: в данном случае нужен просто пример скриншота MS Access, и никто не собирается распознавать таблицу и как-то использовать данные из нее.

В последних версиях мы научили FineReader не трогать содержимое скриншота и оставлять его как картинку.

Или это такой сюрприз

Распознавание по картинке оставить нельзя, или что-то про сложные случаи оптического распознавания текста

Конечно, перед нами текст. Несколько блоков текста.

Но даже не очень внимательный читатель может заметить, что здесь есть кое-что еще.

По-хорошему, конечно, стоит разобрать эту диаграмму, распознать весь текст и нарисовать кадры векторными командами.

Но вот проблема: мы заранее не знаем, в каком формате оно будет записано и какие команды нам будут доступны.

Поэтому часто имеет смысл сохранить эту диаграмму в виде изображения.

Да, текст, да, как картинку.

Искусственный интеллект совсем растерялся, плюнул на этих людей и пошёл как обычно высчитывать корни пятой степени.

Вопрос в том, что с этим делать? Здесь важен даже не ответ на предыдущий вопрос.

Даже если мы это поймем, мы зададим себе другой вопрос: Как часто придется решать подобные проблемы? Да, вопрос тот же, что и в примере с формулой.

И ответ не всегда прост. У нас получилось, что среди проблем с сегментацией страниц довольно велика доля тех, которые вызваны нашим неадекватным восприятием скриншота и диаграммы.

Поэтому в последних версиях мы «объясняли» нашему движку, что такие объекты существуют, как они структурированы и чем отличаются от таблиц, блоков текста и просто картинок.

Но если бы мы посчитали, что проблема редкая и «экзотическая», то, скорее всего, мы бы ничего не делали — что вызвало бы бешенство тех, кто обрабатывает страницы с большим количеством скриншотов и диаграмм.

Вы думаете, такие проблемы возникают только с необычными объектами? Ничего подобного — в той же сегментации есть примеры только с текстом.

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

Логично, блин - не надо смешивать две колонки в один блок.

«Пожалуйста, пожалуйста», — говорит нам Вселенная:

Распознавание по картинке оставить нельзя, или что-то про сложные случаи оптического распознавания текста

«Ну… — говорит разработчик, — мы позаботимся о том, чтобы номера списка не выпадали из списка… Допустим, мы попробуем прикрепить к обычному тексту столбцы из одних цифр».

«О, молодец!» говорит Вселенная:

Распознавание по картинке оставить нельзя, или что-то про сложные случаи оптического распознавания текста

Здесь мы уже не сможем приклеивать к тексту цифры (номера строк), не нарушая его связности и возможности дальнейшего использования — именно поэтому пользователь запустил нашу программу.

Но неважно, им на руки плюнули, и в следующей версии с этим тоже разобрались.

Для чего все это? Думается, что одной из проблем для нас, создателей механизмов распознавания, является вариативность и, как следствие, недоформулированность стоящих перед нами задач.

Более того, мы можем считать, что это одно из важных различий между искусственным интеллектом и естественным интеллектом.

Потому что недоформулировка проблемы — это привычная среда для естественного разума и проклятие для учёного и инженера.

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

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

(вместе с логическое представление ) Теги: #сложные системы #эвристика #искусственный интеллект #трудности выбора #finereader #abbyy #Анализ и проектирование систем #Обработка изображений

Вместе с данным постом часто просматривают: