Мобильный OCR. Как всё начиналось

ec65d289addd4e3da54de32be4ca8418.jpgПеренос OCR-технологий (технологий оптического распознавания) с ПК на мобильные устройства обсуждался, пожалуй, с момента их появления. Ещё в конце 90-х, когда «умные» устройства можно было пересчитать по пальцам, мы задумывались о создании программы, извлекающей данные из визитной карточки, — Business Card Reader, или сокращённо BCR. Эта идея, что называется, витала в воздухе, но ни возможности камер, ни вычислительная мощность устройств не позволяли тогда реализовать её. Выбирать особо не приходилось: либо обычный телефон с хорошей камерой «для обычных людей», либо продвинутый бизнес-наладонник «для профессионалов» (а зачем вообще бизнесменам нужны камеры на устройстве — себя, что ли, фотографировать?)

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

И вот, в конце 90-х вышло первое приложение ABBYY для распознавания текста, причём разработано оно было для портативного сканера, а не для телефона. Этот сканер производства шведской компании C Technologies AB представлял собой небольшое устройство, отдалённо напоминающее маркер или ручку, и позволял построчно сканировать книги, журналы, газеты.

Мобильный SDK был встроен в эту ручку, пользователь вёл ручку по строке, устройство распознавало текст и сразу показывало его на небольшом экране — потом текст можно было передать в компьютер. Этот механизм работы сейчас кажется анахронизмом, достаточно посмотреть на тогдашний старенький девайс, а в те времена это казалось магией!

dae97be78d694879a787528363a73998.JPG

Чтобы из большого FineReader сделать версию для C Pen, понадобился один человеко-год (собственно, один разработчик из нашей команды тогда это всё и сделал).

C Technologies AB до сих пор существует и выпускает портативные сканеры, в которых используются современные решения от ABBYY.

72339af17e6c4da9a6f63977f2252a29.png

После такого успешного старта у команды разработчиков и аналитиков не оставалось уже ни малейшего сомнения, что мобильную технологию OCR нужно воплощать в коммерческом продукте. В 2005 году по заказу южнокорейской компании Diotec (компания разрабатывала приложения, которые предустанавливались в телефоны Samsung) мы впервые сделали SDK, который работал на мобильном телефоне. Благодаря этому сотрудничеству сразу несколько моделей сотовых телефонов Samsung в Европе и в Индонезии были оснащены нашей технологией. Помимо основных библиотек распознавания текста в Mobile SDK были добавлены библиотеки, при помощи которых программа определяла, в какой строке расположен телефонный номер, в какой — имя и фамилия (даже если они напечатаны, например, на шведском), а в какой — адрес. Это и была функциональность, позволяющая распознавать визитные карточки и сохранять данные в нужных полях записной книги телефона.

В 2007 году мы выпустили отдельный продукт — ABBYY Mobile OCR SDK — инструментарий, который позволял сторонним разработчикам включать в мобильные устройства функцию оптического распознавания печатного текста (OCR) и умел распознавать визитные карточки. Телефон, на котором мы разрабатывали первую версию Mobile SDK, — Nokia 6630. На нем уже была подходящая операционная система, но еще не было подходящей для распознавания камеры, так что файлы изображений заливались в него через шнурок или Bluetooth.

c939a1e66bbb417183def5a3b2914ce1.png

История сохранила инструкцию к первому показу изделия на выставке

127a8ebe7cf84edfb25e5d301cf6224b.png

Инструментарий мог использоваться на самых распространенных тогда мобильных платформах, включая Windows Mobile, Symbian или Linux и на любых мобильных устройствах, которые могли так или иначе получать изображения: смартфоны, карманные компьютеры, портативные сканеры, цифровые фотоаппараты. А уже в начале 2008 года вышел первый продукт, который пользователи сами могли устанавливать на свои телефоны, — ABBYY Business Card Reader под Symbian. Уже тогда программа для работы не требовала постоянного подключения к интернету, поддерживала 3 языка интерфейса и 16 языков распознавания текста.

33cbc0bb9a8a4b579de33f93321c75ed.gif

339a2c5d32114c64a045db1daf5daa7a.jpg322989dafc044368902c54a4344924a8.jpg

68d34de5160b46fa9d39ff9392fb7bd5.jpge4b2020bd4fe44db86474585d621ce55.jpg

К сожалению, чехарда с версиями Symbian, огромное количество выпускаемых мобильных устройств (кроме Nokia, аппараты выпускали Samsung, Motorola и Sony, причём, последние даже написали собственную модификацию Symbian — UIQ) не позволяли нам развивать приложение так, как хотелось бы. Кто-то из производителей телефонов поддерживал сенсорный ввод (к примеру, Sony), кто-то до определённого момента нет (Nokia), каждая компания старалась надстроить над системой нечто своё, что полюбится пользователям. Для каждого устройства приходилось разрабатывать и поддерживать отдельную версию BCR, это отнимало время разработчиков, и не давало возможности двигаться вперёд.

Всё изменил, как обычно, первый iPhone. Нам хотелось попробовать сделать Business Card Reader под новую OS, но в тот момент для нас было не очевидно, будет ли популярным новый смартфон, поэтому мы решили сделать MVP (minimal valuable product) — продукт с минимальными трудозатратами. Разработку отдали команде аутсорсеров, у которых были и опыт, и сами девайсы для тестирования. Так первую версию BCR для iOS сделали аутсорсеры из компании Media Moji, приложение работало на iPhone 3G. У «трёшки» были проблемы с автофокусом, поэтому визитки распознавались на ней не очень хорошо. В iPhone 3GS проблему исправили, и следующая версия BCR уже распознавала данные так, как надо.

a2be1f28d9c9434796258d9ebd7b7d9d.png15eb9a0dda7b402da3532e28d7608e5d.png

Конечно, как только спрос на продукт подтвердился, разработка переехала в штат. Кстати, как раз сейчас мы ищем нового руководителя группы iOS-разработки. Требования простые — вы крутой специалист с опытом от 3-х лет и хорошим портфолио за плечами. Если интересно, подробности здесь.

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

0510ae53b63d4314a851e89381d44398.pnga8459aaa9a9a47f78c1e3a8c66b9d31d.png

Растущая популярность устройств на iOS и Android сильно облегчила жизнь всем разработчикам мобильных приложений — и нам в том числе. Во времена Windows Mobile и Symbian в интернете было очень много магазинов мобильных приложений. Это доставляло большую головную боль, потому что у разных интернет-магазинов были разные системы лицензирования, и, если мы хотели там присутствовать со своими приложениями, надо было соответствовать этим требованиям и вносить изменения в дистрибутивы. У нас множились огромные таблицы с версиями дистрибутивов (только один Business Card Reader существовал в 50 разных вариантах), поддержка такого количества версий требовала рабочих рук и времени. Появление централизованных магазинов мобильных приложений — AppStore и Android Market (теперь уже Google Play) — решило эту проблему, и мы смогли сосредоточиться на развитии возможностей приложения.

Мы не будем здесь перечислять все, что придумали с тех пор в BCR, — статья не об этом. Расскажем лишь о том, как искали пути реализации бесконтактной передачи визиток между устройствами. Тема электронного обмена визитками уже лет пять как обсуждается, разработчики стараются кто во что горазд — например, в одной из реализаций (не нашей) чтобы обменяться визитками, нужно было постучать смартфонами друг о дружку. Мы тоже сделали свой вариант бесконтактной передачи по Wi-Fi на основе технологии AllJoyn от Qualcomm (июнь 2013). Но не всё вышло так гладко, как хотелось. Визуально процесс самостоятельной передачи визиток между двумя смартфонами выглядел очень эффектно, и даже работал между iOS и Android устройствами, но была масса ограничений:

• для обмена визитками у обоих пользователей должен был стоять BCR
• оба пользователя должны были находится в одной Wi-Fi сети
• эта сеть должна была быть публичной и позволять подобный обмен данными.

По правде сказать, даже в одной и той же сетке обмен срабатывал не каждый раз, и мы эту функциональность не стали развивать дальше.

6b4047d58d7e46a5987831351cd101c3.png

В итоге мы поняли, что самый простой и популярный способ обмена — это старая добрая электронная почта. И сейчас реализован такой сценарий обмена: после сканирования чужой визитки пользователь сразу же видит на экране большую кнопку «Отправить свою визитку». Он на неё жмёт, и по старинке, по email отправляется письмо с приветственным текстом примерно такого содержания:

e637598b0d1c46a5894c12cbce5b5d84.PNG2cf211d906dc4516b3768fe79665323f.PNG

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

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

Последние лет десять все пророчат смерть бумажным визиткам, но годы идут, а люди так и продолжают обмениваться этими кусочками бумаги. Возможно, лет через 5–10 появится единый формат электронного обмена контактными данными с ботами через blockchain c big data и deep machine learning, и мы, конечно, уже к этому готовимся, а до тех пор тема фотографирования и распознавания визиток останется востребованной.

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

© Habrahabr.ru