Реалізація автоматичного транскрибування медичних диктовок

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1566 послуг
Реалізація автоматичного транскрибування медичних диктовок
Складний
від 1 тижня до 3 місяців
Часті запитання

Напрямки AI-розробки

Етапи розробки AI-рішення

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1284
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1196
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    901
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1119
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    586
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    853

Реалізація автоматичного транскрибування медичних диктувань Медична диктовка – лікар диктує огляд, анамнез, діагноз, призначення – система створює структурований текст у потрібному форматі медкарти. Економія часу лікаря: 30-60 хвилин на день. Специфіка: висока вартість помилки, медична термінологія, абревіатури, латинські назви. ### Вимоги до системи - WER <5% на медичних термінах - Структурування у формат SOAP/HL7 FHIR - HIPAA/152-ФЗ сумісність - дані в захищеному контурі - Інтеграція з МІС (1С:Медицина, Медіалог, ЕМІАС) ### Архітектура медичної дикт```python

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)

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