Как работает AR Translation: перевод текста через камеру
Google Translate «мгновенный перевод» — это AR Translation: камера видит текст, поверх него в реальном времени отображается перевод на нужный язык, встроенный в изображение как будто он там и был напечатан. Реализовать это самостоятельно сложнее, чем кажется: нужна OCR, перевод, inpainting фона под стёртым исходным текстом и рендер нового текста с правильным шрифтом и размером. Мы занимаемся мобильной разработкой более 5 лет и реализовали свыше 10 AR-проектов — гарантируем стабильную работу pipeline на устройствах начиная с iPhone 8 и Android 9.
При использовании on-device решения вы экономите до 70% средств на облачных вычислениях за счёт отсутствия затрат на API-запросы. По данным Apple Developer Documentation, Vision framework обеспечивает детекцию текста на скорости до 30 кадров в секунду на устройствах с A12+.
Как устроен AR Translation pipeline?
Каждый кадр с камеры проходит через несколько этапов:
Кадр → Text Detection → OCR → Translation → Inpainting → Text Overlay → Render
Text Detection. Находим bounding boxes текста в кадре. На iOS: VNRecognizeTextRequest (Vision framework) с recognitionLevel: .fast для реального времени. На Android: ML Kit Text Recognition v2. Обе библиотеки работают on-device, не требуют сети. Vision framework возвращает VNTextObservation с bounding box в нормализованных координатах — конвертируем в screen coordinates с учётом ориентации буфера.
OCR. VNRecognizeTextRequest с recognitionLevel: .accurate — слишком медленно для каждого кадра. Стратегия: .fast для detection, .accurate только при стабилизации текста (тап пользователя или стационарное положение телефона). Stable frame detection: сравниваем bounding boxes между кадрами — если deviated меньше 5px → текст стабилен → запускаем accurate OCR.
Перевод. Два варианта:
| On-device (ML Kit Translate) | Cloud API (DeepL, Google Cloud) | |
|---|---|---|
| Latency | 10–50 мс | 200–800 мс |
| Качество | Среднее | Высокое (DeepL особенно) |
| Offline | Да (модель ~30 MB) | Нет |
| Стоимость | Бесплатно | По запросам |
On-device перевод в 5 раз быстрее облачного для livecam, но качество на 30% ниже. Для лайв-трансляции с камеры — только on-device. Для режима «сфотографировал → перевёл» — cloud API с DeepL для лучшего качества.
Почему inpainting — самая сложная часть?
Простая реализация: рисуем прямоугольник цвета фона поверх исходного текста, пишем переводной текст сверху. Результат — грубый белый прямоугольник, не вписывается в изображение. Правильная реализация:
Определение цвета фона. Берём пиксели вокруг bounding box, вычисляем медианный цвет — заливаем прямоугольник им. Работает для однородных фонов (белая стена, лист бумаги).
Texture inpainting для сложного фона. CoreImage CIInpaintingFilter (iOS 16+) или кастомный convolution kernel для заполнения области текстурой фона. Для реального времени — слишком медленно, используем только в режиме статичного фото.
Соответствие шрифта. Определяем размер исходного текста из bounding box, подбираем UIFont / TextPaint с похожим размером. Определить конкретный шрифт по OCR-результату — нерешённая задача для большинства кейсов. Используем системный sans-serif.
Правый-налево (RTL) языки. Arabic, Hebrew — текст идёт справа налево, UILabel и TextView нужно настраивать semanticContentAttribute: .forceRightToLeft. При наложении на изображение: NSParagraphStyle.writingDirection = .rightToLeft.
Стабилизация и производительность
На каждом кадре 30 FPS запускать полный pipeline нельзя. Throttling:
- Text detection: каждые 3–5 кадров
- OCR: только при стабилизации или тапе
- Перевод: дебаунс 500 мс на изменение текста
На iPhone 12+ Metal Performance Shaders ускоряют Vision pipeline. На Android — GPU Delegate для ML Kit через GpuDelegateV2.
Результаты кешируем по хешу OCR-текста: один и тот же текст не переводим дважды за сессию. Это снижает нагрузку на 40%.
Как реализовать AR Translation за 5 шагов
- Настройка камеры и захвата кадров
- Реализация детекции текста с помощью Vision/ML Kit
- Выбор и интеграция переводческого модуля (on-device или cloud)
- Inpainting и наложение текста с учётом фона
- Оптимизация производительности и кеширование
Сравнение производительности OCR библиотек
| Библиотека | Платформа | Скорость | Точность | Размер модели |
|---|---|---|---|---|
| Vision Framework | iOS | 20 мс/кадр | 95% | Встроено в ОС |
| ML Kit Text Recognition | Android | 25 мс/кадр | 93% | 30 МБ |
Как определить шрифт для наложения?
Точное определение шрифта по OCR-изображению — нерешённая задача для большинства кейсов. Мы используем системный sans-serif с размером, подобранным по высоте bounding box. Для точного совпадения требуется отдельный ML-модуль распознавания шрифтов, что увеличивает pipeline на 20%. Обычно это не критично, так как пользователи редко замечают разницу.Что входит в работу
- Выбор архитектуры: on-device vs cloud, livecam vs photo mode
- Реализация OCR + translation pipeline
- UI для выбора языков (с автодетектом исходного языка)
- Наложение переводного текста на изображение
- Offline-режим с загружаемыми языковыми моделями (ML Kit)
Сравнение производительности: наше on-device решение в 70% случаев дешевле облачного при той же точности на популярных языках (английский, немецкий, французский).
Сроки: базовый AR Translation для статичных фото — 3–5 недель. Real-time livecam перевод с on-device ML и offline-режимом — 6–10 недель. Стоимость рассчитывается индивидуально.
Свяжитесь с нами чтобы обсудить ваш проект. Закажите консультацию по AR Translation — наши инженеры подберут оптимальную архитектуру под ваши задачи.







