diff --git a/readme.md b/readme.md index 4c7c51b..8874c4e 100644 --- a/readme.md +++ b/readme.md @@ -2,7 +2,7 @@ Умное приложение для автоматизации ввода медицинских текстов с поддержкой AI. Панель автоматически появляется при клике на поля ввода в любых приложениях (браузеры, текстовые редакторы, EHR системы). -![Python](https://img.shields.io/badge/Python-3.12+-blue.svg) +![Python](https://img.shields.io/badge/Python-3.8+-blue.svg) ![PyQt6](https://img.shields.io/badge/PyQt6-GUI-green.svg) ![AI](https://img.shields.io/badge/AI-LLM_Integrated-orange.svg) @@ -26,15 +26,186 @@ - **Подготовка ЛОР-статуса** - **Генерация медицинских заключений** +## 📁 Структура проекта + +``` +medical-input-helper/ +├── 📁 models/ # Папка для AI моделей +│ └── .gitkeep # Пустой файл для сохранения структуры +├── 📁 data/ # Папка для пользовательских данных +│ └── .gitkeep # Пустой файл для сохранения структуры +├── 📁 chroma_db/ # База данных векторных эмбеддингов +│ └── .gitkeep # Пустой файл для сохранения структуры +├── 📄 main.py # Точка входа приложения +├── 📄 main_window.py # Главное окно и основная логика +├── 📄 main_interface.py # Пользовательский интерфейс +├── 📄 ai_worker.py # Обработка AI (LLM + RAG) +├── 📄 drag_drop_handler.py # Обработка drag-and-drop +├── 📄 icon_window.py # Плавающая иконка приложения +├── 📄 rag_corpus.json # Медицинский корпус для RAG +├── 📄 requirements.txt # Зависимости проекта +└── 📄 README.md # Документация +``` + ## 🚀 Установка ### Требования - Python 3.8 или выше - 4GB+ оперативной памяти (8GB+ рекомендуется для LLM) +- 2GB+ свободного места на диске для моделей ### Установка зависимостей ```bash +pip install -r requirements.txt +``` + +Или вручную: +```bash pip install PyQt6 qtawesome uiautomation pyperclip keyboard chromadb llama-cpp-python torch tiktoken psutil pillow requests ``` -### Модель -[YandexGPT-5-Lite-8B-instruct-Q4_K_M](https://huggingface.co/yandex/YandexGPT-5-Lite-8B-instruct-GGUF/resolve/main/YandexGPT-5-Lite-8B-instruct-Q4_K_M.gguf?download=true) + +### 📥 Установка AI модели + +#### Скачивание YandexGPT-5-Lite модели + +1. **Перейдите на HuggingFace**: + - Откройте: https://huggingface.co/yandex/YandexGPT-5-Lite-8B-instruct-GGUF/tree/main + +2. **Выберите версию модели**: + - Для слабых компьютеров: `YandexGPT-5-Lite-8B-instruct-Q4_K_M.gguf` (~4.8GB) + - Для мощных компьютеров: `YandexGPT-5-Lite-8B-instruct-Q8_0.gguf` (~8.5GB) + +3. **Скачайте модель**: + ```bash + # Создайте папку для моделей + mkdir models + + # Скачайте через wget (Linux/Mac) + wget -O models/YandexGPT-5-Lite-8B-instruct-Q4_K_M.gguf https://huggingface.co/yandex/YandexGPT-5-Lite-8B-instruct-GGUF/resolve/main/YandexGPT-5-Lite-8B-instruct-Q4_K_M.gguf + + # Или через curl (Windows) + curl -L -o models/YandexGPT-5-Lite-8B-instruct-Q4_K_M.gguf https://huggingface.co/yandex/YandexGPT-5-Lite-8B-instruct-GGUF/resolve/main/YandexGPT-5-Lite-8B-instruct-Q4_K_M.gguf + ``` + +4. **Альтернативные способы скачивания**: + - Используйте `git lfs` если установлен + - Скачайте вручную через браузер и переместите в папку `models/` + +#### Настройка медицинского корпуса + +Создайте файл `rag_corpus.json` с примерами медицинских текстов: + +```json +[ + { + "short": "кашель температура", + "full": "Пациент предъявляет жалобы на сухой кашель, повышение температуры тела до 38°C, общую слабость" + }, + { + "short": "боль горло", + "full": "Больной жалуется на острую боль в горле, усиливающуюся при глотании, першение" + } +] +``` + +## 🎯 Использование + +### Основные сценарии + +#### 1. Автоматическая работа +- Кликните на любое поле ввода в браузере или приложении +- Панель автоматически появится рядом с курсором +- Выберите нужную функцию для вставки текста + +#### 2. Обработка жалоб пациента +- Нажмите "Копировать жалобы" для захвата текста из активного поля +- AI автоматически обработает и отформатирует текст +- Нажмите "Вставить жалобы (ИИ)" для вставки результата + +#### 3. Drag-and-drop +- Перетащите текст или изображение на панель +- Система автоматически определит тип контента +- Выберите нужный формат для вставки + +#### 4. Работа с изображениями +- Перетащите медицинские снимки на папку `data/` или прямо в приложение +- AI сгенерирует описание и заключение +- Вставьте готовый текст в нужное поле + +### Горячие клавиши +- **Двойной клик** по иконке в трее - показать/скрыть панель +- **Перетаскивание** окон - удерживайте левую кнопку мыши + +## 🏗️ Архитектура + +### AI система +- **MedicalRAG** - Retrieval-Augmented Generation для медицинских текстов +- **ChromaDB** - векторная база в папке `chroma_db/` +- **Sentence Transformers** - эмбеддинги на русском языке +- **LLM модели** - хранятся в папке `models/` + +### Потоки данных +``` +Пользовательский ввод → Drag&Drop/Копирование → AI Worker → LLM модель → Форматированный вывод +``` + +## ⚙️ Настройка + +### Конфигурация путей +В `ai_worker.py` настройте пути к данным: + +```python +model_path = "./models/YandexGPT-5-Lite-8B-instruct-Q4_K_M.gguf" +corpus_path = "rag_corpus.json" +db_path = "./chroma_db" +data_path = "./data" +``` + +### Создание структуры папок +```bash +# Автоматическое создание структуры +mkdir -p models data chroma_db + +# Создание пустых файлов для git +touch models/.gitkeep data/.gitkeep chroma_db/.gitkeep +``` + +## 🐛 Устранение неполадок + +### Проблемы с моделями +```bash +# Проверьте наличие модели +ls -la models/ + +# Проверьте размер файла (должен быть ~4.8GB для Q4) +ls -lh models/YandexGPT-5-Lite-8B-instruct-Q4_K_M.gguf +``` + +### Проблемы с памятью +- Используйте Q4 версию модели для экономии памяти +- Закройте лишние приложения перед запуском +- Увеличьте файл подкачки если нужно + +### Проблемы с зависимостями +```bash +# Обновите pip и переустановите зависимости +pip install --upgrade pip +pip install -r requirements.txt --force-reinstall +``` + +## 🤝 Разработка + +### Добавление новых функций +1. Создайте новую кнопку в `main_interface.py` +2. Добавьте обработчик в `main_window.py` +3. Реализуйте логику в `ai_worker.py` при необходимости + +### Расширение медицинского корпуса +Добавьте новые примеры в `rag_corpus.json`: + +```json +{ + "short": "новые симптомы", + "full": "Развернутое медицинское описание с профессиональной терминологией" +} +``` diff --git a/Техническое Задание.md b/Техническое Задание.md new file mode 100644 index 0000000..171cfbb --- /dev/null +++ b/Техническое Задание.md @@ -0,0 +1,261 @@ +# Техническое задание на разработку системы "Medical Input Helper" + +## 1. Введение + +### 1.1. Наименование системы +**Medical Input Helper** - интеллектуальная система автоматизации ввода медицинских текстов с поддержкой AI. + +### 1.2. Назначение системы +Разработка программного обеспечения для автоматизации процесса ввода и форматирования медицинских текстов, с интеграцией AI-моделей для анализа медицинских данных, включая обработку ЛОР-эндоскопических изображений. + +## 2. Общие требования + +### 2.1. Функциональное назначение +Система должна предоставлять следующие возможности: +- Автоматическое обнаружение полей ввода в различных приложениях +- Интеллектуальная обработка медицинских текстов с использованием LLM +- Анализ ЛОР-эндоскопических изображений и генерация медицинских заключений +- Drag-and-drop интерфейс для работы с текстом и изображениями +- Фоновая работа через системный трей + +### 2.2. Целевая аудитория +- Врачи-оториноларингологи +- Медицинские регистраторы +- Медицинский персонал, работающий с EHR системами + +## 3. Технические требования + +### 3.1. Архитектура системы +``` +┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐ +│ GUI Layer │◄──►│ Business Logic │◄──►│ AI Services │ +│ (PyQt6) │ │ Layer │ │ Layer │ +└─────────────────┘ └──────────────────┘ └─────────────────┘ + │ │ │ + ▼ ▼ ▼ +┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐ +│ System Tray │ │ Drag & Drop │ │ LLM Models │ +│ Icon Window │ │ Handler │ │ Image Analysis │ +└─────────────────┘ └──────────────────┘ └─────────────────┘ +``` + +### 3.2. Компоненты системы + +#### 3.2.1. Основные модули (реализованы) +- **main.py** - точка входа приложения +- **main_window.py** - главное окно и управление состоянием +- **main_interface.py** - пользовательский интерфейс +- **ai_worker.py** - обработка AI запросов в отдельном потоке +- **drag_drop_handler.py** - обработка drag-and-drop операций +- **icon_window.py** - плавающая иконка приложения + +#### 3.2.2. Структура данных +``` +project/ +├── models/ # AI модели (LLM + компьютерное зрение) +├── data/ # Пользовательские данные и изображения +├── chroma_db/ # Векторная база медицинских знаний +└── rag_corpus.json # Медицинский корпус для RAG +``` + +### 3.3. Технологический стек +- **GUI Framework**: PyQt6 +- **AI/ML**: llama-cpp-python, ChromaDB, Sentence Transformers +- **Computer Vision**: OpenCV, Pillow, Torch +- **System Integration**: uiautomation, pyperclip, keyboard +- **Utilities**: qtawesome, psutil, requests + +## 4. Функциональные требования + +### 4.1. Модуль автоматизации ввода (реализован) + +#### 4.1.1. Обнаружение полей ввода +- [x] Автоматическое определение фокуса на редактируемых полях +- [x] Поддержка различных типов контролов (Edit, Text, ComboBox) +- [x] Работа с нативными приложениями и веб-браузерами + +#### 4.1.2. Управление интерфейсом +- [x] Плавающее окно с автоматическим позиционированием +- [x] Два режима работы: компактный и расширенный +- [x] Перетаскивание окон мышью +- [x] Системный трей для фоновой работы + +### 4.2. Модуль обработки текста (реализован) + +#### 4.2.1. Базовые функции +- [x] Копирование текста из активных полей +- [x] Вставка форматированного текста +- [x] Drag-and-drop для текстового контента + +#### 4.2.2. AI-обработка текста +- [x] Интеграция с YandexGPT-5-Lite моделью +- [x] RAG (Retrieval-Augmented Generation) для медицинских текстов +- [x] Специализированные промпты для: + - [x] Обработки жалоб пациента + - [x] Форматирования анамнеза заболевания + - [x] Генерации медицинских заключений + +### 4.3. Модуль работы с изображениями (частично реализован) + +#### 4.3.1. Загрузка и обработка изображений (реализовано) +- [x] Drag-and-drop загрузка локальных файлов +- [x] Загрузка изображений по URL +- [x] Поддержка форматов: JPG, PNG, BMP, GIF, TIFF, WebP +- [x] Автоматическое определение типа контента + +#### 4.3.2. Анализ ЛОР-эндоскопических изображений (требует доработки) +- [ ] Интеграция моделей компьютерного зрения для анализа: + - [ ] Состояния барабанной перепонки + - [ ] Патологий наружного слухового прохода + - [ ] Воспалительных процессов + - [ ] Наличия инородных тел +- [ ] Классификация изображений по типам патологий +- [ ] Генерация структурированного ЛОР-статуса + +#### 4.3.3. Генерация медицинских заключений +- [ ] Комбинированный анализ: изображение + анамнез +- [ ] Автоматическая генерация заключения ИИ +- [ ] Форматирование согласно медицинским стандартам + +## 5. Требования к AI-компонентам + +### 5.1. Текстовая обработка (реализована) +- **Модель**: YandexGPT-5-Lite-8B-instruct (GGUF) +- **Контекст**: 2048 токенов +- **Температура**: 0.1 для детерминированных результатов +- **RAG система**: ChromaDB с rubert-tiny2 эмбеддингами + +### 5.2. Визуальный анализ (требует реализации) + +#### 5.2.1. Модели компьютерного зрения +- **Основная модель**: Предобученная CNN для классификации ЛОР-изображений +- **Дополнительные модели**: + - Segmentation моделей для выделения областей интереса + - Detection моделей для идентификации патологий + +#### 5.2.2. Требования к анализу изображений +- **Точность классификации**: >85% для основных патологий +- **Время обработки**: <10 секунд на изображение +- **Поддерживаемые патологии**: + - Отиты (наружный, средний) + - Перфорации барабанной перепонки + - Инородные тела слухового прохода + - Новообразования + - Воспалительные процессы + +## 6. Интерфейс пользователя + +### 6.1. Основной интерфейс (реализован) +- [x] Компактный режим (70px) для экономии места +- [x] Расширенный режим (200px) с полным функционалом +- [x] Адаптивные drop-зоны для разных типов контента +- [x] Визуальная индикация процесса обработки + +### 6.2. Элементы управления (реализованы) +- [x] Кнопка "Копировать жалобы" +- [x] Кнопка "Копировать анамнез" +- [x] Кнопка "ЛОР-Статус" +- [x] Кнопка "Заключение ИИ" +- [x] Кнопка "Новый случай" + +### 6.3. Визуальное оформление (реализовано) +- [x] Темная тема с градиентами +- [x] Иконки QtAwesome для лучшей визуализации +- [x] Анимации изменения размеров окон +- [x] Эффекты тени и прозрачности + +## 7. Требования к производительности + +### 7.1. Время отклика +- Загрузка интерфейса: <3 секунд +- Обработка текста LLM: <15 секунд +- Анализ изображения: <10 секунд +- Переключение между режимами: <0.5 секунд + +### 7.2. Использование ресурсов +- Память: <2GB в режиме ожидания +- Память с LLM: <4GB при активной обработке +- CPU: <15% в режиме ожидания + +## 8. Требования к совместимости + +### 8.1. Операционные системы +- [x] Windows 10/11 +- [ ] Linux (требует тестирования) +- [ ] macOS (требует тестирования) + +### 8.2. Целевые приложения +- [x] Веб-браузеры (Chrome, Edge, Firefox) +- [x] Текстовые редакторы (Word, Блокнот) +- [x] EHR системы (тестирование требуется) +- [x] Почтовые клиенты + +## 9. Этапы разработки + +### Этап 1: Базовый функционал (РЕАЛИЗОВАН) +- [x] Архитектура приложения +- [x] Основной GUI +- [x] Система drag-and-drop +- [x] Интеграция LLM для текста +- [x] Системный трей и фоновая работа + +### Этап 2: Анализ изображений (В РАЗРАБОТКЕ) +- [ ] Интеграция моделей компьютерного зрения +- [ ] Разработка пайплайна обработки ЛОР-изображений +- [ ] Тестирование точности классификации +- [ ] Оптимизация производительности + +### Этап 3: Расширенная функциональность (ПЛАНИРУЕТСЯ) +- [ ] Поддержка дополнительных медицинских специальностей +- [ ] Интеграция с медицинскими базами данных +- [ ] Расширенная кастомизация интерфейса +- [ ] Пакетная обработка данных + +## 10. Критерии приемки + +### 10.1. Функциональные тесты +- [ ] Автоматическое появление панели при фокусе на поле ввода +- [ ] Корректная обработка медицинских текстов LLM +- [ ] Точная классификация ЛОР-изображений (>85%) +- [ ] Стабильная работа в фоновом режиме + +### 10.2. Производительностные тесты +- [ ] Обработка 100+ текстовых запросов без утечек памяти +- [ ] Анализ 50+ изображений без деградации производительности +- [ ] Работа в течение 24+ часов без перезапуска + +### 10.3. Пользовательские тесты +- [ ] Удобство использования медицинским персоналом +- [ ] Сокращение времени на ввод документации на 40% +- [ ] Положительные отзывы от 10+ тестовых пользователей + +## 11. Документация + +### 11.1. Техническая документация +- [x] README с инструкциями по установке +- [x] .gitignore для управления версиями +- [ ] API документация для AI модулей +- [ ] Руководство по развертыванию + +### 11.2. Пользовательская документация +- [ ] Руководство пользователя +- [ ] Видео-инструкции по основным сценариям +- [ ] FAQ по решению常见 проблем + +## 12. Медицинские требования и ограничения + +### 12.1. Предупреждения +- Система является вспомогательным инструментом +- Все AI-генерации должны проверяться врачом +- Не заменяет профессиональную медицинскую диагностику + +### 12.2. Соответствие стандартам +- Соблюдение медицинской этики +- Конфиденциальность patient data +- Соответствие требованиям к медицинскому ПО + +--- + +**Техническое задание утверждено:** [Дата] +**Версия:** 1.0 +**Статус:** В разработке (Этап 1 завершен, Этап 2 в процессе) \ No newline at end of file