Бот в MAX принимает фото так же, как Telegram-бот: апдейт приходит на webhook, файл скачивается по ID. Дальше — задача компьютерного зрения: классификация, детекция, OCR или сравнение лиц. Разберём, как собрать такой пайплайн без лишней сложности и где он реально окупается.
Когда визуальное распознавание окупается
Computer vision в боте — не игрушка, а способ срезать ручной труд. Типичные сценарии:
- Приём заявок по фото: пользователь шлёт скан паспорта, чека, накладной — бот извлекает текст через OCR и заполняет CRM.
- Модерация UGC: классификатор отсеивает запрещённый контент до того, как менеджер увидит сообщение.
- Классификация дефектов: фото товара или объекта прогоняется через модель, бот возвращает категорию проблемы.
- Поиск по фото: эмбеддинг изображения сравнивается с базой каталога, возвращаются похожие позиции.
Если объём — менее 50 фото в день, обычно дешевле оставить ручную обработку. Выше — алгоритм окупается за месяц-два.
Как принять и обработать фото в MAX
Bot API в MAX повторяет логику Telegram: апдейт message_with_photo содержит массив размеров; берём самый крупный, запрашиваем getFile, скачиваем по file_path. Дальше — стандартный путь:
- Кладём файл во временное хранилище (S3-совместимое — Yandex Object Storage, MinIO).
- Отправляем задачу в очередь (Redis Streams, RabbitMQ) — синхронно ML-модель в webhook не зовём, иначе MAX отвалит таймаут.
- Воркер забирает задачу, прогоняет через модель, пишет результат.
- Бот отправляет ответ пользователю по
chat_id, как только результат готов.
Такая схема выдерживает всплески нагрузки и даёт контролируемую задержку.
Какие модели использовать
Выбор зависит от задачи и бюджета:
- OCR: Tesseract для простых сканов, EasyOCR для русского рукописного, Yandex Vision OCR — если нужна точность на чеках и документах.
- Классификация: дообученный ResNet или EfficientNet — лёгкие модели, работают на CPU при объёме менее 1000 фото в день.
- Детекция: YOLOv8 или RT-DETR — если нужно найти объекты на фото и обвести bbox.
- Эмбеддинги для поиска: CLIP или DINOv2, индекс — Qdrant или pgvector в Postgres.
- LLM-зрение: GigaChat Vision, YandexGPT Vision — для свободных вопросов по картинке без обучения собственной модели.
Архитектура продакшен-решения
Минимальный стек, который мы используем для проектов от 15 000 ₽: Go или Python на стороне бота, FastAPI-микросервис с моделью, Redis для очереди, Postgres для логов и истории, Object Storage для файлов. Всё в Docker, разворачивается через docker-compose на одной VPS или в Yandex Cloud.
Для GPU-моделей выгоднее арендовать спот-инстанс или использовать managed-сервис вроде YC ML Platform — собственная карта окупается только при потоке более 5000 запросов в сутки. CPU-инференс хорошо тюнится через ONNX Runtime или OpenVINO: на простых классификаторах latency падает в 2–4 раза.
Что важно учесть
- Размер файлов: MAX ограничивает скачивание; крупные изображения сжимаем перед инференсом.
- Приватность: если на фото — персональные данные, обработка попадает под 152-ФЗ. Нужны согласие пользователя и аудит хранения.
- Качество входа: пользователи присылают перевёрнутые, размытые, плохо освещённые фото. Перед моделью ставим препроцессинг: автоповорот по EXIF, ресайз, бинаризацию для OCR.
- Метрики: логируем confidence модели и долю отказов. Если уверенность ниже порога — бот вежливо просит переснять или передаёт оператору.
- Стоимость инференса: при использовании облачных API считаем стоимость на 1000 запросов и закладываем в юнит-экономику.
Итого
Распознавание изображений в боте MAX — это связка приёма фото через Bot API, асинхронной очереди и ML-модели в отдельном сервисе. Технически задача стандартная, ключевое — правильно выбрать модель под объём и качество входных данных. Окупается там, где исключает ручную обработку: OCR документов, модерация, классификация дефектов. Запускается за 2–3 недели вместе со сбором датасета.
Частые вопросы
Когда распознавание изображений в боте MAX окупается?
Computer vision в боте — не игрушка, а способ срезать ручной труд. Типичные сценарии. Приём заявок по фото: пользователь шлёт скан паспорта, чека, накладной — бот извлекает текст через OCR и заполняет CRM. Модерация UGC: классификатор отсеивает запрещённый контент до того, как менеджер увидит сообщение. Классификация дефектов: фото товара или объекта прогоняется через модель, бот возвращает категорию проблемы. Поиск по фото: эмбеддинг изображения сравнивается с базой каталога. Если объём — менее 50 фото в день, дешевле оставить ручную обработку.
Как технически принять фото в боте MAX и обработать?
Bot API в MAX повторяет логику Telegram: апдейт message_with_photo содержит массив размеров; берём самый крупный, запрашиваем getFile, скачиваем по file_path. Дальше: кладём файл во временное хранилище (S3-совместимое — Yandex Object Storage, MinIO). Отправляем задачу в очередь (Redis Streams, RabbitMQ) — синхронно ML-модель в webhook не зовём, иначе MAX отвалит таймаут. Воркер забирает задачу, прогоняет через модель, пишет результат. Бот отправляет ответ пользователю по chat_id, как только результат готов. Схема выдерживает всплески нагрузки.
Какие модели использовать для распознавания изображений?
Зависит от задачи. OCR: Tesseract для простых сканов, EasyOCR для русского рукописного, Yandex Vision OCR — если нужна точность на чеках и документах. Классификация: дообученный ResNet или EfficientNet — лёгкие модели, работают на CPU при объёме менее 1000 фото в день. Детекция: YOLOv8 или RT-DETR — если нужно найти объекты на фото и обвести bbox. Эмбеддинги для поиска: CLIP или DINOv2, индекс — Qdrant или pgvector в PostgreSQL. LLM-зрение: GigaChat Vision, YandexGPT Vision — для свободных вопросов по картинке без обучения собственной модели.
Какой стек для production-распознавания изображений?
Минимальный набор. Go или Python на стороне бота. FastAPI-микросервис с моделью отдельно. Redis для очереди задач. PostgreSQL для логов и истории распознавания. Object Storage для файлов. Всё в Docker, разворачивается через docker-compose на одной VPS или в Yandex Cloud. Для GPU-моделей выгоднее арендовать спот-инстанс или использовать managed-сервис вроде YC ML Platform — собственная карта окупается только при потоке более 5000 запросов в сутки. CPU-инференс хорошо тюнится через ONNX Runtime или OpenVINO: на простых классификаторах latency падает в 2–4 раза.
Какие подводные камни при работе с фото в боте MAX?
Пять основных. Размер файлов — MAX ограничивает скачивание, крупные изображения сжимаем перед инференсом. Приватность — если на фото персональные данные, обработка попадает под 152-ФЗ, нужны согласие пользователя и аудит хранения. Качество входа — пользователи присылают перевёрнутые, размытые, плохо освещённые фото; перед моделью ставим препроцессинг (автоповорот по EXIF, ресайз, бинаризацию для OCR). Метрики — логируем confidence модели и долю отказов; если уверенность ниже порога, бот вежливо просит переснять. Стоимость инференса считаем на 1000 запросов.
Как работать с персональными данными на фото по 152-ФЗ?
Если на фото есть ПДн (паспорт, СНИЛС, лицо человека), обработка попадает под 152-ФЗ. Нужны: явное согласие пользователя на обработку фото с ПДн на отдельном шаге диалога, хранение на серверах в РФ (242-ФЗ), минимальный срок хранения (распознали — выбросили оригинал, оставили только структурированный результат), журнал доступа сотрудников к фото, удаление по запросу пользователя. Биометрия (распознавание лиц) — спец-категория ПДн, требует отдельного согласия. Лучшая практика — не хранить фото вообще, обрабатывать в памяти и удалять после OCR.