README.md

This commit is contained in:
anker-na-20
2026-05-21 11:05:19 +03:00
parent b6dd80e749
commit 383d416775
+96
View File
@@ -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`