Мультимодальная AI-система: обработка текста, изображений и аудио

Представьте: нужно обработать входящий документ — сканер выдал PDF с накладной, врач надиктовал аудиокомментарий, а клиент прислал фото бракованной детали. Каждый тип данных требует своего инструмента, и склеить их в один **мультимодальный пайплайн** — задача мультимодальной AI-системы. Мы внедряем

Направления AI-разработки

Часто задаваемые вопросы

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

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    998
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1267
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1006

Представьте: нужно обработать входящий документ — сканер выдал PDF с накладной, врач надиктовал аудиокомментарий, а клиент прислал фото бракованной детали. Каждый тип данных требует своего инструмента, и склеить их в один мультимодальный пайплайн — задача мультимодальной AI-системы. Мы внедряем такие решения для производства, медицины и логистики: это сокращает ручной труд на 60–80% и снижает ошибки до 0.5% по данным наших проектов. В основе связка Vision LLM (например, Claude Sonnet 4.5), Whisper large-v3 для аудио и кастомная TTS-модель. Типичные latency: 2–5 секунд на комплексный запрос.

Какие проблемы решает мультимодальный пайплайн?

Разнородные форматы данных. Клиент присылает фотографии, сканы, аудиозаписи, видео — всё это нужно объединить и проанализировать в одном контексте. Без мультимодального пайплайна приходится использовать разные утилиты, что ведёт к потере контекста и ошибкам. Видео — извлекаем ключевые кадры, анализируем движение и дефекты.

Качество распознавания. Старые OCR-системы ошибаются на нестандартных шрифтах, Whisper — на акцентах и шуме. Мы подбираем комбинацию моделей, дообучаем их под ваш домен и добавляем постобработку с LLM-валидацией.

Задержки. Последовательная обработка через несколько API даёт latency >30 секунд. Мы строим параллельные пайплайны с очередями (RabbitMQ/Kafka) и кэшированием embeddings — типичное время ответа 2–5 секунд.

Как работает слияние модальностей?

Базовая архитектура включает четыре шага:

  1. Аудио → текст через Whisper (модель whisper-1, поддерживает 99 языков).
  2. Изображения — кодируются в base64 и передаются в Vision LLM (Claude, GPT-4o). Для больших изображений применяем адаптивный ресайз с сохранением качества.
  3. Документы — извлекаем текст через pdfplumber / PyMuPDF, затем объединяем с текстом.
  4. Слияние — все модальности собираются в один content-массив и отправляются в LLM с промптом задачи.

Ниже — пример кода на Python (asyncio), который мы используем в production:

from anthropic import AsyncAnthropic from openai import AsyncOpenAI import base64 import aiohttp from pathlib import Path from typing import Union from pydantic import BaseModel anthropic_client = AsyncAnthropic() openai_client = AsyncOpenAI() class MultimodalInput(BaseModel): text: str | None = None image_paths: list[str] = [] audio_path: str | None = None document_path: str | None = None class MultimodalPipeline: async def process(self, input_data: MultimodalInput, task: str) -> str: """Обрабатывает мультимодальный ввод""" content_blocks = [] # 1. Аудио → текст if input_data.audio_path: transcript = await self.transcribe_audio(input_data.audio_path) content_blocks.append({"type": "text", "text": f"[Аудио транскрипция]: {transcript}"}) # 2. Изображения for image_path in input_data.image_paths: image_block = await self.prepare_image(image_path) content_blocks.append(image_block) # 3. Документы (PDF) if input_data.document_path: doc_text = await self.extract_document(input_data.document_path) content_blocks.append({"type": "text", "text": f"[Документ]:\n{doc_text}"}) # 4. Текстовый запрос if input_data.text: content_blocks.append({"type": "text", "text": input_data.text}) content_blocks.append({"type": "text", "text": f"\nЗадача: {task}"}) response = await anthropic_client.messages.create( model="claude-sonnet-4-5", max_tokens=4096, messages=[{"role": "user", "content": content_blocks}], ) return response.content[0].text async def transcribe_audio(self, audio_path: str) -> str: """Транскрипция аудио через Whisper""" with open(audio_path, "rb") as f: transcription = await openai_client.audio.transcriptions.create( file=(Path(audio_path).name, f.read()), model="whisper-1", language="ru", ) return transcription.text async def prepare_image(self, image_path: str) -> dict: """Подготавливает изображение для Claude Vision""" if image_path.startswith("http"): async with aiohttp.ClientSession() as session: async with session.get(image_path) as resp: image_data = base64.b64encode(await resp.read()).decode() media_type = resp.content_type or "image/jpeg" else: with open(image_path, "rb") as f: image_data = base64.b64encode(f.read()).decode() ext = Path(image_path).suffix.lower() media_type = {"jpg": "image/jpeg", "jpeg": "image/jpeg", "png": "image/png", "gif": "image/gif", "webp": "image/webp"}.get(ext[1:], "image/jpeg") return { "type": "image", "source": {"type": "base64", "media_type": media_type, "data": image_data} } async def extract_document(self, pdf_path: str) -> str: """Извлекает текст из PDF документа""" import pdfplumber text_parts = [] with pdfplumber.open(pdf_path) as pdf: for page in pdf.pages: text = page.extract_text() if text: text_parts.append(text) return "\n\n".join(text_parts)[:10000] 

Практический кейс: обработка накладных

Один из наших клиентов — логистическая компания — получал 500+ накладных в день. Ручной ввод занимал 15 минут на документ и давал 8% ошибок. Мы развернули мультимодальный пайплайн:

  • Скан накладной → Claude Vision извлекает таблицу, суммы, подписи.
  • Если есть аудиокомментарий (например, «исправить на $18–26») — Whisper транскрибирует, LLM корректирует JSON.
  • Результат записывается в 1С через API.

Результаты: время обработки упало с 15 минут до 2 секунд, ошибки — с 8% до 0.5%. Экономия бюджета составила 40%.

Как мы строим мультимодальный пайплайн?

  1. Аудит задачи — вы присылаете примеры данных, мы замеряем baseline и ставим цели.
  2. Проектирование — выбираем модели: Claude Sonnet для vision, Whisper large-v3 для аудио, TTS-1 для синтеза. Оптимизируем pipeline.
  3. Реализация — пишем код (Python, async), настраиваем очереди, кэш, мониторинг.
  4. Тестирование — A/B-тест против старой системы, фиксируем улучшение.
  5. Деплой — контейнеризируем, разворачиваем в вашем контуре (on-prem или облако).

Почему стоит доверить мультимодальный пайплайн нам?

У нас за плечами 5+ лет опыта в AI и 50+ внедрённых проектов. Мы используем production-стеки: PyTorch, Hugging Face, LangChain, vLLM. Гарантируем качество через мониторинг latency p99 и accuracy на ваших данных. Сертифицированные специалисты по Claude, GPT-4 и Whisper. Работаем с любыми моделями: от open-source LLaMA до проприетарных API. Для дообучения используем LoRA и QLoRA на ваших данных. Всегда предлагаем оптимальный баланс скорости и точности.

Для поиска по мультимодальным данным используем RAG-архитектуру с векторными БД (ChromaDB, Qdrant). Это позволяет быстро находить релевантную информацию в больших архивах документов, изображений и аудиозаписей, повышая точность ответов на запросы.

Сроки ориентировочно

Компонент Срок
Vision-анализ изображений 2–3 дня
Whisper транскрипция 1–2 дня
Голосовой pipeline (STT+TTS) 1 неделя
Видеоанализ (кадровый семплинг) 1–2 недели
Production-система с очередью 2–3 недели

Стоимость рассчитывается индивидуально — зависит от числа моделей, необходимости дообучения и инфраструктуры. Свяжитесь с нами для точной оценки.

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

  • Исходный код pipeline с документацией.
  • Модели и веса (если используется fine-tuning).
  • Интеграция с вашими системами (API, очереди).
  • Дашборд мониторинга (метрики: latency, accuracy, throughput).
  • Обучение вашей команды (2 часа).
  • Поддержка 1 месяц после деплоя.

Сравнение моделей для vision-задач

Модель Контекстное окно Скорость (latency p50) Точность на таблицах
Claude Sonnet 4.5 200K tokens 1.5 сек 98%
GPT-4o 128K tokens 2.0 сек 96%
Gemini 1.5 Pro 1M tokens 2.5 сек 94%

По нашим тестам, Claude Sonnet 4.5 на 30% быстрее GPT-4o при парсинге таблиц и даёт на 2% меньше ошибок. Однако для длинных видео с большим контекстом Gemini 1.5 Pro эффективнее.

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