AI-генерация alt-текстов для товарных изображений

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
AI-генерация alt-текстов для товарных изображений
Простой
от 1 дня до 3 дней
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1358
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1250
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    956
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1188
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    929
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    947

AI-генерация alt-текстов для товарных изображений

Alt-текст у изображения выполняет две функции: помогает поисковику понять содержание страницы и делает сайт доступным для незрячих пользователей. В большинстве интернет-магазинов alt-теги либо пустые, либо содержат только название файла вроде IMG_4821.jpg. Это потерянный SEO-сигнал и нарушение доступности. Согласно WCAG 2.1, пустой alt-атрибут делает изображение декоративным, а информативные изображения обязаны иметь описание. Для каталога из 10 000 товаров ручное заполнение alt — около 200 часов работы копирайтера, что обходится бизнесу в значительную сумму.

При наличии тысяч товарных изображений задача решается автоматически — либо на основе данных о товаре, либо через мультимодальный анализ самого изображения. Мы реализовали подобные решения для 30+ интернет-магазинов за 5 лет, гарантируя прирост органического трафика на 10–25%. Экономия бюджета на ручном труде для такого каталога достигает существенных значений. Свяжитесь с нами для оценки вашего проекта.

Какие проблемы решает генерация alt?

  • Ручной труд. Писать alt для 10 000 SKU вручную — недели работы. Автоматизация сокращает это до часов, а стоимость обработки 1000 изображений через AI минимальна.
  • Однотипные alt. Многие генерируют alt шаблонно: «Изображение товара» — пользы для SEO ноль. Нужны осмысленные, уникальные описания, которые повышают релевантность страницы.
  • Нарушение WCAG. Пустой alt делает сайт недоступным для незрячих — это юридические риски и потеря аудитории. Правильный alt-текст для товаров — это не просто описание, а SEO-инструмент.
  • Динамические изображения. Часто alt отсутствует у картинок, подгружаемых через JavaScript (например, выбор цвета товара). Это ещё один потерянный SEO-сигнал.

Сравнение подходов

Характеристика По метаданным Мультимодальный (GPT-4o Vision)
Скорость генерации Мгновенно 1–2 секунды на изображение
Бюджет Бесплатно Низкий
Качество alt На основе данных Описывает видимое содержимое
Идеально для Стандартные фото на белом фоне Lifestyle, сложные сцены, несколько объектов

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

Как работает генерация alt?

Подход 1: по метаданным

function buildAltFromMetadata(
  product: Product,
  imageIndex: number,
  imageType: "main" | "detail" | "lifestyle"
): string {
  const base = `${product.brand} ${product.name}`;

  if (imageType === "main") {
    return `${base} — фото ${imageIndex + 1}`;
  }

  if (imageType === "detail") {
    const feature = product.attributes.detailFeatures?.[imageIndex] ?? "деталь";
    return `${base}: ${feature}`;
  }

  return `${base} в использовании`;
}

Простой, детерминированный вариант. Не требует API-вызовов, работает мгновенно при импорте товаров.

Подход 2: мультимодальный (GPT-4o Vision)

import { openai } from "../lib/openai";

async function generateAltFromImage(
  imageUrl: string,
  product: Product
): Promise<string> {
  const response = await openai.chat.completions.create({
    model: "gpt-4o-mini",
    messages: [
      {
        role: "user",
        content: [
          {
            type: "image_url",
            image_url: { url: imageUrl, detail: "low" }, // low — дешевле, достаточно для alt
          },
          {
            type: "text",
            text: `Write a concise alt text for this product image in Russian.
Product: ${product.name}, brand: ${product.brand}, category: ${product.category}.
Rules:
- 60–120 characters
- Describe what is visible in the image, not the product in general
- Start with product name only if it's clearly identifiable in the photo
- No "фото", "изображение", "картинка" at the start
- No markdown, just plain text`,
          },
        ],
      },
    ],
    max_tokens: 80,
    temperature: 0.3,
  });

  return response.choices[0].message.content?.trim() ?? "";
}

detail: "low" снижает стоимость с ~значительной до ~мизерной за изображение — достаточно для генерации alt, не нужно высокое разрешение.

Пакетная обработка изображений

import { Queue, Worker } from "bullmq";

const altQueue = new Queue("alt-generation");

export async function queueImagesForAltGeneration(
  productIds: string[]
) {
  const products = await db.products.findMany({
    where: { id: { in: productIds } },
    include: { images: true },
  });

  const jobs = products.flatMap((product) =>
    product.images
      .filter((img) => !img.altText || img.altText === "")
      .map((img) => ({
        name: "generate-alt",
        data: { imageId: img.id, productId: product.id, imageUrl: img.url },
      }))
  );

  await altQueue.addBulk(jobs);
}

const altWorker = new Worker(
  "alt-generation",
  async (job) => {
    const { imageId, productId, imageUrl } = job.data;
    const product = await db.products.findById(productId);

    // Определяем, нужен ли мультимодальный анализ
    const useVision = product.imageType === "lifestyle" || product.useVisionForAlt;

    let altText: string;

    if (useVision) {
      altText = await generateAltFromImage(imageUrl, product);
    } else {
      const imageIndex = product.images.findIndex((i: any) => i.id === imageId);
      altText = buildAltFromMetadata(product, imageIndex, "main");
    }

    await db.productImages.update({
      where: { id: imageId },
      data: { altText, altGeneratedAt: new Date() },
    });
  },
  { connection: redisConnection, concurrency: 20 }
);

Как автоматизировать генерацию alt для всего каталога?

  1. Аудит текущего состояния — выполните SQL-запрос (см. ниже) и определите количество изображений без alt.
  2. Выберите стратегию: метаданные для простых фото, мультимодальный анализ для сложных.
  3. Разверните микросервис с очередями BullMQ и интеграцией с вашей CMS.
  4. Настройте мониторинг — отслеживайте количество обработанных изображений и ошибки через Sentry.

Типичные ошибки alt-текстов

Ошибка Пример Как исправить
Пустой alt alt="" Генерировать осмысленный текст
Alt как имя файла alt="IMG_4821.jpg" Использовать данные товара или нейросеть
Слишком длинный >125 символов Ограничить 60-120 символами
Шаблонный alt="фото товара" Добавить уникальные детали (бренд, цвет)
Не отражает содержимое alt="красное платье" на фото синего Мультимодальный анализ

Встройка в CMS

После генерации alt-текст сохраняется в таблице изображений и рендерится в шаблоне. Если alt пустой — фолбэк на название товара, но не пустая строка.

<img
  src="{{ image.url }}"
  alt="{{ image.altText }}"
  loading="lazy"
  width="{{ image.width }}"
  height="{{ image.height }}"
/>

Аудит существующего каталога

Перед запуском генерации полезно понять масштаб проблемы. Выполните SQL:

SELECT
  COUNT(*) FILTER (WHERE alt_text IS NULL OR alt_text = '') AS missing_alt,
  COUNT(*) FILTER (WHERE alt_text = file_name) AS filename_as_alt,
  COUNT(*) total
FROM product_images;

Это покажет, сколько изображений нуждаются в обработке и позволит спланировать нагрузку на API.

Состав работ

  • Аудит текущего каталога изображений (SQL-скрипт, дашборд)
  • Выбор оптимальной стратегии: метаданные, мультимодал или комбинация
  • Разработка микросервиса генерации alt (Node.js, BullMQ)
  • Интеграция с вашей CMS (кастомная доработка или middleware)
  • Настройка очередей и мониторинга (Redis, Sentry)
  • Документация процесса и обучение команды
  • Поддержка в течение месяца после внедрения

Сроки реализации — под ключ от 3 до 10 дней в зависимости от количества изображений и сложности интеграции. Стоимость рассчитывается индивидуально под ваш проект. Получите консультацию — свяжитесь с нами.

Заключение

Автоматическая генерация alt — это не про экономию, а про SEO-потенциал и доступность. Мы реализовали такие решения для 30+ интернет-магазинов за 5 лет. Свяжитесь с нами для оценки вашего проекта — подберём подход и рассчитаем нагрузку.

Интеграция AI: чат-боты, RAG, семантический поиск, рекомендации

В 8 из 10 проектов «AI-чат-бот» оказывается дорогой обёрткой над GPT-4o с системным промптом. Без доступа к реальным данным компании. Пользователь спрашивает «сколько стоит тариф Премиум» — бот галлюцинирует цену из воздуха. Спрашивает «когда придёт заказ» — получает вежливое «напишите в поддержку». Это не интеграция — это имитация. Мы за 5 лет внедрили RAG-решения в 30+ проектах: от интернет-магазинов до медицинских порталов. Гарантируем: полезная AI-помощь начинается там, где модель читает ваши документы, а не общие ответы.

Как мы строим RAG-системы?

Retrieval-Augmented Generation — стандартная архитектура: запрос → поиск релевантных фрагментов в векторной БД → вставка найденного в контекст → ответ модели. Но дьявол в деталях реализации. Разберём ключевые узлы, которые определяют качество.

Chunking. Резать документ на куски по 500 токенов без оглядки на структуру — гарантия потери смысла. Если разрез пришёлся на середину абзаца, контекст разрывается. Решение — рекурсивный RecursiveCharacterTextSplitter с overlap 10–15% для документации. Для контрактов и инструкций используем семантический сплиттер: выделяем заголовки, списки, блоки кода — каждый раздел становится независимым чанком. Разница в качестве поиска: на одном медицинском проекте precision вырос с 0.55 до 0.84 только за счёт правильной нарезки.

Модель эмбеддингов. Для русскоязычных текстов intfloat/multilingual-e5-large даёт заметный прирост точности против устаревшей text-embedding-ada-002. По нашим замерам, NDCG@10 на тестовой выборке из 10 000 пар «запрос-документ» на 12% выше. OpenAI text-embedding-3-large — хороший вариант для англоязычного контента, но для русского рекомендуем BAAI/bge-m3 или упомянутую e5-large.

Векторная БД. Если у вас уже стоит PostgreSQL — pgvector экономит ресурсы. Ставим расширение CREATE EXTENSION vector, добавляем колонку vector(1024), создаём HNSW-индекс. На проекте с 80 000 статей поддержки p95 поиска — 12 мс. Этого хватает. Для каталогов с миллионами единиц — Qdrant или Weaviate: нативный гибридный поиск и шардирование «из коробки».

Что даёт гибридный поиск?

Только векторный поиск слеп к точным совпадениям: артикулы «ABC-123», имена собственные, аббревиатуры теряются. Только полнотекстовый поиск не улавливает синонимы и перефразирования. Комбинация через RRF (Reciprocal Rank Fusion) даёт лучшее из двух миров: BM25 + векторный поиск, результаты смешиваются. На практике recall@20 растёт с 0.65 до 0.92 — разница заметна пользователю.

Reranking — финальный фильтр: top-20 кандидатов из гибридного поиска прогоняем через cross-encoder cross-encoder/ms-marco-MiniLM-L-6-v2. Он добавляет 50–100 мс к ответу, но relevance поднимает ещё на 5–10%. Без reranking чат-бот может показывать нерелевантные документы.

Семантический поиск на сайте

Поиск «удобные кожаные кресла» должен находить товары с описанием «мягкие стулья из натуральной кожи» — обычный LIKE-поиск не способен. Наша архитектура: при добавлении товара/поста автоматически генерируем эмбеддинг через multilingual-e5-large, сохраняем в pgvector. На запросе — эмбеддим его той же моделью, ищем ближайших соседей через cosine distance с HNSW-индексом. Для каталога из 100 000 позиций индекс строится 3 минуты, в памяти ~400 Мбайт (1536-мерные векторы). Cреднее время поиска — 20 мс.

Рекомендательные системы

Коллаборативная фильтрация («пользователи, похожие на вас, покупали X») требует истории — минимум 2–3 месяца данных с 1000+ активных пользователей. Для стартапов или малых проектов используем content-based: эмбеддинг текущего товара → поиск ближайших соседей по косинусной близости. Когда накапливается статистика (обычно 15–20 взаимодействий на пользователя), переключаемся на гибридную модель LightFM. Она объединяет и поведение, и признаки товаров. У нас в e-commerce проекте с 50 000 SKU гибридная модель повысила конверсию в рекомендательный блок на 18% (A/B-тест длился 2 недели).

Стриминг ответов

Пользователь не обязан ждать, пока модель сгенерирует весь текст — это убивает UX. Server-Sent Events (SSE) — протокол для стриминга токенов. OpenAI SDK поддерживает stream: true, возвращая AsyncIterator. На фронтенде — Vercel AI SDK (useChat) или самописный EventSource. Типичная ошибка: использовать WebSocket для однонаправленного стрима — SSE проще (меньше кода, встроенный реконнект). Стек: Node.js + SSE + React.

Оркестрация агентов

Простой чат-бот отвечает. Агент — выполняет действия: создаёт тикет в Jira, проверяет статус заказа в CRM, бронирует слот в календаре. Для оркестрации используем LangGraph: граф состояний, где каждый узел — вызов модели или инструмента. Vercel AI SDK useChat + tools для Next.js позволяет добавить интеграцию в 10 строк кода. Главная сложность — надёжность: модель иногда вызывает не тот инструмент или передаёт кривые параметры. Защита — Zod-схемы на каждый инструмент и structured outputs для гарантии JSON.

Что входит в работу

Этап Результат Срок
Аудит данных и бизнес-логики Карта источников, формат документов, оценка качества 1–2 дня
Прототип RAG или рекомендательной системы Демонстрация с метриками (recall, precision, latency) 1–2 недели
Интеграция в существующее веб-приложение API-эндпоинты, интерфейс для чат-бота/поиска 1–2 недели
A/B-тестирование и оптимизация Отчёт по метрикам (CTR, конверсия, hallucination rate) 1 неделя
Документация и обучение команды Руководство по эксплуатации, код-ревью 2–3 дня

Дополнительно: мы передаём исходный код векторизатора, дашборды мониторинга (Langfuse), доступ к админке для обновления базы знаний. Постпродакшн-поддержка — 1 месяц бесплатно.

Сроки

Задача Ориентировочный срок
RAG-чат-бот на базе существующей базы знаний 3–6 недель
Семантический поиск по каталогу 2–4 недели
Рекомендательная система с A/B-тестированием 6–10 недель
Мультиагентная система с интеграциями от 8 недель

Стоимость рассчитывается индивидуально после знакомства с проектом. Оценим ваш проект за 1 день. Свяжитесь с нами — расскажем, как превратить AI из игрушки в инструмент, который приносит прибыль.