From 383d4167751e1b4af778c2367ae06b8b9d6ca5af Mon Sep 17 00:00:00 2001 From: anker-na-20 Date: Thu, 21 May 2026 11:05:19 +0300 Subject: [PATCH] README.md --- README.md | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) diff --git a/README.md b/README.md index e69de29..5ae1aec 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,96 @@ +# doc-translator + +Система автоматического перевода PDF-документов с китайского на русский с использованием LLM. + +## Архитектура + +**Стек:** +- **Worker**: FastAPI + PyMuPDF (обработка PDF) +- **LLM**: Ollama (DeepSeek) +- **Оркестрация**: n8n (workflow automation) +- **БД**: PostgreSQL +- **Инфраструктура**: Docker Compose + +## Что реализовано + +### Backend ([`src/worker/app.py`](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`](docker/docker-compose.yml)) +- PostgreSQL (порт 5432) +- Ollama (порт 11434) +- Worker API (порт 8000) +- n8n (порт 5678) + +### Промпты ([`config/prompts/`](config/prompts/)) +- `zh_ru_tech.v1` - базовый промпт для технической документации +- Версионирование через БД для A/B тестирования + +## Что планируется + +### Evaluation система ([`src/evaluation/`](src/evaluation/)) +- Автоматическая оценка качества переводов (BLEU, LLM-as-judge) +- Сравнение версий промптов на golden examples +- Метрики и дашборды + +### Frontend ([`src/app/`](src/app/)) +- Web-интерфейс для загрузки документов +- Мониторинг статуса обработки +- Просмотр результатов + +### Workflow ([`docker/n8n/`](docker/n8n/)) +- Автоматизация пайплайна: загрузка → обработка → оценка +- Интеграция с внешними системами +- Уведомления о завершении + +### Дополнительно +- Миграции БД ([`migrations/`](migrations/)) +- Тесты ([`tests/`](tests/)) +- Утилиты и скрипты ([`scripts/`](scripts/), [`src/utils/`](src/utils/)) + +## Быстрый старт + +```bash +# Запуск инфраструктуры +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`