# Medical Transcription LLM Corrector Модуль для автоматической коррекции медицинских транскрипций с использованием OpenRouter API и генерации отчетов в формате DOCX. ## Возможности - ✅ **LLM коррекция** - исправление ошибок через OpenRouter (Gemini, GPT, Claude и др.) - ✅ **База знаний** - использование медицинских терминов для контекста - ✅ **Генерация DOCX** - автоматическое создание форматированных отчетов - ✅ **Batch обработка** - автоматическая обработка всех результатов - ✅ **Детальная статистика** - отчеты об изменениях и исправлениях ## Установка ### 1. Установка зависимостей ```bash cd /home/robot/Documents/novaya_vetka/Trans_for_doctors pip install -r requirements.txt ``` ### 2. Настройка API ключа Скопируйте файл `.env.example` в `.env`: ```bash cd corrector cp .env.example .env ``` Отредактируйте `.env` и добавьте ваш OpenRouter API ключ: ``` OPENROUTER_API_KEY=your-openrouter-api-key-here ``` Получить ключ: https://openrouter.ai/keys ## Использование ### Автоматическая обработка с генерацией отчетов (по умолчанию) Обработать все файлы из папки `results/` и создать DOCX отчеты: ```bash cd /home/robot/Documents/novaya_vetka/Trans_for_doctors python -m corrector.auto_process ``` Отчеты будут сохранены в `results/reports/` в формате `report_YYYYMMDD_HHMMSS.docx` ### С указанием данных пациента ```bash python -m corrector.auto_process \ --patient-name "Стрельникова Анна Владимировна" \ --patient-dob "16.02.1996" \ --study-area "Поясничный отдел позвоночника + копчик" \ --doctor-name "Камалетдинов Э.А" ``` ### Только коррекция без генерации отчетов ### JSON файлы коррекции ```bash python -m corrector.auto_process --no-reports ``` ### Обработка конкретного файла ```bash python -m corrector.auto_process --file results/result_20260114_200537.json ``` ### Использование другой модели ```bash python -m corrector.auto_process --model gpt-4o-mini ``` ## Формат выходных данных Для каждого файла `result_YYYYMMDD_HHMMSS.json` создается файл `result_YYYYMMDD_HHMMSS_corrected.json` со следующей структурой: ```json { "original_file": "result_20260114_200537.json", "processing_timestamp": "2026-01-15T10:30:00.123456", "llm_model": "gpt-4o", "transcription_original": "исходная транскрипция...", "transcription_corrected": "исправленная транскрипция...", "corrections_applied": 5, "corrections_detail": [ { "type": "replace", "original": "дарзальная", "corrected": "дорзальная", "position": 15 } ] ### DOCX отчеты ### Коррекция транскрипции ```python from corrector import MedicalLLMCorrector # Инициализация corrector = MedicalLLMCorrector() # Коррекция текста original_text = "На серии МР-томограмм определяется дарзальная грыжа..." corrected_text, corrections = corrector.correct_transcription(original_text) print(f"Исправлено ошибок: {len(corrections)}") print(f"Исправленный текст: {corrected_text}") # Форматированный отчет report = corrector.format_corrections_report(corrections) print(report) ``` ### Генерация DOCX отчета ```python from pathlib import Path from corrector.report_generator import generate_report_from_json # Генерация отчета из corrected JSON report_path = generate_report_from_json( corrected_json_path=Path("results/result_20260114_200537_corrected.json"), output_dir=Path("results/reports"), patient_name="Стрельникова Анна Владимировна", patient_dob="16.02.1996", study_area="Поясничный отдел позвоночника + копчик", doctor_name="Камалетдинов Э.А" ) print(f"Отчет создан: {report_path}" ## Использование в коде ```python from corrector import MedicalLLMCorrector # Инициализация corrector = MedicalLLMCorrector() # Коррекция текста original_text = "На серии МР-томограмм определяется дарзальная грыжа..." corrected_text, corrections = corrector.correct_transcription(original_text) print(f"Исправлено ошибок: {len(corrections)}") print(f"Исправленный текст: {corrected_text}") # Форматированный отчет report = corrector.format_corrections_report(corrections) print(report) ``` ## Настройки Все настройки находятся в файле `.env`: - `OPENROUTER_API_KEY` - API ключ OpenRouter (обязательно) - `OPENROUTER_MODEL` - модель для использования (по умолчанию: `google/gemini-3-flash-preview`) - `OPENROUTER_TEMPERATURE` - температура генерации (по умолчанию: `0.1`) - `OPENROUTER_MAX_TOKENS` - максимальное количество токенов (по умолчанию: `4000`) - `SAVE_DIFF` - сохранять детали изменений (по умолчанию: `true`) - `LOG_CORRECTIONS` - выводить изменения в лог (по умолчанию: `true`) - `MAX_RETRIES` - количество попыток при ошибке API (по умолчанию: `3`) - `RETRY_DELAY` - задержка между попытками (по умолчанию: `2`) ### CLI Аргументы - `--file` - обработать конкретный файл - `--results-dir` - путь к папке results - `--model` - модель OpenAI (gpt-4o, gpt-4o-mini) - `--generate-reports` - генерировать DOCX (по умолчанию: включено) - `--no-reports` - отключить генерацию DOCX - `--reports-dir` - папка для DOCX отчетов - `--patient-name` - ФИО пациента - `--patient-dob` - дата рождения (ДД.ММ.ГГГГ) - `--study-area` - область исследования - `--doctor-name` - имя врача ## База знаний Медицинские термины загружаются из файла `medical_terms.txt` в корне проекта. Для добавления новых терминов просто отредактируйте этот файл. ## Логи Все операции логируются в консоль с подробной информацией о: - Обрабатываемых файлах - Количестве найденных исправлений - Конкретных изменениях (если включено `LOG_CORRECTIONS`) - Ошибках API ## Примечания - Модуль автоматически пропускает уже обработанные файлы (с суффиксом `_corrected`) - При ошибках API используется retry логика с экспоненциальной задержкой - Исходные файлы не изменяются, создаются новые `*_corrected.json`