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

97 lines
4.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`