Автоматичне транскрибування медичних диктовок: знижуємо 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-uk-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="uk", 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 тижнів 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 годин на тиждень, що еквівалентно ставці медсестри.

Що входить у сервіс під ключ

  • Адаптована модель 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)

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