Реализация бота с распознаванием изображений в мобильном приложении
Пользователь фотографирует — бот отвечает. Звучит просто, но между «прикрепить фото» и «получить полезный ответ» лежат выбор модели, управление размером запроса и обработка случаев, когда изображение не содержит того, что ожидается. Наш опыт показывает, что правильный выбор 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. Мы гарантируем поддержку и обновление решения.







