Реалізація бота з розпізнаванням зображень у мобільному додатку
Користувач фотографує — бот відповідає. Звучить просто, але між «прикріпити фото» та «отримати корисну відповідь» лежать вибір моделі, управління розміром запиту та обробка випадків, коли зображення не містить того, що очікується. Наш досвід 5+ років та 50+ проєктів показує, що правильний вибір Vision API та оптимізація потоку даних скорочують вартість обробки до 2–3 разів, а при on-device розпізнаванні — до нуля за запит. Ми пропонуємо розробку бота під ключ з урахуванням ваших сценаріїв — від рітейлу до медичних консультацій. Розповімо, які технології використовувати та як уникнути типових помилок.
Перший крок — визначити задачу: вільний опис фото, OCR документів, розпізнавання товарів або модерація контенту. Від цього залежить вибір моделі та архітектура серверної частини. Ми використовуємо GPT-4o Vision, Claude, Google Cloud Vision API та on-device ML Kit — комбінуємо їх для оптимального співвідношення ціни та якості. За 3–5 днів отримуєте працюючий прототип, за 3–6 тижнів — готове рішення з кастомною моделлю та навчанням.
Який Vision API обрати?
Вибір залежить від задачі, бюджету та вимог до затримки. Ми протестували всі основні рішення:
- GPT-4o Vision (OpenAI). Передаєте зображення base64 або URL у запит, отримуєте текстову відповідь. Розуміє складні сцени, документи, рукопис, схеми. Вартість залежить від розміру зображення (tile-based pricing). Для детального аналізу високої роздільної здатності — дорожче.
- Claude 3.5 Sonnet / Haiku. Аналогічна можливість через Anthropic Messages API. Добре працює з документами та таблицями.
- Google Cloud Vision API. Спеціалізовані функції: OCR (
TEXT_DETECTION), розпізнавання об'єктів (OBJECT_LOCALIZATION), облич, логотипів, безпека контенту (SAFE_SEARCH_DETECTION). Дешевше LLM для однотипних задач. - ML Kit (Google) on-device. Повністю на пристрої: розпізнавання тексту, штрих-кодів, облич, об'єктів. Немає затримки мережі та вартості за запит. Точність нижча за хмарні LLM для складних сцен, але для структурованих задач (QR, штрихкод, текст документа) достатньо.
- CoreML + Vision (iOS). MobileNetV3, EfficientNet для класифікації.
VNRecognizeTextRequestдля OCR,VNDetectBarcodeRequestдля QR/штрихкодів.
Детальніше про вибір моделі
Для задач з високою точністю на складних сценах краще підходять GPT-4o Vision або Claude. Якщо потрібна низька затримка та конфіденційність даних — on-device ML Kit або CoreML. Ми допомагаємо підібрати оптимальну комбінацію.Apple CoreML Vision documentation рекомендує використовувати on-device моделі для задач, де важлива швидкість та конфіденційність.
| Задача | Рекомендоване рішення |
|---|---|
| Вільне питання по фото | GPT-4o Vision / Claude |
| OCR документів | Google Vision API / ML Kit |
| Штрих- та QR-коди | ML Kit / CoreML (on-device) |
| Класифікація товарів | Custom CoreML / TFLite модель |
| Модерація контенту | Google Vision SAFE_SEARCH |
Відправка зображення з мобільного додатку
Зображення не відправляються напряму до Vision API з мобільного клієнта — ключ API не можна зберігати в додатку.
Потік даних:
Мобільний клієнт → Resize/Compress → Upload to S3/GCS → URL → Ваш сервер → Vision API
Зображення стискається на пристрої до потрібного розміру перед завантаженням. GPT-4o з detail: "auto" сам визначає потрібне розрізнення, але передавати 12-мегапіксельне фото без стиснення — марнотратно та дорого.
// Android: стиснення зображення перед завантаженням
fun compressForBot(uri: Uri, maxSizePx: Int = 1024): ByteArray {
val bitmap = MediaStore.Images.Media.getBitmap(contentResolver, uri)
val scale = maxSizePx.toFloat() / maxOf(bitmap.width, bitmap.height)
val scaled = if (scale < 1f) {
Bitmap.createScaledBitmap(
bitmap,
(bitmap.width * scale).toInt(),
(bitmap.height * scale).toInt(),
true
)
} else bitmap
val output = ByteArrayOutputStream()
scaled.compress(Bitmap.CompressFormat.JPEG, 85, output)
return output.toByteArray()
}
Чому важливо стискати зображення перед відправкою?
Без стиснення кожен запит до GPT-4o Vision може коштувати в 3–5 разів дорожче. Крім того, час завантаження великого файлу збільшується на 2–4 секунди на повільних з'єднаннях. Стиснення до 1024px по більшій стороні з якістю 85% JPEG знижує розмір у 10–20 разів без втрати точності для типових сценаріїв.
Сценарії застосування
- Боти для рітейлу. Користувач фотографує товар — бот знаходить його в каталозі, показує ціну та наявність. Пошук за візуальним embedding (CLIP + Qdrant) точніший, ніж за текстом з OCR.
- Медичні боти. Фото симптому, рецепту, результату аналізу — бот роз'яснює (не ставить діагноз). Системний промпт повинен явно обмежувати область відповідей та включати disclaimer.
- Боти для документів. Фото накладної, рахунку, паспорта — вилучення структурованих даних. GPT-4o Vision + structured output через JSON Schema дає високу точність на типових документах.
- Боти для інспекцій. Будівельник фотографує дефект — бот класифікує тип дефекту та створює задачу в системі управління.
Як обробляти погані фото?
Обов'язкові кейси для тестування:
- Розмите зображення
- Погане освітлення
- Фото не по темі (користувач відправив котика замість чека)
- Зображення з забороненим контентом
Для останнього — модерація перед відправкою в основну модель. OpenAI Moderation API або Google Safe Search як перший фільтр.
Процес роботи
- Аналіз сценаріїв — визначення задач розпізнавання, вибір Vision API, оцінка бюджету.
- Серверна архітектура — проектування та розробка backend для завантаження зображень, інтеграція API.
- Мобільна розробка — реалізація модуля камери/галереї, стиснення, відправка.
- UI/UX — інтерфейс чату з попереднім переглядом, індикацією завантаження.
- Тестування — перевірка на реальних даних, поганих фото, граничних випадках.
- Документація та навчання — інструкції з розгортання, підтримка команди.
Що входить в роботу
| Етап | Опис |
|---|---|
| Аналітика | Визначення сценаріїв, вибір моделі, оцінка вартості обробки |
| Backend | Розробка сервера для завантаження та обробки зображень |
| Mobile SDK | Код для камери, галереї, стиснення, відправки |
| UI | Інтерфейс чату, підказки, індикація |
| Тестування | QA на реальних даних, граничні тести |
| Документація | Інструкції, доступи до API, підтримка |
Орієнтири за термінами
Бот з базовим Vision API (Google Vision або GPT-4o) — 3–5 днів. З кастомною моделлю класифікації, on-device inference та складними сценаріями — 3–6 тижнів. Економія на API-запитах при on-device може досягати 40%.
Зв'яжіться з нами для оцінки вашого проєкту. Наш досвід — 5+ років розробки мобільних додатків, 50+ проєктів з Vision API. Ми гарантуємо підтримку та оновлення рішення. Вартість базового проєкту — від $1 500, комплексне рішення з кастомною моделлю — від $8 000. Економія при on-device інференсі — до 40% на API-запитах.







