Claude давно мультимодален, но в 2026 году vision перестал быть побочной функцией. Это входная точка для большинства документных и агентных воркфлоу. Sonnet 4.6 и Opus 4.8 принимают изображения нативно, в том же messages API, который вы уже используете для текста. На текстоёмких входах (PDF, отрендеренный в PNG, скриншоты, отсканированные счета, дашборды) качество такое, что именно из-за него команды выбирают Claude, а не альтернативы, для бэкофисной автоматизации.
Статья задумана как практический справочник: какие форматы Claude принимает, сколько это стоит, где модель сильна и где ломается. Плюс код, который можно скопировать и запустить через шлюз codexkey (https://api.codexkey.ru/v1).
Форматы и лимиты
Claude vision принимает изображения как base64-блоки внутри user-сообщения. Поддерживаются такие форматы:
- PNG (
image/png) - JPEG (
image/jpeg) - GIF (
image/gif): только первый кадр, без анимации - WebP (
image/webp)
Жёсткие лимиты, которые стоит держать в голове:
- Максимальный размер файла: 5 МБ на изображение в base64. Всё, что больше, нужно уменьшать или резать.
- Максимальное разрешение: 8000 × 8000 пикселей. Более крупные картинки отклоняются сразу.
- Рекомендуемое разрешение: 1568 px по длинной стороне для обычного контента, 2000-2500 px для плотного текста. Выше ~1568 px распознавание обычных фото не улучшается, а счёт только раздувается.
- Максимум картинок в запросе: 100, но на практике уже 20 с лишним заполняют контекст для большинства задач.
- Видео, аудио и стриминга картинок нет. Подсовывать кадры в живой диалог нельзя. Нужно видео, сэмплируйте кадры сами и отправляйте отдельными изображениями.
Анимированные GIF, скриншоты с HiDPI-мониторов и экспорт страниц PDF работают. EXIF, цветовой профиль и метаданные DPI Claude не учитывает, ему важны только сырые пиксели.
Цена vision: картинки не бесплатны
Частая неожиданность: vision обычно составляет основную часть входной стоимости запроса. Claude разбивает изображение на пиксельные тайлы и тарифицирует их как input-токены. Грубо:
- Картинка 1092 × 1092 ≈ 1600 input-токенов.
- Стоимость растёт почти линейно от
width × height ÷ 750. - Полностраничный скриншот A4 высотой 2000 px укладывается примерно в 2400-2800 input-токенов.
При ценах Sonnet 4.6 на вход (см. цены на Claude API в 2026 году) один полностраничный скриншот обходится примерно как 2000 токенов прозы. Отправьте десять скриншотов в одном запросе, и счёт за вход составит 25-30k токенов ещё до того, как учтён промпт пользователя.
Следствий два:
- Кропайте агрессивно. Нужен только график в углу, шлите только график. Вдвое меньше пикселей, вдвое меньше цена.
- Кэшируйте system prompt. С включённым prompt caching текстовая часть длинных агентных промптов дешевеет, а главной статьёй расхода остаются image-токены. Это правильный размен: картинки всё равно меняются каждый ход.
Минимальный пример с одной картинкой
import anthropic, base64, pathlib
client = anthropic.Anthropic(
api_key="sk-...",
base_url="https://api.codexkey.ru/v1",
)
img = base64.standard_b64encode(
pathlib.Path("invoice.png").read_bytes()
).decode("utf-8")
resp = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
messages=[{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": img,
},
},
{
"type": "text",
"text": (
"Извлеки номер счёта, дату, поставщика, сумму и строки. "
"Верни строгий JSON с ключами: invoice_number, date, "
"vendor, total, currency, items[]."
),
},
],
}],
)
print(resp.content[0].text)
Это весь vision API. Image-блок лежит в content наравне с любой другой частью сообщения, а картинки и текст в одном ходе можно смешивать как угодно.
Несколько изображений: сравнение и привязка
С несколькими изображениями Claude справляется особенно хорошо. Отправляете два скриншота и спрашиваете, что изменилось. Или график с таблицей и вопрос, согласуются ли они.
def img_block(path, media_type="image/png"):
data = base64.standard_b64encode(pathlib.Path(path).read_bytes()).decode()
return {
"type": "image",
"source": {"type": "base64", "media_type": media_type, "data": data},
}
resp = client.messages.create(
model="claude-sonnet-5",
max_tokens=2048,
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "Картинка 1 — вчерашний дашборд, Картинка 2 — сегодняшний."},
img_block("dash_yesterday.png"),
img_block("dash_today.png"),
{"type": "text", "text": "Перечисли все метрики, изменившиеся больше чем на 5%, в JSON."},
],
}],
)
Окружающий текст Claude надёжно читает как подписи к картинкам. Метаданные с позицией кодировать не нужно, достаточно словами описать порядок.
Сценарии, которые работают на практике
1. OCR и извлечение данных из документов. Счета, чеки, договоры, банковские выписки, удостоверения личности. Многоколоночные макеты, повёрнутые сканы и рукописные пометки Claude обрабатывает заметно лучше классических OCR-пайплайнов, а структурированный результат вы получаете одним вызовом вместо цепочки OCR → парсер → валидатор.
2. График в данные. Отправляете столбчатый или линейный график, просите значения в JSON. На подписанных графиках точность отличная, на неподписанных приемлемая (значения Claude оценивает по сетке). Если собираетесь действовать по результату, просите confidence для каждого значения.
3. Скриншот UI в селекторы. Показываете скриншот страницы и просите Playwright-селекторы для видимых элементов. Вместе с MCP browser tool это основа self-healing E2E-тестов.
4. QA по PDF. Растеризуйте каждую страницу в PNG высотой ~1500 px и отправляйте нужные страницы вместе с вопросом. Это лучше разбора PDF только по тексту: таблицы, печати, подписи и графики сохраняются.
5. Сравнение нескольких изображений. Скриншоты до и после деплоя, две версии дизайна, два скана одной формы. Просите структурированный диф.
6. Визуальная отладка. Кладёте скриншот стек-трейса и скриншот нужного участка кода. Claude читает оба и объясняет баг.
Приёмы в промптах для точности
- Требуйте JSON. «Верни строгий JSON. Без прозы. Если поле нечитаемо, ставь
null.» При явной схеме Claude почти не выдумывает поля. - Просите confidence. Рядом с каждым извлечённым значением пусть стоит
confidence: low|medium|high. Строки с низким confidence уходят на ручную проверку. - Якорите текстом. Перед каждой картинкой пишите описание в одну строку («Это страница 3 немецкой налоговой формы»). Модель настраивается на нужный контекст, а OCR на специфичных глифах работает лучше.
- Режьте широкие таблицы. Таблицу с 20+ колонками разрежьте на две половины и отправьте двумя картинками с перекрывающимися колонками: так ловятся ошибки выравнивания.
- Обрезайте лишнее. Хедеры, футеры, водяные знаки и реклама на скриншотах тоже съедают токены. Кроп на 30% даёт скидку 30%.
- Плотному тексту нужно разрешение. Для скана с текстом 8 pt дополнительные токены на 2500 px по длинной стороне оправданы. Для обычных фото хватает 1568 px.
Ограничения и отказы
- Видео нет. Кадры сэмплируйте сами.
- Стриминга картинок нет. Новые изображения посреди ответа не подгрузить. Всё отправляйте в первом запросе.
- CAPTCHA и водяные знаки. Claude откажется решать CAPTCHA и осторожен с личными документами (паспорта, ID), если не дать контекст. Объясните законную причину в system prompt.
- Лица и идентификация. Людей Claude описывает обобщённо, но по фото имени не назовёт.
- Контент для взрослых и graphic-контент. Отказ.
- Координаты. Где что расположено («справа сверху», «под заголовком»), Claude описать может, но bounding-box координаты приблизительные, не пиксельно-точные. Нужны точные боксы, берите специализированную detection-модель.
Claude и GPT-4o: сравнение по vision
У обоих сильные стороны, только лежат они в разных местах, если судить по тому, что отгружают команды:
- Claude выигрывает на текстоёмких и структурированных документах. Счета, таблицы, многостраничные договоры, дашборды, код на экране, сканированные формы. OCR точнее, JSON-вывод дисциплинированнее.
- GPT-4o выигрывает на природных фото и рассуждениях о физическом мире. Распознать объекты в захламлённой комнате, считать язык тела, истолковать неоднозначную сцену. На маленьких картинках у него ещё и задержка ниже.
- На графиках ничья. Оба хорошо достают значения из чистых графиков, оба одинаково спотыкаются на стилизованных инфографиках.
- Claude выигрывает на длинном контексте с множеством изображений. Отправить 20 скриншотов флоу приложения в одном запросе и получить связный анализ: тут окупаются больший контекст Claude и лучшая привязка между изображениями.
Для бэкофисной автоматизации, документных пайплайнов и агентных воркфлоу со скриншотами приложений Claude остаётся выбором по умолчанию. В потребительских фото-функциях GPT-4o конкурентоспособен.
Что взять с собой
Vision вместе с tool use превращает Claude из чатбота в документного агента: он смотрит на экран, решает, что делать, и вызывает инструмент. В 2026 году большинство продакшн-функций «AI для документов» построены на этом цикле: растеризовать, отправить Claude, получить JSON, проверить, действовать. Начните с одной картинки, заставьте модель отдавать JSON, измерьте точность на 100 реальных документах и только потом масштабируйте. Vision надёжен, но именно здесь тихо растёт счёт за токены. Кропайте раньше, кэшируйте промпты и не отправляйте 4K-скриншот, если хватит 1500 px.