Mintik24's picture
🎉 Полный рефакторинг проекта Medical Transcriber
e275025

Medical Transcription LLM Corrector

Модуль для автоматической коррекции медицинских транскрипций с использованием OpenRouter API и генерации отчетов в формате DOCX.

Возможности

  • LLM коррекция - исправление ошибок через OpenRouter (Gemini, GPT, Claude и др.)
  • База знаний - использование медицинских терминов для контекста
  • Генерация DOCX - автоматическое создание форматированных отчетов
  • Batch обработка - автоматическая обработка всех результатов
  • Детальная статистика - отчеты об изменениях и исправлениях

Установка

1. Установка зависимостей

cd /home/robot/Documents/novaya_vetka/Trans_for_doctors
pip install -r requirements.txt

2. Настройка API ключа

Скопируйте файл .env.example в .env:

cd corrector
cp .env.example .env

Отредактируйте .env и добавьте ваш OpenRouter API ключ:

OPENROUTER_API_KEY=your-openrouter-api-key-here

Получить ключ: https://openrouter.ai/keys

Использование

Автоматическая обработка с генерацией отчетов (по умолчанию)

Обработать все файлы из папки results/ и создать DOCX отчеты:

cd /home/robot/Documents/novaya_vetka/Trans_for_doctors
python -m corrector.auto_process

Отчеты будут сохранены в results/reports/ в формате report_YYYYMMDD_HHMMSS.docx

С указанием данных пациента

python -m corrector.auto_process \
  --patient-name "Стрельникова Анна Владимировна" \
  --patient-dob "16.02.1996" \
  --study-area "Поясничный отдел позвоночника + копчик" \
  --doctor-name "Камалетдинов Э.А"

Только коррекция без генерации отчетов

JSON файлы коррекции

python -m corrector.auto_process --no-reports

Обработка конкретного файла

python -m corrector.auto_process --file results/result_20260114_200537.json

Использование другой модели

python -m corrector.auto_process --model gpt-4o-mini

Формат выходных данных

Для каждого файла result_YYYYMMDD_HHMMSS.json создается файл result_YYYYMMDD_HHMMSS_corrected.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 отчета

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