# Medical Transcriber - GUI Application ## 📋 Архитектура приложения ``` Medical Transcriber │ ├── 🎨 GUI Layer (PyQt6) │ └── app/gui_app.py - Главное окно, вкладки, диалоги │ ├── 🔄 Pipeline Integration │ ├── pipeline/medical_pipeline.py - Оркестрация STT + KB + LLM │ ├── pipeline/pipeline_config.py - Конфигурация │ │ │ ├── stt/whisper_transcriber.py - Транскрибирование аудио │ ├── knowledge_base/ - База медицинских терминов │ ├── corrector/ - LLM коррекция │ └── corrector/report_generator.py - DOCX отчётность │ ├── 🧩 Common Utilities (готово к интеграции) │ ├── common/exceptions.py - Кастомные исключения │ ├── common/constants.py - Константы приложения │ ├── common/logger.py - Централизованное логирование │ ├── common/models.py - Модели данных │ └── common/validators.py - Валидация данных │ ├── 🚀 Entry Points │ ├── run_gui.py - Запуск GUI │ ├── app/main.py - CLI для полного пайплайна (transmed) │ ├── build_exe.py - Сборка Windows .exe │ └── build_windows.spec - PyInstaller конфигурация │ └── 📚 Documentation ├── USER_GUIDE.md - Руководство пользователя ├── BUILD_EXE.md - Инструкции по сборке └── README.md - Общая информация ``` ## 🎯 Основные компоненты GUI ### 1. **Главное окно (MedicalTranscriptionApp)** - Приложение на PyQt6 - Две основные вкладки - Кроссплатформенное (Windows, Linux, macOS) ### 2. **Вкладка "Транскрибирование"** - Выбор аудиофайла - Ввод данных пациента (диалог) - Опции обработки (чекбоксы) - Прогресс-бар - Вывод результатов ### 3. **Вкладка "Настройки"** - Параметры Whisper (модель, устройство, тип данных) - OpenRouter API ключ - Путь к базе медицинских терминов ### 4. **Многопоточность (Worker/QThread)** - Длительные операции не блокируют UI - Сигналы для обновления прогресса - Обработка ошибок ## 🔌 Интеграция с пайплайном ### Поток обработки: ``` ┌─────────────────────┐ │ Выбор аудиофайла │ └──────────┬──────────┘ │ ▼ ┌─────────────────────────┐ │ Заполнение данных │ │ пациента │ └──────────┬──────────────┘ │ ▼ ┌──────────────────────────────┐ │ TranscriptionWorker (QThread)│ │ ┌──────────────────────────┐ │ │ │ 1. STT (Whisper) │ │ │ │ ▼ │ │ │ │ 2. Knowledge Base Check │ │ │ │ ▼ │ │ │ │ 3. LLM Correction │ │ │ │ ▼ │ │ │ │ 4. Report Generation │ │ │ └──────────────────────────┘ │ └──────────┬──────────────────┘ │ ▼ ┌────────────────────────────┐ │ Результаты и сохранение │ │ JSON + DOCX │ └────────────────────────────┘ ``` ## 🔄 Использование TranscriptionWorker ```python # Создание воркера worker = TranscriptionWorker( audio_path="path/to/audio.wav", config=PipelineConfig(...), patient_data={ "patient_name": "ФИО", "patient_dob": "дата", ... } ) # Подключение сигналов worker.signals.progress.connect(callback_progress) worker.signals.finished.connect(callback_finished) worker.signals.error.connect(callback_error) # Запуск worker.start() ``` ## 📊 Структура результатов ### Возвращаемый словарь `process()`: ```python { "timestamp": "2026-01-16T12:05:30", "audio_file": "path/to/audio.wav", "status": "success", "transcription_original": "...", "transcription_corrected": "...", "corrections": [...], "report_path": "path/to/report.docx", "pipeline_steps": [ { "step": "stt", "status": "success", "output_length": 5000 }, ... ] } ``` ## 🛠 Сборка Windows .exe ### Требования: - Python 3.9+ - PyInstaller - Все зависимости (requirements.txt) ### Команда: ```bash python build_exe.py ``` ### Результат: ``` dist/ └── MedicalTranscriber.exe (~500 МБ - 1.5 ГБ) ``` ## 🎨 Кастомизация UI ### Изменение стилей: ```python # В методе apply_styles() в MedicalTranscriptionApp style = """ QMainWindow { background-color: #f5f5f5; } ... """ self.setStyleSheet(style) ``` ### Добавление новых вкладок: ```python # В методе init_ui() new_tab = self.create_new_tab() tabs.addTab(new_tab, "Новая вкладка") ``` ## 📁 Файловая структура при использовании ``` Trans_for_doctors/ ├── run_gui.py ├── medical_terms.txt ├── app_config.json - Конфигурация приложения ├── whisper_model_config.json - Конфигурация модели Whisper ├── model.safetensors ├── tokenizer_config.json ├── .env - API ключи (НЕ коммитится) ├── .env.example - Пример файла с ключами │ ├── results/ │ ├── result_20260116_120530.json │ ├── result_20260116_120530_corrected.json │ └── reports/ │ └── report_20260116_120530.docx │ └── logs/ └── transcription_20260116_120530.log ``` ## 🧩 Модуль Common (интегрирован в код) Проект включает модуль `common/` с утилитами, **теперь интегрированными во все модули**: ### Компоненты модуля: 1. **exceptions.py** - Кастомные исключения - `MedicalTranscriberException` - базовый класс - `AudioFileException`, `TranscriptionException` - `CorrectionException`, `ReportGenerationException` - `APIException`, `ValidationException` 2. **constants.py** - Централизованные константы - `UIColors`, `UIDimensions` - настройки интерфейса - `AudioFormats`, `ModelDefaults` - конфигурация - `Messages`, `Placeholders` - текстовые константы 3. **logger.py** - Логирование - `configure_logging()` - настройка логгера - `get_logger()` - получение логгера для модуля 4. **models.py** - Модели данных - `PipelineResult`, `PatientMetadata` - `TranscriptionResult` 5. **validators.py** - Валидация - Проверка аудиофайлов, API ключей - Валидация данных пациента **Статус**: ✅ Модуль полностью интегрирован в app/gui_app.py, pipeline/medical_pipeline.py, corrector/llm_corrector.py, stt/whisper_transcriber.py ## 🔐 Сохранность данных ### Где сохраняются результаты: 1. **JSON файлы** - `results/` папка - Содержат текст транскрипции и коррекции - Сохраняются с временной меткой 2. **DOCX отчёты** - `results/reports/` папка ✓ СОЗДАНА - Готовые к использованию документы - Названы по ФИО пациента или номеру исследования - Папка автоматически создаётся при инициализации 3. **Логи** - `logs/` папка - Полная информация о ходе обработки - Полезны для отладки ошибок ### Конфиденциальность: - Все данные остаются на локальном компьютере - API ключ передаётся через HTTPS (OpenRouter) - Вы контролируете где сохраняются результаты ## 🚀 Запуск и отладка ### Запуск в консоли для отладки: ```bash python run_gui.py ``` - Видны все логи в консоли - Видны ошибки и предупреждения - Легче найти проблемы ### Запуск скомпилированного .exe: ```bash dist\MedicalTranscriber.exe ``` - Логи сохраняются в папку `logs/` - Без консоли на экране ## 🔧 Возможные улучшения 1. **Пакетная обработка** - Обработка нескольких файлов за раз 2. **Шаблоны отчётов** - Кастомные DOCX шаблоны 3. **История операций** - Сохранение истории последних обработок 4. **Встроенный плеер** - Проигрывание аудио перед обработкой 5. **Темизирование** - Светлая/тёмная тема 6. **Синхронизация** - Облачное сохранение результатов ## 📞 Контакты и поддержка Для вопросов или предложений: - Проверьте логи в папке `logs/` - Смотрите `USER_GUIDE.md` для типичных проблем - Проверьте `BUILD_EXE.md` для проблем со сборкой --- **Приложение готово к использованию!** ✨