AI Камера для перекладу (AR Translation) у мобільних додатках
Функція "Миттєвий переклад" Google Translate — це AR Translation у дії: камера бачить текст, переклад з'являється в реальному часі, накладений на зображення так, ніби він там вже надрукований. Самостійна реалізація складніша, ніж видається: потрібна OCR, переклад, інпейнтинг фону під стертим вихідним текстом та рендер нового тексту з правильним шрифтом і розміром.
Архітектура конвеєру AR Translation
Кожний кадр з камери проходить через кілька етапів:
Кадр → Детектування тексту → OCR → Переклад → Inpainting → Накладення тексту → Рендер
Детектування тексту. Знайти обмежувальні рамки тексту в кадрі. На iOS: VNRecognizeTextRequest (Vision framework) з recognitionLevel: .fast для реального часу. На Android: ML Kit Text Recognition v2. Обидві бібліотеки працюють на пристрої, не потребують мережі. Vision framework повертає VNTextObservation з обмежувальною рамкою в нормалізованих координатах — конвертуйте у координати екрану з урахуванням орієнтації буфера.
OCR. VNRecognizeTextRequest з recognitionLevel: .accurate занадто повільно для кожного кадру. Стратегія: використовуйте .fast для детектування, .accurate лише при стабілізації тексту (натискання користувача або стаціонарне положення телефону). Детектування стабільного кадру: порівняйте обмежувальні рамки між кадрами — якщо відхилення < 5px → текст стабільний → запустіть accurate OCR.
Переклад. Два варіанти:
| На пристрої (ML Kit Translate) | Cloud API (DeepL, Google Cloud) | |
|---|---|---|
| Latency | 10–50 мс | 200–800 мс |
| Якість | Задовільна | Висока (DeepL особливо) |
| Offline | Так (~30 MB модель) | Ні |
| Вартість | Безплатно | За запит |
Для прямої трансляції з камери — лише на пристрої. Для режиму "зафотографував → перевів" — cloud API з DeepL для кращої якості.
Inpainting та накладення тексту — найскладніша частина
Простий підхід: намалювати прямокутник кольору фону над вихідним текстом, написати переклад зверху. Результат — грубий білий прямокутник, який не вписується в зображення. Правильний підхід:
Детектування кольору фону. Взяти пікселі навколо обмежувальної рамки, обчислити медіанний колір — заповнити прямокутник ним. Працює для однорідних фонів (біла стіна, аркуш паперу).
Texture Inpainting для складних фонів. CoreImage CIInpaintingFilter (iOS 16+) або користувацький convolution kernel для заповнення області текстурою фону. Для реального часу — занадто повільно, використовуйте лише у режимі статичного фото.
Відповідність шрифту. Визначте розмір вихідного тексту з обмежувальної рамки, виберіть UIFont / TextPaint з подібним розміром. Визначення конкретного шрифту за результатом OCR — невирішена задача для більшості випадків. Використовуйте системний sans-serif.
Мови справа наліво (RTL). Arabic, Hebrew — текст іде справа наліво, UILabel та TextView потребують semanticContentAttribute: .forceRightToLeft. При накладенні на зображення: NSParagraphStyle.writingDirection = .rightToLeft.
Стабілізація та продуктивність
Запуск повного конвеєру на кожному кадрі при 30 FPS неможливо. Throttling:
- Детектування тексту: кожні 3–5 кадрів
- OCR: лише при стабілізації або натисканні
- Переклад: debounce 500 мс при зміні тексту
На iPhone 12+ Metal Performance Shaders прискорюють Vision pipeline. На Android — GPU Delegate для ML Kit через GpuDelegateV2.
Кешуйте результати за хешем OCR-тексту: не перекладайте один і той же текст двічі за сесію.
Що входить у роботу
- Вибір архітектури: на пристрої проти cloud, livecam проти photo mode
- Реалізація OCR + translation pipeline
- UI для вибору мов (з автоматичним детектуванням вихідної мови)
- Накладення перекладного тексту на зображення
- Offline-режим із завантажуваними мовними моделями (ML Kit)
Часова шкала: базовий AR translation для статичних фото — 3–5 тижнів. Real-time livecam переклад з on-device ML та offline-режимом — 6–10 тижнів. Вартість розраховується індивідуально.







