Browse Source

readme

master
parent
commit
761d1d98e0
  1. 177
      readme.md
  2. 261
      Техническое Задание.md

177
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": "Развернутое медицинское описание с профессиональной терминологией"
}
```

261
Техническое Задание.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 в процессе)
Loading…
Cancel
Save