Как офлайн-перевод работает на вашем iPhone
Конвейер перевода приложения выполняется полностью на устройстве. Никакое фото, никакой результат OCR и ни один запрос на перевод не покидает iPhone. В этой статье объясняется, что на самом деле означает «на устройстве», где живут модели и какие компромиссы несёт локальное выполнение перевода.
Части, которые выполняются на устройстве
Для камерного перевода на телефоне выполняются три независимых задачи:
- OCR. Форкнутый пакет
vision_text_recognitionзапускает распознавание текста локально. Он поддерживает латиницу, китайский (упрощённый и традиционный), японский и корейский шрифты. Каждый распознанный текстовый блок несёт свою ограничивающую рамку и распознанный текст. - Перевод. Движок перевода на устройстве от Google ML Kit берёт вывод OCR и производит переведённый текст. Движок поставляется в виде загружаемой языковой модели для каждой языковой пары; приложение загружает модели по требованию и кэширует их на диске.
- Рендеринг. Страница результатов рисует каждый переведённый блок поверх исходного фото, используя ограничивающие рамки, возвращённые движком OCR. Для рендеринга наложения не требуется обращение к серверу — изображение, исходные блоки и переводы всё находятся в памяти устройства.
Почему это важно
- Конфиденциальность. Фотографии уличных вывесок, контрактов, медицинских форм и личной переписки остаются на устройстве. В конвейере нигде нет шага загрузки, так что нет ничего, что можно утечь, вызвать в суд или продать.
- Задержка. Нет сетевого round-trip. OCR типичной страницы, снятой на смартфон, завершается значительно меньше чем за секунду на современном устройстве, а перевод результатов по блокам стримится по мере завершения каждого блока.
- Офлайн. Конвейер работает в самолёте, в подвале, в туннеле, в поезде, в стране без покрытия. Движок OCR и движок перевода загружаются один раз и используются повторно неограниченно; ничего не извлекается за каждый захват.
- Стоимость. Приложение не платит за символ API перевода, поэтому функции не нужна платная стенка на основе использования или месячный лимит символов, чтобы оставаться устойчивой. Бесплатный уровень — это тот же конвейер.
Где живут модели
ML Kit публикует модели перевода на устройстве для 19 языков. Каждая модель занимает примерно 10–50 МБ. Когда вы выбираете исходный или целевой язык, приложение загружает соответствующую модель в локальную песочницу приложения при первом использовании. Модель сохраняется при перезапусках приложения; её удаление немедленно освобождает хранилище.
Полный список поддерживаемых языков: арабский, китайский (упрощённый), чешский, нидерландский, английский, французский, немецкий, хорватский, венгерский, итальянский, японский, корейский, польский, португальский, румынский, русский, словацкий, словенский и испанский.
Что загружается (и что нет)
- Не загружается. Фотографии, текст OCR, текст перевода, записи истории, состояние языковой модели. Ничто из этого не покидает устройство.
- Загружается. Анонимные отчёты о сбоях и агрегированные счётчики (например, «запросы на перевод в день»). Отчёты о сбоях не содержат пользовательский контент; если в будущем отчёте когда-либо окажется контент, это будет ошибкой, о которой следует сообщить.
Компромиссы локального выполнения
- Ограниченный список языков. Поддерживаются только те языки, которые ML Kit публикует как модели на устройстве. Список курируется и в настоящее время содержит 19 записей.
- Требуется загрузка модели. Первый перевод для языковой пары запускает одноразовую загрузку. Страница менеджера моделей показывает состояние и позволяет предварительно загрузить для офлайн-поездок.
- Качество. Качество перевода на устройстве сопоставимо с облачным переводом для коротких, хорошо сформированных текстов. Длинные абзацы или специфическая для предметной области терминология могут отличаться от облачного движка, настроенного для этой предметной области.
- Вычисления. OCR и перевод используют ЦП и Neural Engine телефона. Влияние на батарею при однократном захвате невелико, но измеримо для пакетных рабочих процессов.
Что это значит для вас
Если вы когда-либо колебались сфотографировать конфиденциальный документ, потому что фото окажется на чужом сервере, это колебание — причина, по которой приложение существует. Каждая часть конвейера работает локально, и модель данных приложения построена на предпосылке, что ничто не покидает устройство, если пользователь явно не решит поделиться результатом.