Реализация бота с распознаванием изображений в мобильном приложении
Пользователь фотографирует — бот отвечает. Звучит просто, но между «прикрепить фото» и «получить полезный ответ» лежат выбор модели, управление размером запроса и обработка случаев, когда изображение не содержит того, что ожидается.
Vision API: что использовать
GPT-4o Vision (OpenAI). Передаёте изображение base64 или URL в запрос, получаете текстовый ответ. Понимает сложные сцены, документы, рукопись, схемы. Стоимость — зависит от размера изображения (tile-based pricing). Для детального анализа высокого разрешения — дороже.
Claude 3.5 Sonnet / Haiku. Аналогичная возможность через Anthropic Messages API. Claude хорошо работает с документами и таблицами, показывает сопоставимые результаты с GPT-4o на большинстве задач.
Google Cloud Vision API. Специализированные функции: OCR (TEXT_DETECTION), распознавание объектов (OBJECT_LOCALIZATION), лиц (FACE_DETECTION), логотипов (LOGO_DETECTION), безопасность контента (SAFE_SEARCH_DETECTION). Дешевле LLM для однотипных задач, но нет свободного текстового ответа.
ML Kit (Google) on-device. Полностью на устройстве: распознавание текста, штрих-кодов, лиц, объектов. Нет задержки сети, нет стоимости за запрос. Точность ниже облачных LLM для сложных сцен, но для структурированных задач (QR-код, штрихкод, текст документа) — достаточно.
CoreML + Vision (iOS). MobileNetV3, EfficientNet — классификация изображений на устройстве. VNRecognizeTextRequest для OCR. VNDetectBarcodeRequest для QR/штрихкодов.
Выбор зависит от задачи:
| Задача | Рекомендуемое решение |
|---|---|
| Свободный вопрос по фото | 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()
}
Сценарии применения
Боты для ритейла. Пользователь фотографирует товар — бот находит его в каталоге, показывает цену и наличие. Поиск по визуальному embedding (CLIP + Qdrant) точнее, чем по тексту из OCR.
Медицинские боты. Фото симптома, рецепта, результата анализа — бот разъясняет (не ставит диагноз). Системный промпт должен явно ограничивать область ответов и включать disclaimer.
Боты для документов. Фото накладной, счёта, паспорта — извлечение структурированных данных. GPT-4o Vision + structured output через JSON Schema даёт высокую точность на типовых документах.
Боты для инспекций. Строитель фотографирует дефект — бот классифицирует тип дефекта и создаёт задачу в системе управления.
Обработка «плохих» фото
Обязательные кейсы для тестирования:
- Размытое изображение
- Плохое освещение
- Фото не по теме (пользователь отправил котика вместо чека)
- Изображение с запрещённым контентом
Для последнего — модерация перед отправкой в основную модель. OpenAI Moderation API или Google Safe Search как первый фильтр.
Процесс работы
Определение сценариев использования изображений: что именно нужно распознавать.
Выбор Vision API под задачу и бюджет.
Серверная часть: загрузка изображений, вызов Vision API, формирование ответа.
Мобильный UI: выбор из галереи, камера, предпросмотр перед отправкой.
Тестирование на реальных «полевых» условиях — плохое освещение, углы, частичная видимость.
Ориентиры по срокам
Бот с базовым Vision API (Google Vision или GPT-4o) — 3–5 дней. С кастомной моделью классификации, on-device inference и сложными сценариями — 3–6 недель.







