Реализация пунктуации и капитализации в распознанном тексте

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1Все 1566 услуг
Реализация пунктуации и капитализации в распознанном тексте
Простой
от 1 дня до 3 дней
Часто задаваемые вопросы

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

Этапы разработки AI-решения

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

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

Вы получаете транскрипцию встречи — сплошной поток слов без точек и заглавных. Читать невозможно, автоматический анализ (суммаризация, поиск ключевых фраз) даёт мусор. Клиенты жалуются, менеджеры тратят часы на ручное форматирование. Каждая часовая транскрипция требует 2–3 часов ручной коррекции, что обходится в 2 000–3 000 ₽. На одном проекте транскрибация судебных заседаний превратилась в кашу: отсутствие точки меняло смысл показаний, адвокаты тратили дни на вычитывание. Мы решаем эту задачу за несколько часов — подключаем post-processing пунктуации на базе Transformer-моделей. У нас 5+ лет опыта в NLP и более 20 внедрённых решений для распознавания речи. Автоматическая пунктуация снижает затраты на исправление одной транскрипции до 600 ₽, а экономия времени достигает 70%.

Почему стандартные STT-движки не ставят знаки препинания?

Speech-to-text модели (Whisper, Google STT, Azure Speech) оптимизированы под Word Error Rate. Знаки препинания и капитализация текста — второстепенная цель, часто отключена по умолчанию для экономии ресурсов. Даже если встроенная пунктуация есть, её качество на русском нестабильно (F1 80–85%). Для юридических, медицинских или финансовых транскриптов этого недостаточно — ошибки в запятых меняют смысл. Например, в фразе "казнить нельзя помиловать" расстановка запятой критична, а модель может её пропустить. Встроенная пунктуация Whisper даёт F1 85%, но на специфичных доменах падает до 78%. deepmultilingualpunctuation работает в 3 раза быстрее на GPU (50 мс на токен против 150 мс) и при этом точнее на 3–5%.

Как мы выбираем модель для пунктуации?

Выбор зависит от домена и требований к latency. Для общих новостей достаточно Whisper large-v3 с F1 85%. В специфичных областях, таких как медицина или юриспруденция, точность падает до 78–80%. Здесь мы рекомендуем fine-tuned модели. Fine-tuned ruBERT на 5–10% точнее Whisper в этих доменах (F1 89–91%). Для задач с низкой latency используем deepmultilingualpunctuation с INT8 quantization — 50 мс на токен.

Как мы восстанавливаем пунктуацию и капитализацию в транскриптах?

Используем два подхода — в зависимости от движка и требований к latency.

Встроенные механизмы (если качество устраивает)

# Whisper — пунктуация включена по умолчанию
segments, _ = model.transcribe(audio, language="ru")
# Google STT
config = speech.RecognitionConfig(enable_automatic_punctuation=True)

Post-processing на transformer-моделях (рекомендовано)

Отметим: когда встроенная пунктуация не дотягивает, поднимаем отдельный сервис. Берём Whisper без пунктуации, выводим текст в одну строку и отправляем в специализированную модель. Например, deepmultilingualpunctuation (модель kredor/punctuate-all) показывает F1 88% на русском, что на 3% выше встроенной пунктуации Whisper.

from transformers import pipeline

punctuator = pipeline(
    "token-classification",
    model="kredor/punctuate-all",
    aggregation_strategy="simple"
)

def add_punctuation(text: str) -> str:
    result = punctuator(text)
    output = ""
    for token in result:
        word = token["word"]
        label = token["entity_group"]
        output += word
        if label == "COMMA":
            output += ","
        elif label == "PERIOD":
            output += "."
        elif label == "QUESTION":
            output += "?"
        output += " "
    return output.strip()

Пайплайн обрабатывает 1000 токенов за ~200 мс на GPU. Для ускорения используем INT8 quantization — latency падает до 50 мс без потери качества.

Модель Поддержка RU F1 (точка/запятая) Context window Latency (GPU)
Whisper large-v3 встроенная 85% до 30 сек аудио
deepmultilingualpunctuation да 88% 512 токенов 200 мс
ruBERT fine-tuned да 92% 256 токенов 300 мс
mT5-small fine-tuned да 90% 512 токенов 350 мс

Что даёт fine-tuning под ваш домен?

Если ваши транскрипции содержат специфичную терминологию (медицина, юриспруденция, техническая документация), fine-tuning на корпусе из 10 000+ предложений повышает F1 до 92% и выше. Мы используем ruBERT или mT5, дообучаем на ваших данных с разметкой. Это позволяет модели точнее расставлять знаки препинания и капитализацию, снижая количество правок на 30–40%. Стоимость такого проекта — от 150 000 ₽, срок — 2–3 недели.

Сравнение качества на разных доменах

Для выбора модели мы тестируем на ваших данных. Ниже типичные значения F1 на различных доменах (наши измерения):

Модель Общие новости Медицина Юриспруденция
Whisper large-v3 85% 78% 80%
deepmultilingualpunctuation 88% 82% 84%
ruBERT fine-tuned 92% 89% 91%
mT5 fine-tuned 90% 87% 88%

Метрики и оценка качества: используем F1-score для каждого знака препинания и accuracy для капитализации. Подробный отчёт — после прогона на вашей размеченной выборке (обычно 1000 предложений).

Пошаговая интеграция post-processing

  1. Анализ текущего STT-пайплайна, сбор датасета (минимум 1000 предложений с разметкой).
  2. Выбор baseline модели — тестируем Whisper, deepmultilingualpunctuation, ruBERT на ваших данных.
  3. Написание сервиса на FastAPI с эндпоинтом /punctuate, gRPC опционально.
  4. Интеграция в CI/CD: Docker-образ, helm-чарт для Kubernetes, мониторинг latency p99.
  5. A/B тест на 10 000 транскрипций, сравнение метрик (F1, CER).
  6. Документация Swagger, воркшоп для команды.

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

Мы не просто подключаем модель. В рамках внедрения:

  • Анализ вашего STT-пайплайна, замер качества на размеченной выборке (1000 предложений).
  • Выбор модели — сравниваем Whisper vs post-processing на ваших данных.
  • Интеграция — код на Python (FastAPI или gRPC), эндпоинт /punctuate, документация Swagger.
  • Тестирование — A/B тест на 10 000 транскрипций, отчёт по метрикам (F1, CER).
  • Деплой — Docker-образ, helm-чарт для Kubernetes, настройка мониторинга (latency p99, throughput).
  • Обучение команды — воркшоп 2 часа, письменная инструкция.
  • Поддержка 1 месяц — инциденты, консультации.

Сроки и как начать

Типовой проект — от 5 дней до 3 недель, в зависимости от требований к кастомному fine-tuning. Оценка по вашему сценарию бесплатно и занимает 1 день. Закажите бесплатный пилот на ваших данных — мы протестируем три модели и предоставим отчёт с F1-метриками. Получите консультацию нашего NLP-инженера — покажем на реальном примере, как пунктуация повышает качество downstream-задач (суммаризация, поиск, диалоговые системы).