LLM API и интеграция

Распознавание изображений через API: какие модели

Распознавание изображений через API: какие модели

21 августа в живой выдаче GET /v1/models появилось поле capabilities.vision — отдельный ответ на вопрос «примет ли эта модель картинку на вход». Значение verified было подтверждено у sonnet-5 и gemini-3-flash; актуальный статус нужно читать в живом каталоге. По текущим ставкам кадр Full HD обходится в 40,37 ₽ за тысячу картинок на sonnet-5 и 9,29 ₽ на gemini-3-flash без учёта ответа — но в одиночном запросе на sonnet-5 служебный контекст маршрута стоит в 3,5 раза дороже самой картинки. Разбираем, что именно означает поле, как две компании считают изображение в токенах и что из этого следует для счёта.

Что изменилось в каталоге 21 августа

В выдаче GET /v1/models у 36 текстовых моделей появился новый ключ vision внутри объекта capabilities. Выглядит он так:

"capabilities": {
  "chat_completions": "verified",
  "streaming": "verified",
  "tools": "unknown",
  "json_output": "unknown",
  "vision": "verified",
  "max_output_tokens": null
}

Раскладка по каталогу на 21 августа выглядит так:

ЧтоСколько позиций
Всего в живой выдаче40
Текстовых моделей с полем vision36
Из них vision: verified2
Из них vision: unknown34
Генераторов изображений без поля vision4

Механика знакомая: ровно так же три дня назад в контракте появились поля серверного веб-поиска, и там тоже подтверждённой оказалась одна позиция — мы разбирали это в материале про серверный веб-поиск у Sonnet 5. Каталог прирастает не моделями, а осями, по которым про модель можно что-то утверждать.

Что означает vision: verified в выдаче /v1/models

Значение verified означает, что модель приняла картинку через маршрут KeyDealer в контролируемой пробе, и про неё можно говорить утвердительно. Всего значений три, и путать их дорого.

verified — поведение подтверждено контролируемой пробой через маршрут KeyDealer. Про такую модель можно говорить утвердительно: картинку примет.

unsupported — известно, что не работает. В поле vision на 21 августа этого значения нет ни у одной позиции.

unknown — KeyDealer заявления не делает. Это не отрицание. Модель вполне может уметь читать картинки у своего разработчика; вопрос в том, что через наш маршрут это не проверяли, и в контракте под этим ничего не написано. Тридцать четыре позиции из тридцати шести сегодня именно в этом состоянии.

Практическая разница простая. Если вы строите функцию, где пользователь загружает скриншот, и берёте модель со статусом unknown — вы берёте на себя риск, который сервис на себя не взял. Проверьте сами на своём трафике, прежде чем выкатывать.

У каких моделей каталога ввод картинок подтверждён

На 21 августа 2026 года подтверждены две позиции: sonnet-5 из семейства Claude и gemini-3-flash из семейства Gemini. Обе — из разных семейств и с разной ценой.

МодельСемействоСтавка каталога, ₽ за млнvisionОтметка проверки
sonnet-5Claude30verified20.08.2026, 17:24 UTC
gemini-3-flashGemini6verified20.08.2026, 17:24 UTC

Отметка capabilities_verified_at у обеих совпадает до секунды — проба была одна и та же, прогнанная по двум маршрутам сразу.

Остальные тридцать четыре текстовые позиции — Claude, GPT, Gemini, Grok, GLM, Kimi, Qwen, GPT-OSS — стоят в unknown. Ставки каталога по ним собраны в опорном материале про то, сколько стоит миллион токенов в рублях.

Сколько токенов стоит картинка у Claude

Картинка стоит у Claude ровно ⌈ширина / 28⌉ × ⌈высота / 28⌉ токенов, но не больше потолка модели. Anthropic описывает механику прямо: Claude видит изображение заплатками, каждая заплатка — блок 28×28 пикселей и один визуальный токен. Формула из документации:

визуальных токенов = ⌈ширина / 28⌉ × ⌈высота / 28⌉

Дальше вступает потолок. У каждой модели есть предел по длинной стороне и по числу визуальных токенов; всё, что больше, уменьшается до предела с сохранением пропорций.

УровеньМоделиДлинная сторонаПотолок визуальных токенов
Высокое разрешениеClaude 4.7 и новее2576 px4784
Стандартныйвсе остальные1568 px1568

Sonnet 5 попадает в верхнюю строку. Anthropic отдельно оговаривает, что высокое разрешение включается автоматически: ни бета-заголовка, ни флага в запросе не нужно.

Отсюда неочевидное следствие. Скан листа A4 в 300 dpi — это 2480×3508 пикселей, по формуле 11 214 визуальных токенов. Но потолок 4784 срезает счёт больше чем вдвое: платить будете за 4784, а модель увидит уменьшенную копию. Дорисовывать разрешение сверх потолка бессмысленно — оно не доедет.

Сколько токенов стоит картинка у Gemini

У Google единица счёта крупнее. Он режет кадр на плитки.

Если обе стороны не превышают 384 пикселя, изображение стоит фиксированные 258 токенов. Всё, что крупнее, нарезается на плитки 768×768, и каждая плитка стоит те же 258 токенов. Число плиток Google предлагает считать так — и сам называет формулу приблизительной:

единица кадрирования = floor(min(ширина, высота) / 1.5)
плиток = ⌈ширина / единица⌉ × ⌈высота / единица⌉

В документации разобран пример: картинка 960×540 даёт единицу кадрирования 360, деление сторон — 3 и 2, итого 6 плиток. Шесть плиток по 258 — это 1548 токенов.

Из формулы следует свойство, которое стоит держать в голове при планировании бюджета: число плиток зависит от пропорций кадра, а не от его абсолютного размера. Кадр 1920×1080 и кадр 3840×2160 имеют одно и то же соотношение сторон — и по этой формуле оба дают 6 плиток. Разрешение выросло вчетверо, счёт не изменился. Проверять это стоит на своих данных: формула у Google приблизительная, и точных гарантий под ней нет.

Отдельно у Gemini 3 есть параметр media_resolution — он задаёт верхнюю границу числа токенов на одно изображение или кадр видео. Более высокое разрешение помогает читать мелкий текст, но линейно поднимает и расход, и задержку.

Сколько стоит картинка в рублях на подтверждённых моделях

Считаем по ставкам каталога — 30 ₽ за миллион у sonnet-5 и 6 ₽ у gemini-3-flash. Токены Claude взяты из таблицы Anthropic, токены Gemini посчитаны по опубликованной приблизительной формуле.

Размер картинкиClaude, токенов₽ за 1000 картинокGemini, токенов₽ за 1000 картинок
200×200640,96 ₽2581,55 ₽
1000×1000129619,44 ₽10326,19 ₽
1920×1080 (Full HD)269140,37 ₽15489,29 ₽
2000×1500388858,32 ₽10326,19 ₽
3840×2160 (4K)478471,76 ₽15489,29 ₽

Первая строка показывает инверсию на маленькой картинке: 0,96 ₽ у Sonnet против 1,55 ₽ у Gemini за тысячу. У Google нижняя ступень фиксированная — 258 токенов, меньше не бывает; у Claude такая картинка считается 64 заплатками. На крупных размерах из таблицы Gemini дешевле, а выбор Sonnet имеет смысл, когда важнее его качество или поведение на конкретной задаче.

Обе колонки описывают только вход. Ответ модели оплачивается отдельно по выходной ставке.

Почему служебный контекст маршрута дороже самой картинки

Служебный контекст маршрута у sonnet-5 оценён в 9500 токенов против 2691 у кадра Full HD — в 3,5 раза больше самой картинки. Это число переворачивает таблицу выше.

У каждой позиции каталога в блоке billing опубликовано значение estimated_route_context_tokens — служебный контекст, который едет вместе с каждым запросом. У sonnet-5 он оценён в 9500 токенов, у gemini-3-flash — в 2000. Мы разбирали эту механику отдельно в материале про служебный контекст маршрута.

Теперь сложим с картинкой:

МаршрутКадр Full HDИтого за запрос1000 запросов
sonnet-59500269112 191 токен182,87 ₽
gemini-3-flash200015483548 токенов21,29 ₽

На sonnet-5 служебный контекст в 3,5 раза дороже самого изображения. Тысяча запросов с одной картинкой каждый стоит 182,87 ₽, из которых на картинки приходится 40,37 ₽, а остальные 142,50 ₽ — на служебную часть, которая поехала бы и с пустым запросом.

Вывод из этого не про выбор модели, а про форму запроса. Собирайте изображения пачкой: служебный контекст оплатится один раз на всю пачку, а не отдельно на каждый кадр. Это тот же эффект, который вылез в расчётах корпоративных расходов на токены: там основным драйвером счёта оказалась именно конвертация страниц PDF в картинки перед извлечением данных.

Какие форматы и лимиты принимают вендоры

Claude принимает JPEG, PNG, GIF и WebP, Gemini — PNG, JPEG, WebP, HEIC и HEIF. Общими остаются только три формата, и совместимого множества меньше, чем кажется.

ClaudeGemini
ФорматыJPEG, PNG, GIF, WebPPNG, JPEG, WebP, HEIC, HEIF
Максимум картинок в запросе100 при контексте 200k, иначе 6003600 файлов
Максимальный размер стороны8000×8000 pxне опубликован
Максимальный вес файла10 МБ в base64не опубликован на этой странице
Анимациятолько первый кадр GIFне заявлена

HEIC и HEIF — это то, что по умолчанию отдаёт айфон. Gemini их принимает, Claude в списке не имеет: если картинки приходят прямо из мобильного приложения, конвертировать придётся на своей стороне.

Ещё одна ловушка у Claude: если в одном запросе больше 20 картинок, включается более жёсткий лимит на размер каждой, и превышение возвращается ошибкой invalid_request_error со словами про «many-image requests». Anthropic советует либо держать стороны в пределах 2000 пикселей, либо не класть в запрос больше 20 изображений.

Отдельное ограничение, о котором стоит знать заранее: Claude отказывается называть людей на фотографиях. Если продукт строится вокруг узнавания лиц, эта модель не подойдёт независимо от статуса vision.

Чего в опубликованном контракте пока нет

Поля vision нет в openapi.yaml. Слова vision в опубликованной спецификации на 21 августа нет вообще — оно пришло в живую выдачу раньше, чем в документ. Значит, единственный достоверный источник статуса сегодня — сам ответ GET /v1/models, а не спецификация и не лендинг.

Отдельной платы за картинку в контракте нет. Блок pricing описывает только ставки за миллион токенов, а billing.formula у обеих подтверждённых моделей остаётся прежней: prompt_tokens input_rate + completion_tokens output_rate. Отдельного поля под изображения не появилось. Практически это значит, что визуальные токены попадают в prompt_tokens и оплачиваются по входной ставке — но проверять фактический расход надо по завершённому ответу и балансу, а не по расчёту на салфетке.

Кэш промптов не помогает. У обеих подтверждённых позиций prompt_cache.status равен unsupported. Повторная отправка одной и той же картинки в диалоге оплачивается заново каждый раз — скидки за кэш здесь нет и не обещается.

Что делать, если в продукте нужны картинки на входе

Порядок действий, если в продукте нужны картинки на входе:

  1. Возьмите статус из живой выдачи, а не из статьи. curl https://api.keydealer.ru/v1/models и посмотрите capabilities.vision у нужной модели. Поле молодое, список подтверждённых будет расти.
  2. Выбирайте модель по результату, а не только по размеру. На текущих ставках gemini-3-flash дешевле во всех размерах из таблицы. sonnet-5 стоит выбирать там, где он лучше проходит ваши критерии качества.
  3. Уменьшайте картинку до отправки. Всё, что выше потолка вендора, всё равно будет уменьшено — но трафик и задержку вы оплатите полностью.
  4. Складывайте картинки в пачки. Служебный контекст маршрута оплачивается один раз за запрос, и на sonnet-5 это самая крупная статья расхода при одиночных обращениях.
  5. Заведите отдельный ключ на этот сценарий. Распознавание картинок легко даёт всплеск расхода при ошибке в цикле, и отдельный ключ с лимитом ограничивает ущерб одной функцией.
  6. Не путайте чтение и генерацию. Позиции, которые рисуют изображения, живут в каталоге отдельно и считаются по фиксированной цене за картинку — про них есть отдельный разбор.

Ключ для доступа к каталогу заводится на странице входа, рублёвые ставки и статусы возможностей по всем позициям приходят одним запросом GET /v1/models.

Почему одно поле важнее двух моделей

Появилась не пара мультимодальных моделей, а ось, по которой каталог теперь обязан отвечать на вопрос про картинки. Читать новость как «две модели научились смотреть картинки» неверно: обе умели это у своих разработчиков и раньше, Anthropic и Google документируют vision годами.

Изменилось другое — появилась ось, по которой каталог теперь обязан отвечать. До 21 августа на вопрос «примет ли эта модель скриншот через ваш маршрут» честного ответа в контракте не было ни для одной позиции: не было и самого вопроса. Теперь он есть, и вместе с ним появились 34 честных unknown — публично признанных пробелов, которые видно любому.

Для маркетинга арифметика неудобная: галочка «мультимодальность» выглядела бы куда представительнее, чем два verified против тридцати четырёх unknown. Зато под неё можно закладывать бюджет и сроки. Следующая проба сдвинет счёт — смотрите поле, а не эту статью: она устареет в тот день, когда третья модель получит verified.

Частые вопросы

У каких моделей каталога подтверждён ввод картинок?

На 21 августа 2026 года — у двух: sonnet-5 и gemini-3-flash. У обеих поле capabilities.vision имеет значение verified, отметка проверки одна и та же — 20 августа 2026 года, 17:24 UTC. У остальных 34 текстовых позиций значение unknown.

Что означает unknown в поле vision?

Что KeyDealer не делает заявления. Это не «не работает» и не «работает» — это «контролируемой пробы не было». Писать код в расчёте на картинки по модели со статусом unknown можно, но гарантии в контракте под этим нет.

Сколько токенов стоит картинка у Claude?

Claude режет изображение на квадраты 28×28 пикселей, каждый квадрат — один визуальный токен. Формула из документации Anthropic — ⌈ширина / 28⌉ × ⌈высота / 28⌉. Для моделей Claude 4.7 и новее действует потолок 4784 визуальных токена и длинная сторона 2576 пикселей, для остальных — 1568 и 1568. Всё, что больше, уменьшается до потолка.

Сколько токенов стоит картинка у Gemini?

258 токенов, если обе стороны не больше 384 пикселей. Картинка крупнее нарезается на плитки 768×768, каждая плитка — те же 258 токенов. Google приводит примерную формулу подсчёта плиток: единица кадрирования равна floor(min(ширина, высота) / 1.5), затем каждая сторона делится на неё с округлением вверх и результаты перемножаются.

Сколько стоит распознать картинку в рублях?

Кадр Full HD 1920×1080 обходится в 2691 визуальный токен на sonnet-5 и примерно 1548 токенов на gemini-3-flash. По ставкам каталога — 30 и 6 ₽ за миллион — это 40,37 ₽ и 9,29 ₽ за тысячу картинок без учёта служебного контекста маршрута.

Почему на sonnet-5 картинка дешевле служебного контекста?

Она не дешевле, она дешевле в 3,5 раза именно его. Служебный контекст маршрута у sonnet-5 оценён в 9500 токенов, кадр Full HD — 2691. В одиночном запросе с одной картинкой платите в основном не за картинку.

Задокументировано ли поле vision в openapi.yaml?

Нет. На 21 августа 2026 года слова vision в опубликованном контракте https://keydealer.ru/openapi.yaml нет вообще — поле пришло в живую выдачу GET /v1/models раньше, чем в спецификацию. Единственный достоверный источник статуса сегодня — сама выдача.

Как отправить картинку в модель через OpenAI-совместимый API?

Картинка передаётся частью content в сообщении пользователя — так же, как это описано в спецификации Chat Completions у OpenAI. В опубликованном контракте KeyDealer https://keydealer.ru/openapi.yaml формат блока с изображением на 21 августа 2026 года не описан, поэтому ориентируйтесь на документацию разработчика модели и проверяйте поведение на своём трафике.

Почему модель не приняла фотографию с айфона?

Скорее всего это HEIC. Gemini принимает HEIC и HEIF, у Claude в списке поддерживаемых форматов их нет — только JPEG, PNG, GIF и WebP. Конвертировать придётся на своей стороне до отправки.

Даёт ли кэш промптов скидку на повторную отправку картинки?

Нет. У обеих подтверждённых позиций prompt_cache.status равен unsupported, поэтому одна и та же картинка в диалоге оплачивается заново при каждой отправке. Скидка за кэш не обещается, пока это поле не станет verified.

Можно ли отправить картинку в модель, которая генерирует изображения?

Это разные задачи и разные позиции каталога. У четырёх генераторов — gpt-image-2, gpt-image-1.5, flux-1-dev и flux-2-klein-4b — поля vision в выдаче нет вообще: они рисуют картинку, а не читают её.

Источники