README.md
This commit is contained in:
@@ -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`
|
||||
|
||||
Reference in New Issue
Block a user