anker-na-20 383d416775 README.md
2026-05-21 11:05:19 +03:00
2026-05-21 10:45:27 +03:00
2026-05-21 10:45:27 +03:00
2026-05-21 10:45:27 +03:00
2026-05-21 10:45:27 +03:00
2026-05-21 10:45:27 +03:00
2026-05-21 10:45:27 +03:00
2026-05-21 11:05:19 +03:00
2026-05-21 10:45:27 +03:00

doc-translator

Система автоматического перевода PDF-документов с китайского на русский с использованием LLM.

Архитектура

Стек:

  • Worker: FastAPI + PyMuPDF (обработка PDF)
  • LLM: Ollama (DeepSeek)
  • Оркестрация: n8n (workflow automation)
  • БД: PostgreSQL
  • Инфраструктура: Docker Compose

Что реализовано

Backend (src/worker/app.py)

  • Извлечение текста из PDF по блокам с координатами
  • Перевод текстовых сегментов через LLM
  • Сборка переведённого PDF с сохранением структуры
  • API endpoint /process-document для обработки документов

База данных

  • documents - метаданные загруженных файлов, статусы обработки
  • translations - история переводов с метриками
  • prompts - версионирование промптов для LLM
  • golden_examples - эталонные переводы для оценки качества
  • prompt_runs - результаты A/B тестирования промптов

Инфраструктура (docker/docker-compose.yml)

  • PostgreSQL (порт 5432)
  • Ollama (порт 11434)
  • Worker API (порт 8000)
  • n8n (порт 5678)

Промпты (config/prompts/)

  • zh_ru_tech.v1 - базовый промпт для технической документации
  • Версионирование через БД для A/B тестирования

Что планируется

Evaluation система (src/evaluation/)

  • Автоматическая оценка качества переводов (BLEU, LLM-as-judge)
  • Сравнение версий промптов на golden examples
  • Метрики и дашборды

Frontend (src/app/)

  • Web-интерфейс для загрузки документов
  • Мониторинг статуса обработки
  • Просмотр результатов

Workflow (docker/n8n/)

  • Автоматизация пайплайна: загрузка → обработка → оценка
  • Интеграция с внешними системами
  • Уведомления о завершении

Дополнительно

Быстрый старт

# Запуск инфраструктуры
cd docker
docker-compose up -d

# Инициализация БД
docker exec -i doc_translator_db psql -U doc_user -d doc_translator < db/init.sql
docker exec -i doc_translator_db psql -U doc_user -d doc_translator < db/prompts.sql
docker exec -i doc_translator_db psql -U doc_user -d doc_translator < db/documents.sql

# Загрузка модели в Ollama
docker exec -it doc_translator_ollama ollama pull deepseek-r1:1.5b

# Обработка документа
curl -X POST http://localhost:8000/process-document \
  -H "Content-Type: application/json" \
  -d '{"document_id": 1, "original_path": "/data/input/document.pdf"}'

Структура данных

data/
├── input/          # Исходные PDF
├── output/         # Переведённые PDF
└── samples/        # Тестовые примеры

Технические детали

  • Извлечение текста: PyMuPDF get_text("blocks") с bbox
  • Перевод: Ollama API (TODO: интеграция DeepSeek)
  • Сборка PDF: наложение переведённого текста на исходные координаты
  • Версионирование промптов: таблица prompts с флагом is_active
S
Description
No description provided
Readme 33 MiB
Languages
Python 76.9%
JavaScript 17.5%
Dockerfile 5.6%