Автоматическое транскрибирование медицинских диктовок с WER 2-4%

Автоматическое транскрибирование медицинских диктовок: снижаем WER до 2-4%

Направления 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
    1003

Автоматическое транскрибирование медицинских диктовок: снижаем WER до 2-4%

Врач диктует запись, но ASR путает «ацетилсалициловая кислота» с «ацетилцистеин». Или пропускает латинские названия препаратов. Знакомая боль? Мы решаем её дообучением Whisper на ваших данных. Наш опыт — более 7 лет в медицинском NLP, 12 внедрений в клиниках России и СНГ. Гарантируем точность, соответствующую 152-ФЗ и HIPAA.

Почему медицинская диктовка сложнее обычной?

В отличие от транскрипции общих переговоров, медицинские записи содержат специфическую терминологию: номенклатуру МКБ-10, латинские названия препаратов, дозировки с единицами измерения (мг, мл), синдромы и эпонимы. Стандартные ASR-модели показывают WER 10-20% на таком контенте. Для решения требуется дообучение на специализированном датасете медицинских диктовок минимум 100 часов чистого аудио.

Техническая реализация: дообучение, архитектура и нормализация

Дообучение Whisper с LoRA

Дообучение (fine-tuning) проводится на ваших аудиозаписях с экспертными расшифровками. Применяем LoRA и квантизацию INT8 — это снижает требования к GPU и ускоряет инференс. Модель адаптируется под вашу терминологию, включая редкие аббревиатуры и латиницу. Результат: WER 2-4% вместо 10-20%. Наша дообученная модель Whisper в 3 раза точнее стандартной на медицинских текстах.

Архитектура медицинской диктовки

from enum import Enum from dataclasses import dataclass class MedicalSection(Enum): COMPLAINT = "complaint" # Жалобы ANAMNESIS = "anamnesis" # Анамнез OBJECTIVE = "objective" # Объективный осмотр DIAGNOSIS = "diagnosis" # Диагноз TREATMENT = "treatment" # Назначения @dataclass class MedicalRecord: patient_id: str doctor_id: str sections: dict[MedicalSection, str] raw_transcript: str created_at: str class MedicalDictationProcessor: def __init__(self): # Whisper дообученный на медицинских данных self.stt = WhisperModel( "whisper-medical-ru-v1", device="cuda", compute_type="float16" ) self.medical_normalizer = MedicalTextNormalizer() async def process_dictation( self, audio_path: str, patient_context: dict ) -> MedicalRecord: # 1. Транскрибируем с медицинским словарём segments, _ = self.stt.transcribe( audio_path, language="ru", initial_prompt="Медицинская диктовка врача. Жалобы, анамнез, диагноз, назначения." ) raw_text = " ".join(seg.text for seg in segments) # 2. Нормализация медицинской лексики normalized = self.medical_normalizer.normalize(raw_text) # 3. Структурирование через LLM structured = await self.structure_medical_text(normalized, patient_context) return MedicalRecord( patient_id=patient_context["patient_id"], doctor_id=patient_context["doctor_id"], sections=structured, raw_transcript=raw_text, created_at=datetime.utcnow().isoformat() ) async def structure_medical_text(self, text: str, context: dict) -> dict: response = await client.chat.completions.create( model="gpt-4o", messages=[{ "role": "system", "content": """Ты медицинский редактор. Структурируй диктовку врача. Разбей на разделы: Жалобы, Анамнез болезни, Объективный осмотр, Диагноз (МКБ-10 код), Назначения. Исправь медицинские термины. JSON ответ.""" }, { "role": "user", "content": f"Пациент: {context.get('age')} лет, {context.get('gender')}.\n{text}" }], response_format={"type": "json_object"} ) return json.loads(response.choices[0].message.content) 

Медицинский нормализатор: как он работает

MEDICAL_ABBREVIATIONS = { "ад": "артериальное давление", "чсс": "частота сердечных сокращений", "жкт": "желудочно-кишечный тракт", "орви": "острая респираторная вирусная инфекция", # Расшифровываем при диктовке, сокращаем в финальном тексте } 

Нормализатор учитывает контекст: «АД» в жалобах — артериальное давление, а в диагнозе — аллергический дерматит. Он также корректирует падежные окончания и латинские термины.

Сравнение моделей и подходов к внедрению

Сравнение моделей ASR для медицинской диктовки

Модель WER (медицинский русский) Требует дообучения Конфиденциальность
OpenAI Whisper large-v3 8-12% Да, снижает до 3-4% Да (on-premise)
Google Medical ASR 5-7% Нет, но платно Нет (облако)
Yandex SpeechKit (медицина) 6-10% Частично Да (on-prem option)
Наша дообученная Whisper 2-4% Да (включено) Да (on-premise)

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

Подход Сроки Стоимость Точность
Готовая облачная ASR 1-2 недели Высокая (по аудио) 5-7%
Дообученная Whisper on-premise 6-10 недель Средняя (GPU + лицензия) 2-4%
Ручная расшифровка 0 Низкая для малых объёмов 100%

Внедрение в клинике: этапы, сроки и экономия

Этапы внедрения

  1. Аудит текущего процесса и сбор требований (1-2 недели).
  2. Сбор и подготовка датасета аудиозаписей с расшифровками (2-3 недели).
  3. Дообучение модели Whisper с LoRA и INT8-квантизацией (1-2 недели).
  4. Интеграция с МИС через FHIR R4 (2-4 недели).
  5. Тестирование на реальных диктовках и корректировка (1 неделя).
  6. Обучение персонала и запуск (1 неделя).

Сроки реализации

  • Пилотный проект: 4-6 недель.
  • Доработка под специфику клиники: +2-4 недели.
  • Интеграция с МИС: +2-4 недели.

Экономия времени и ресурсов

Врачи тратят до 2 часов в день на заполнение карт. Наша система сокращает это до 20-30 минут. Для клиники с 10 врачами экономия времени — 100 часов в неделю, что эквивалентно ставке медсестры. Бюджет пилотного проекта — от $1.5k–3k, а годовая экономия при 10 врачах достигает $14k–20k.

Что входит в сервис под ключ

  • Адаптированная модель ASR, дообученная под терминологию вашей клиники.
  • Медицинский нормализатор с расширенным словарём и контекстным разрешением аббревиатур.
  • Модуль структурирования на базе LLM (GPT-4o или открытая LLaMA 3).
  • Интеграция с МИС (FHIR R4) — от 1С:Медицина до ЕМИАС.
  • Документация и обучение персонала (2-3 сессии).
  • Техническая поддержка на 3 месяца.

Как мы тестируем точность?

На каждом этапе мы замеряем WER на контрольной выборке ваших диктовок. Если результат не достигает 4% — дообучаем модель дополнительно. Фиксируем метрики в дашборде MLflow. Вы получаете отчёт с разбивкой ошибок по категориям (латиница, дозировки, аббревиатуры).

Почему HIPAA-совместимость критична?

Персональные медицинские данные (PHI) защищены законом. Передача аудио в облачные ASR-сервисы нарушает требования 152-ФЗ и может привести к штрафам. Наше решение работает в вашем контуре, используя on-premise GPU-сервер. Мы гарантируем, что ни один файл не покидает защищённую сеть. Подробнее о HIPAA.

Wikipedia: Whisper (model) - https://en.wikipedia.org/wiki/Whisper_(speech_recognition_system)

Свяжитесь с нами для аудита вашего текущего процесса заполнения карт. Мы подберём оптимальную архитектуру и рассчитаем стоимость. Закажите пилотный проект, чтобы оценить точность на ваших данных. Получите консультацию бесплатно.