Продукт на прокачку: “Тинькофф” научился распознавать номера

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

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

Продукт на прокачку: “Тинькофф” научился распознавать номера

Решили поговорить об этом, потому что проект, с которого начиналась SKÖLOPENDRA 5 лет назад, был напрямую связан с machine learning в распознавании текстов.

Как бы мы “прокачали” идею «Тинькофф» с точки зрения дальнейшего развития рыночного продукта

Мы как продуктовая компания прорабатываем идеи продуктов, которые решают реальные рыночные задачи, приносящие ценность пользователям. Считаем, что максимально быстро “выстреливают” ИТ-продукты, помогающие закрыть ту задачу, которую пользователи уже каким-то способом решают, либо хотели бы решить и ищут возможность это сделать максимально быстро и просто.

Разберем данный кейс

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

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

Наша гипотеза основана на уже привитом пользовательском опыте, связанном с использованием банковских приложений для распознавания определенных типов данных. Уже существующие на рынке решения для быстрого распознавания финансовой информации основаны на базовых шаблонах. Например, когда вас просят ввести данные банковской карты - вы можете включить камеру и навести ее на лицевую сторону карты. В таком случае процесс распознавания сильно упрощен известным заранее шаблоном информации и “маской” вводимых данных. То есть, система знает, как “центрировать” края карты, и в каком блоке и формате содержится нужная информация. Процесс распознавания и сверки происходит легко и быстро.

Возвращаемся к нашему кейсу с распознаванием номеров телефонов, зачастую описанных вручную.

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

Она раскладывается на блоки:

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

Тогда “целевая” продуктовая реализация для решения задачи ускорения обслуживания клиентов могла бы выглядеть следующим образом :

· На условном заранее распечатанном «планшете» есть реквизиты (телефон и/или номер карты) и проверочные ФИО с инициалами получателя;

· Есть окошко суммы для оплаты, причем, сумму можно быстро вписать маркером на стираемой поверхности, а потом обновить для следующего клиента;

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

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

Когда мы прорабатывали крупные проекты в ритейле, там очень активно фигурировал показатель “количество обслуживаемых клиентов” на кассе. Для крупных розничных сетей сокращение времени обслуживания каждого клиента может привести к росту прибыли в 5-10% с каждой ускоренной минуты. Когда речь идет о частных палатках, подобное ускорение обработки живой очереди может приводить к росту оборачиваемости в пиковые часы (вечернее время и выходные) от 15 до 30%, за счет перехвата клиентов с соседних палаток и фокусировании клиентов на том, зачем они пришли (набрать продуктовую корзину), а не на том, что они априори должны делать быстро (отдать деньги).

Было бы интересно поработать с «Тинькофф» над таким продуктом, но если кто-то подхватит, допилит и реализует идею без нас, тоже порадуемся!

Смежные идеи: распознавание лабораторных бланков

Когда-то в юности команда SKÖLOPENDRA делала библиотеку - часть приложения для распознавания информации бланков лабораторно-диагностического оборудования. В общем виде это выглядело так: человек наводил камеру, происходила магия, и в телефоне возникала вся информация, приведенная к общему и понятному для пользователя знаменателю. Приложение выдавало символы, комментарии, единицы измерения, полученное значение и референсное значение. У него был словарь, проводилось обновление данных с сервера.

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

Продукт на прокачку: “Тинькофф” научился распознавать номера

Кроме заморочек с приведением разноформатных данных в единый и понятный вид, приложение должно было быть дружелюбным для пользователя. Человек не фотографирует бланки, ориентируя их так, как мы ему сказали - он делает это так, как ему удобно. Поэтому основная часть созданных алгоритмов была направлена на то, чтобы восстановить ориентацию бланка. Символы мы могли распознать под многими углами, но табличная форма из-за кривизны листа искажалась, и было суперважно восстановить правильную ориентацию листа, даже если бланк был загнут, сложен, расположен под углом к камере, имел засветки от вспышки. С точки зрения решений, которые использовались, это было не просто сложно, а, возможно, даже грандиозно. Все равно, что обучить приложение распознавать “почерк врача” и выдавать его в понятном для пользователя виде - а ведь и такие приложения уже существуют!

Первопроходцы machine learning

Для первопроходцев в деле распознавания текстов описанные нами кейсы были непосильной задачей, но их вклад в развитие machine learning бесценен. В XX веке был создан математический базис, но прикладного значения он еще не имел - не было мощностей для запуска разработок в массовое использование, существовала лишь концепция. Первые алгоритмы объясняли, например, как посмотреть на плоское изображение и распознать, что изображено.

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

Первыми за дело взялись ребята, выпускающие наладонники, карманные компьютеры, планшеты – Newton, Palm, помните такие? Их продукты могли распознать и конвертировать в текст рукописный ввод пером, но первые решения были не самыми удачными и давали большое количество ошибок.

Продукт на прокачку: “Тинькофф” научился распознавать номера

С дальнейшим развитием технологий в носимые устройства закладывались более серьезные алгоритмы, и в итоге все пришло к тому, чем мы повсеместно пользуемся сейчас – наводим телефон с камерой на текст и получаем распознавание “на лету”. Функционал хорошо работает в переводчиках, распознавании номера карты или платежных реквизитов на квитанциях, во всем известных QR-кодах. И не только в них.

С текстами сегодня и вовсе стало намного проще. Любой студент может взять библиотеку на GitHub и интегрировать ее в приложение, которое будет распознавать текст с помощью камеры телефона. Но то, что сегодня мы можем делать это с такой легкостью - результат огромной работы поколений программистов, математиков, исследователей, которые эти алгоритмы разрабатывали.

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

11
1 комментарий

С одной сторны - это действительно очень удобная фича. А с другой, пользоваться будут единицы, мне кажется.