Русский текст на картинке без ошибок: как мы генерим рекламные креативы нейросетью
1 сентября 2026 г. 7 мин Читать

Русский текст на картинке без ошибок: как мы генерим рекламные креативы нейросетью

Главный страх при генерации рекламы нейросетью — не «будет некрасиво», а «будет кракозябра». Русская надпись на баннере съехала в китайско-азбучную кашу, и весь креатив в мусорку. Мы через это прошли и можем сказать честно: проблема почти никогда не в «плохой модели». Она в постановке задачи — мелкий плотный текст, «бумажные» объекты в кадре, QR-коды. Модель честно пытается нарисовать то, что вы попросили, и честно ломается там, где её просить не надо.

Смотрите на любой баннер в ленте: первое, что считывает человек, — крупная надпись. Цена ошибки в ней — не «пониже рейтинг», а высмеянный бренд. Одна опечатка превращает готовый макет в брак, и хорошо, если вы заметили это сами, а не подписчик в комментариях.

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

Table Of Contents

Что модели вообще умеют с кириллицей

Коротко по итогам наших тестов: до четырёх коротких строк модель читается, дальше начинается псевдотекст. Заголовок из двух-трёх слов — отлично. Подзаголовок — терпимо. Абзац мелким шрифтом, оглавление, таблица с подписями — модель нарисует «что-то похожее на буквы», и при ближайшем рассмотрении это окажется заклинанием на неизвестном наречии.

Мы проверяли это на Qwen-Image-2.1 (API neuraldeep) — модель рендерит русский текст без автоперевода промпта, то есть вы отдаёте запрос по-русски и получаете кириллицу в кадре, без «перевода желания» на английский и обратно. Стоимость операции — 4 ₽ (октябрь 2026), так что ошибки стоят дёшево, а вот время на пересъёмку — не очень.

Отдельный тест был «копирайт-блок»: мы просили нарисовать плашку примерно с 35 словами мелким текстом. Результат стабильный: первые четыре строки дословно, хвост — с ошибками. Модель тянет короткий объём и «устает» к середине блока, начиная дописывать отсебятину. Вывод простой: мелкий плотный текст генератору отдавать нельзя, это не его территория.

Альтернатива, с которой мы тоже работаем, — Seedream. Наш боевой батч из 20 креативов в вертикальном формате 3:4 (1792×2400) прошёл приёмку без единой ошибки в тексте. Так что разговор не про «одна модель плохая, другая хорошая», а про то, что даже хорошие модели держат ограниченный объём надписей.

Правила, которые мы вывели

Эти четыре правила появились из отбракованных кадров и стоят того, чтобы быть в каждом промпте.

Одна надпись на кадр, крупно. Не заголовок плюс подзаголовок плюс выноска плюс плашка «акция до», а одна фраза, которая заполняет разумную часть кадра. Всё остальное — потом в редакторе, если вообще нужно.

Чистая сцена без «бумаги». Анкеты, ценники, визитки, стопки документов, газетки, чеки — всё это провоцирует модель дорисовать вокруг заголовка фейковый текст. Она видит в кадре объект, на котором по жизни бывают буквы, и любезно заполняет их псевдокириллицей. Мы убираем «бумажные» предметы из запроса полностью, и количество брака падает заметно.

Явный запрет другого текста. В промпте отдельной строкой: «другого текста в кадре нет». Без этого формулирования модель считает своим долгом заполнить пустые места — вывесками на заднем плане, надписями на коробках, «мелочью» на условном планшете.

Info

Формулировку запрета лучше ставить в конец запроса, после описания сцены: модель сначала рисует то, что просили, а потом применяет ограничение к пустым местам. В начале промпта запрет иногда «съедает» и нужный текст.

QR-коды и мелкие блоки — только наложением. Мы несколько раз пытались генерировать QR-код внутри картинки: надёжно не получается ни у одной модели из тех, с которыми работаем. QR — это не «картинка похожая на код», это данные, и генератор их не держит. Правильный путь: генерим фон и крупную надпись, а QR, контакты, условия акции и прочую мелочь кладём слоями в редакторе.

Процесс: от брифа до пакета

Наш конвейер на рекламные пакеты выглядит как очередь с приёмкой.

Шаг первый — бриф. Фиксируем одну фразу для кадра, формат, стиль, список того, чего в кадре быть не должно (см. правила выше). Текстом для брифа нередко служит то, что уже накоплено в работе с клиентами: отзывы, типовые возражения, формулировки из диалогов — про работу с контентом из переписок мы писали отдельно в статье про аудит диалогов с ИИ.

Шаг второй — генерация. Кадры уходят в очередь, из неё забираются и складываются в папку прогона.

Шаг третий — vision-проверка каждой картинки. Автоматически просим vision-модель переписать текст с готовой картинки буквенно-буквенно и сверяем с эталоном из брифа. Совпало посимвольно — кадр проходит. Не совпало — в карантин.

Шаг четвёртый — зум-кроп для спорных мест. Вот здесь важная грабля: сама vision-проверка тоже иногда ошибается, особенно на декоративных шрифтах — «читает» ровную надпись как брак. Поэтому по любому расхождению мы не выбрасываем кадр сразу, а вырезаем область надписи с увеличением и проверяем ещё раз. Решающий голос — за зум-кропом, он режет по факту пикселей, а не по догадке.

Шаг пятый — отбраковка и пакет. Прошедшие кадры собираются в комплект, непрошедшие уходят на перезапрос с уточнённым промптом или в корзину.

Warning

Не доверяйте приёмку «на глаз по миниатюре». Кракозябры в мелком шрифте на превью выглядят как нормальный текст. Проверка — либо автоматическое распознавание, либо увеличение до читаемого размера, третьего не дано.

Пропускная способность и масштабирование

По нашим замерам на общем пуле генерации — примерно кадр в 1,5–2 минуты, в очереди одновременно не больше 6 задач. Темп не «миг», но для пакетной работы более чем рабочий: батч из 20 креативов за один прогон мы собираем спокойно, пока занимаетесь другими делами.

Наблюдаемые форматы и размеры на выходе: 1:1 — 1312×1312, 16:9 — 2752×1536, 3:4 — 1792×2400. Под сторис и ленты мессенджеров чаще всего нужен именно вертикальный 3:4 — в таком размере текст остаётся читаемым даже на маленьком экране.

Масштабируется это двумя путями. Первый — облачное API: заплатил за операцию, получил кадр, железо чужое. Второй — локальная генерация на своих GPU: очередь своя, скорость своя, и картинки с внутренними макетами никуда не уходят. У нас работает и то и другое: рутинные пакеты — в облако, чувствительное и большое — на своё железо. Как устроен наш пул агентов и моделей на GPU, подробно разбирали в статье про восемь агентов на одной машине.

Что генератор делает хорошо, а где нужен человек

Элемент креативаГенератор справляется самНужен человек или редактор
Крупная надпись (до четырёх коротких строк)Да, читается без ошибокПроверка по зум-кропу на всякий случай
Копирайт-блок с мелким текстомНет: начало точное, хвост с ошибкамиТолько набор в редакторе
Абзацы, оглавления, таблицы с подписямиНет: псевдотекстТолько редактор
Фон, сцена, композиция, светДа, это сильная сторонаОтбраковка по стилю пакета
«Бумажные» объекты в кадре (анкеты, ценники)Нет: притягивают фейковый текстУбирать из промпта, подставлять макетом
QR-кодНет: не получается надёжноИсключительно наложение в редакторе
Логотип и фирменные элементыНет: буквы «поплывут»Файл от дизайнера, наложение

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

Итог: рецепт в пять шагов

Собираем всё в чек-лист, который мы держим под рукой на каждом прогоне.

Первое — одна надпись на кадр, крупно. Никаких вторых и третьих текстовых планов внутри генерации: заголовок есть, всё остальное доживёт в редакторе.

Второе — чистая сцена. Убираем из запроса анкеты, ценники, бумажки и прочую «поверхность для букв», потому что они притягивают фейковый текст вокруг заголовка.

Третье — явный запрет. Строка «другого текста в кадре нет» в конце промпта, после описания сцены.

Четвёртое — автоматическая приёмка. Переписали текст с картинки, сверили с эталоном из брифа; по каждому расхождению — зум-кроп, и именно он решает судьбу кадра.

Пятое — мелкое не генерим. QR-коды, контакты, условия акции, логотипы и фирменные элементы накладываются слоями поверх готового кадра.

Что это даёт на практике? Батч из 20 креативов за один прогон, которые проходят приёмку без ошибок в тексте, — при стоимости генерации 4 ₽ за операцию и темпе, который не требует сидеть у экрана. Реклама с русским текстом перестаёт быть лотереей, как только текст перестаёт быть зоной ответственности генератора в мелком кегле: крупная надпись — машине, данные и фирменное — человеку, а стык между ними закрывает автоматическая проверка.

Собираете такой же конвейер с нуля или чините существующий — приходите, у нас это часть внедрения ИИ в бизнес.