Graspp — новый способ переводить слова в книгах. Пальцем

Привет. Мы придумали и сделали приложение Graspp. Это словарь и переводчик с новой (то есть вообще новой) механикой. Работает это так: показываешь пальцем на незнакомое слово прямо в книге, наводишь камеру и видишь перевод. Всё! Теперь это самый удобный способ переводить слова в печатном тексте.

Рассказал, для кого и как мы сделали «еще один переводчик». А главное — зачем, ведь «гугл тоже так умеет». А вот видео, как это работает

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

Идея

Когда читаешь на английском, встречаются незнакомые слова. Если текст на экране, с этим нет проблем: в айфоне есть встроенная функция Look up — в два клика можно узнать значение любого слова.

На macOS это работает еще удобнее: один «тройной тап» и готово. За словом в карман лезть не приходится. В крайнем случае выручают старые добрые сtrl+c и ctrl+v. Ну, вы поняли.

Но если вдруг приходится иметь дело с печатным текстом…

Да, на дворе наш любимый 2020 год, но для текста в офлайне нормального способа посмотреть перевод нужного слова нет (то есть не было). Рассмотрим варианты.

Перепечатывать текст вручную. Видишь слово в тексте, разблокируешь телефон, открываешь переводчик, набираешь на клавиатуре нужное слово, видишь перевод. SO 2008. Но спасибо, что не нужно листать бумажный словарь.

Второй вариант: использовать какой-то AR-фото-переводчик, вроде того, что есть в Google Translate. Но с ними одна проблема. Они. Абсолютно. Не. Предназначены. Для. Книг! Переводится весь текст, сложно понять, где слово, которые ты искал. Если текста много, все будет выглядеть вот так (извините)

Принес вам немного слов
Принес вам немного слов

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

It should be different

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

«Такое уже есть»

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

  • поднял на этом $10 млн.
  • имеет многомиллионную аудиторию.
  • живет в своем доме в Маунтин Вью.
  • ездит на Tesla, носит Apple Watch.

С этими мыслями я залез в App Store и стал смотреть все переводчики подряд. Хм, нету. Погуглил. “Point with finger to translate”. Пусто. “Translate with your finger” — ничего. В таком режиме я провел несколько дней и ничего не нашел. Я ликовал.

Better call Egor

Я позвонил Егору Дубовицкому, своему бывшему коллеге. Мы проработали вместе несколько лет в агентстве. Потом я ушел строить сольную карьеру. Егор еще немного поработал — и тоже ушел. Я помнил, что Егор всегда любил печатные книги (и комиксы!), всегда думал перед тем, чтобы что-то рисовать. А это редкость. Поэтому я позвонил Егору.

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

Первый прототип Graspp
Первый прототип Graspp

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

Sleep Mode выключает камеру и показывает на экране последние переведенные слова. Это экономит батарейку и не отвлекает. А когда берешь телефон в руку — приложение сразу «просыпается». Работает это так:

Не знаю, почему это не придумал кто-то до нас! Горжусь «Слип Модом», как родители гордятся, когда их ребенок выиграл городскую олимпиаду по математике

Как мы искали инвестора

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

“I’m up all night to get Lucky”

Нам повезло быстро найти очень хорошего iOS-разработчика. По имени Лаки! В этот момент я начал представлять свой дом в Маунтин Вью (на самом деле нет).

Путь к прототипу

Сначала я был уверен (и, разумеется, рассказал нашим инвесторам), что воплотить задуманное не составит труда: для распознавая пальца наверняка есть готовое opensource-решение. Подсветить нужное слово тоже несложно: взял, да и подсветил!

Для распознавания слов можно взять одну из множества OCR-библиотек. «Нам нужно просто соединить эти технологии и — ВЖУХ — у нас рабочий продукт».

За первую неделю работы стало понятно, что примерно все из этого не совсем так, как я думал. Например: одни OCR-библиотеки все умели, но отказывались работать в риалтайме. Другие работали, но не выдавали все, что нужно.

Подсветить (выделить) слово, на которое указывает палец, оказалось непросто: из-за нестабильного распознавания от фрейма к фрейму выделение либо дергалось, либо при смягчении, наоборот, «плавало». Для решения этой проблемы пришлось использовать ARKit — так мы стали стартапом в области дополненной реальности :)

Магия ARKit — вы только посмотрите, как приятно выделяются слова на этом видео!

Готового решения для трекинга пальца, которое бы работало на iOS, да еще и быстро, не оказалось. Даже хуже: не нашлось и открытого пригодного датасета с пальцами для обучения своей модели.

Как мы стали стартапом в области машинного обучения

Пока Егор рисовал дизайн приложения, которое, возможно, никогда не выйдет, а Лаки программировал приложение, которое, возможно, не получится сделать, я стал судорожно устанавливать все репозитории на GitHub, где в каком-либо виде встречались слова “finger” и “recognise”.

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

Ранний прототип, где уже все работало. Но без пальца

Через месяц неудачных поисков opensource-решения я стал искать ML-специалиста, который нас спасёт. Новости были разные. Например, хорошая новость: оказывается, мой однокурсник Сережа Войтович занимается machine learning. Плохая новость: Сережа Войтович уже несколько месяцев работает в Apple. Хорошая новость: команда специалистов по ML из Твери готова нам помочь. Плохая новость: это будет стоить $6000.

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

5000 пальцев и ключик наш

Чтобы модель получилась качественной (распознавала пальцы разных размеров, разных цветов, с маникюром и, например, в перчатках), нужно хотя бы несколько тысяч фотографий. Я стал постоянно фотографировать свой палец. Подключилась моя девушка. Родители и друзья. Так мы набрали около 1000 фотографий, но этого было мало. Нужно было решение, которое масштабируется.

Уже не помню, как я нашел «Яндекс.Толоку». Наверное, стал уже гуглить «быстрый заработок в интернете». Толока — это сервис, который позволяет кому угодно создать специальное задание, которое за деньги выполняют исполнители на «Толоке».

В нашем случае мы просили за десять центов прислать десять фотографий своего указательного пальца на разном фоне. Так за $50 мы получили 5000 фотографий пальцев. Мы были счастливы: оставалось всего лишь разметить наш датасет — указать алгоритму правильные координаты кончика пальца.

У меня в ИТМО был небольшой курс по машинному обучению (передаю привет и «спасибо» Ольге Большаковой), и мы даже писали алгоритм обратного распространения ошибки.

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

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

Прорыв

Слава Богу, когда не можешь воспользоваться правилом 10 тысяч часов, на помощь приходит правило десяти дней до дедлайна. Мы планировали, что потратим на прототип не больше двух месяцев. Не успеем — расходимся: аккаунт на «Толоке» я себе уже зарегистрировал.

Но правило сработало. Машинное обучение похоже на приготовление куличей: нужно оставить тесто на ночь, чтобы оно «поднялось». После такой ночи я вернулся в офис и стал смотреть, как натренировалась последняя версия модели. И наконец-то я увидел это:

У нас получилось сделать модель, которая работала быстро и точно

Я отправил Лаки эту модель, и через несколько у нас было первое полноценное демо:

Первое полноценное демо работы

Это было чудесно: увидеть вживую то, что ты представлял себе. Оказалось, что это действительно удобно! Впереди у нас было (великое будущее) множество вопросов и проблем, которые нам предстояло решить, но основную работу мы сделали: на слово можно показывать пальцем, оно распознается, выделяется и мы видим перевод.

Попап, шторка и пузыри. И снова попап

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

Первая версия главного экрана
Первая версия главного экрана

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

Версия со «шторкой»
Версия со «шторкой»

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

Версия с «баблом»
Версия с «баблом»

Мы стали искать новую идею, Егор вспомнил про игру Machinarium и выдумал БАБЛЫ! Несколько дней мы были в эйфории, и нам казалось, что БАБЛЫ наше будущее. Лаки уговаривал нас опомниться и объяснял, что для вытянутых слов круглые баблы — эмм — не подходят.

Мы опомнились. Баблы превратились в простой и элегантный попап. Круг замкнулся. Основные значения мы решили крупно показать на главном экране, а словарную статью спрятать внутри. Так появился Наш Идеальный Главный Экран.

Концепция, с которой мы обрели покой
Концепция, с которой мы обрели покой

Как можно использовать Graspp

Переводить пальцем

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

Переводить тапом

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

Переводить прицелом!

В последнем релизе вернули (Паша, обнял) наш тестовый режим «прицела». Работает так: зажимаешь иконку [-] прицела слева, целишься в слово — БАМ! — видишь перевод.

Переводить с клавиатуры

Наша главная инновация. Если хочется перевести то, чего нет в книге, можно сделать это с помощью клавиатуры! Лайфхак: в этом режиме уже можно переводить выражения. Так, например, “take off your dress” переведется как «сними свое платье».

Сохранять слова

В планах добавить нормальное изучение слов: карточки или викторины. Думаем. А пока слова можно сохранить в список, взять бумагу, нарезать карточки… вы поняли, что делать :) Еще последние 100 слов сохраняются в Истории.

Слушать произношения

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

One more thing

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

<i>Глубже</i> изучаем значение слова “hadal” в Graspp  
Глубже изучаем значение слова “hadal” в Graspp  

Планы (и мечты)

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

Еще одна важная функция в работе — перевод фраз и предложений. Можно будет указать пальцем (или тапнуть, или прицелиться) на несколько слов подряд — и мы переведём их вместе.

Еще несколько убийственных функций, с которыми жизнь не будет прежней: фонарик для всех тех, кто читает в темноте. Зум, но не тот, о котором вы подумали. Ночной режим! Пишите в комментариях, чего хотелось бы вам (только не вообще, а в приложении).

Есть и глобальные планы: а что, если Graspp станет дефолтным жестом в стандартной камере? Такой Google Lens по-эпловски. (Дорогой Тим, читай между строк, пожалуйста). А что, если можно будет показать пальцем на кроссовки сына маминой подруги и купить такие же?

Едем дальше. В светлое будущее, где у каждого есть AR-очки. Тогда (дорогой Тим, не читай) не нужен и айфон: показал пальцем и уже знаешь перевод. Технология та же. А ведь мы сделали это еще в далёком 2020-ом!

Помощь зала

Мы только начинаем. Давайте действовать по формуле “Write code. Talk to users”. Пишите в комментариях, что мы сделали не так. И что, наоборот, понравилось. Без чего мы провалимся. А с чем заработаем на дом в Маунтин Вью.

Сразу отвечу на вопросы, которые нам задают чаще всего:

Будет ли Android-версия?

Начнем делать, когда на iOS будет 100 тысяч пользователей. Это случится скоро, так что мы ищем опытного Android-разработчика. Пишите нам на почту: team@getgraspp.com.

Как вы планируете зарабатывать?

Скачать Graspp можно бесплатно. Позже мы планируем добавить подписку на Pro-функции: перевод фраз и подробные словарные статьи (пока это тоже бесплатно). Напишите, пожалуйста, сколько вы готовы платить за такую функциональность. И вообще, готовы ли.

Что значит Graspp?

Английский глагол “grasp” значит одновременно «хватать», «понимать» и «схватывать налёту». А две буквы «p» мы добавили, чтобы глагол превратился в название приложения (а еще чтобы нас проще было найти).

Когда вы добавите сербский/японский/эсперанто/(здесь может быть ваша реклама)?

Напишите, пожалуйста, нам на team@getgraspp.com с просьбой добавить конкретный язык. Мы следим за количеством желающих и таким образом приоритезируем языки. Пока лидируют немецкий и французский.

Классный проект. Как я могу помочь?

Ура, мы очень рады! Во-первых, скачайте приложение и попробуйте почитать что-нибудь с Graspp’ом. Если вы сами не читаете на английском, порекомендуйте приложение тому, кому оно может быть нужно. Бойфренд учит английский? Внук читает Винни Пуха в школе? Коллега любит смотреть сериалы на английском с субтитрами? Им Graspp очень пригодится. Посоветуйте им нас, пожалуйста: то, что раньше отвлекало и было лень, теперь стало гораздо проще.

Спасибо, что прочитали. Теперь вам слово.

162162
177 комментариев

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

Надеюсь, вы доведёте приложение до хорошего уровня и дадите людям новую модель поведения и сможете на этом поднимать бабки :)

21

Дмитрий, спасибо! Да, расшифровка родного языка тоже в планах :)) Планируем добавить поддержку Вики. Например, увидел в тексте название какого-нибудь города, показал пальцем, узнал, где город находится и почитал историю! 

14

Сейчас нейронка Гугл переводчика очень мощная. Переводчик год назад и сейчас - два разных переводчика. )

4

Где-то пару лет назад на IO очередном гуглеры рассказывали о переносе их translate-а на новые нейронки, которые с тех пор обучаются и собирают данные. Переводчик постоянно совершенствуется и рост "охвата" не линеен. А качество перевода и понимание контекста (на что сейчас ставится все больший упор) - ключевое для электронного переводчика.
Сейчас Lens умеет на лету распознавать текст, после чего в тексте можно выбрать слово или абзац и перевести.

Это потрясающе!!! Спасибо большое, буду ждать Андроид версию.

7

Талип, спасибо! Записал вас — напишу, когда будет первая Android-бета

Эм... Даже не буду ничего говорить про ABBYY Lingvo и TextGrabber. С переводом отдельных слов с видеопотока и AR (с помощью Vuforia и как раз на Андроид) с 2013 года. 

2