Что вы видите на этой картинке?

25 марта 2015, 13:11
Распознавание изображений — одна из самых сложных задач для компьютера. Мы уже рассказывали о том, как устроено компьютерное зрение и как оно применяется в наших сервисах — например, при поиске похожих изображений в Яндекс.Картинках. Теперь технология компьютерного зрения работает и в Яндекс.Диске — благодаря ей вы можете найти изображения форматов JPEG, GIF и PNG, содержащие текст поискового запроса. Достаточно ввести в поисковую строку нужное слово, и система найдёт на Диске картинки, на которых оно встретится. В результатах поиска вы увидите изображения с этим словом, документы, в тексте которых оно содержится, а также файлы и папки, в названиях и описаниях которых есть это слово.

Когда на Диске тысячи фотографий, разложенных по разным папкам, поиск по текстам позволит быстро найти среди них нужную. Например, скан договора с названием вроде scan723.JPG или фотографию визитки человека, с которым понадобилось связаться. Искать можно не только документы, но и любые фотографии, которые сделаны для того, чтобы сохранить текст, будь то объявление на двери подъезда или любопытный рекламный плакат в метро.

В основе поиска текстов на изображениях лежит технология оптического распознавания символов. Систем распознавания, опирающихся на эту технологию, много, и все они разные. Какие-то решают определённую задачу, например распознают партитуры, какие-то работают только с чистым текстом. Для Яндекс.Диска мы разработали свою универсальную систему, способную распознавать текст на картинках разных по виду, содержанию и, главное, качеству.

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



Затем модуль распознавания разбивает линии текста на отдельные символы. Для каждого символа алгоритм выбирает несколько наиболее вероятных вариантов распознавания среди известных ему. Например, это могут быть буквы «О», «о» и цифра «0», очень похожие друг на друга. После этого в дело вступает языковая модель — алгоритм принимает решение, какой из символов-кандидатов подходит лучше всего. Языковая модель опирается на словари и учитывает не только сходство символов с теми, что знает система, но и контекст, то есть соседние символы. Если из нескольких вероятных символов складывается известное системе слово, то она может принять решение, что на картинке написано именно оно. Даже если некоторые символы-кандидаты в этом слове менее вероятны, чем другие.



Конечно, точность распознавания текста (а значит, и успех поиска) зависит от типа изображения, его чёткости, фона, на котором находится текст, и многих других факторов. Поэтому для разных видов изображений она разная. Например, для отсканированных документов точность распознавания текстов на русском языке составляет около 80%, для фотографий с надписями — 63,2%, а для скриншотов приближается к 100%. Помимо русского языка, система также распознаёт английский, украинский и турецкий. Точность распознавания текстов всего потока изображений более 70%. Это неплохой результат, но мы будем работать над его улучшением.
29 комментариев
Подписаться на комментарии к посту
kibermatritza.shaherezada
25 марта 2015, 14:29
Интересная статья, спасибо!
Зачет.
Отлично. Ещё одна технология от Большого Брата теперь и в Яндекс.Диск.
Кто кроме меня имеет доступ к индексированному распознанному тексту, находящемуся на картинках в моём ЯДиске?
captain.dniwe,
"There is no cloud. Just other people's computers."
captain.dniwe,
Ответ очень простой — никто.
captain.dniwe,
Жить надо так, чтоб не было мучительно больно, чтоб не жёг позор перед АНБ....
captain.dniwe,
задайте себе другой вопрос, "Кто кроме меня имеет доступ к индексированным распознанным файлам, находящемся в моём ЯДиске"? Почувствуйте разницу.
captain.dniwe,
Не выкладывайте ничего в сеть, живите в тундре в маленькой хижинке без телефона и компа и будет вам счастье. Свобода! И главное - никакого прогресса!
Удалённый пользователь
25 марта 2015, 15:27
ОЧЕНЬ ПОЗНАВАТЕЛЬНАЯ СТАТЬЯ! СПАСИБО!
Комментарий удалён
Андрей Лаховский
25 марта 2015, 17:12
Пять баллов!
Максим Кунник
25 марта 2015, 18:00
Работает.
Отлично!
А как учитываются (и учитываются ли) в алгоритме языковой модели возможные грамматические ошибки, сокращения слов (хотя бы те, что по правилам), омонимы и паронимы? Выходит ли поиск контекста за рамки слова, если не получается слово распознать? Отличается ли эта языковая модель от той, которая используется в обычном текстовом поиске?
Очень интересна история с языковой моделью :)
Pr0kopenko,
А роль семиотики в адвертологии....?
schurup87,
а это, кажется, уже слегка за пределами того, о чем мы говорим :)
Или это был намек на то, что я слишком развернулась со своими вопросами?)
Pr0kopenko,
Это добрая шутка!
Pr0kopenko,
Языковая модель для распознавания не такая как в текстовом поиске. Мы используем словари и регулярные выражения для распознавания отдельных слов, а также сочетаемость подряд идущих слов. Грамматические ошибки в печатных текстах и объявлениях не так часто встречаются как в запросах к поисковику, общепринятые сокращения входят в словари. Омонимы и паронимы - это скорее для понимания текста, а не для распознавания.
©ШвЕц АрTёМ
25 марта 2015, 23:48
Спасибо, а получить текст можно?
©ШвЕц АрTёМ,
получить текст нельзя. Можно найти изображение, если вы помните слова, которые были на нем.
©ШвЕц АрTёМ
26 марта 2015, 22:22
uliyana-u,
жаль, такое добро и только для поиска :-)
И где всё это можно увидеть ?
К Андрей,
увидеть можно в своём Яндекс.Диске https://disk.yandex.ru/.
А как искать то по картинкам моим используя Яндекс?
> для отсканированных документов точность распознавания текстов на русском языке составляет около 80%
Позорище какое
Стал опасаться за фотки внутри Яндекс Диска. С другой стороны упростили жизнь.
Поиск то может и работает. Но вот я чё то ненашел функции распознавания текста на подобии ABBYY FineReader кстати которая есть у майкрософтовского One Drive работающее через мобильную прогу.
Как пройти в переводчик?
А ещет ли он в папке Почтовые вложения Яндекс диска?