Skip to content

twirapp/language-processor-py

Repository files navigation

Language Detection API

Сервис для определения языка текста с поддержкой двух методов детекции:

  • MediaPipe (по умолчанию) - быстрый детектор от Google
  • Lingua - высокоточный детектор с поддержкой 75 языков

Возможности

  • HTTP API на основе Litestar
  • Два метода определения языка на выбор
  • Возвращает код языка и уровень уверенности
  • Swagger UI документация
  • Готов к production использованию
  • Запуск только в Docker

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

# Собрать и запустить
docker-compose up -d --build

# Проверить статус
docker-compose ps

# Посмотреть логи
docker-compose logs -f

Сервис будет доступен на http://localhost:3000

API Endpoints

Swagger UI

GET /schema/swagger

Интерактивная документация API

Health Check

GET /health

Ответ:

{
  "status": "ok"
}

Определение языка

POST /detect
Content-Type: application/json

{
  "text": "Hello, how are you?",
  "method": "mediapipe"  // опционально: "mediapipe" или "lingua"
}

Параметры:

  • text (string, обязательный) - текст для определения языка
  • method (string, опциональный) - метод детекции: "mediapipe" (по умолчанию) или "lingua"

Ответ:

{
  "language": "en",
  "confidence": 0.9999,
  "method": "mediapipe"
}

Примеры использования

MediaPipe (по умолчанию)

curl -X POST http://localhost:3000/detect \
  -H "Content-Type: application/json" \
  -d '{"text": "Hello world"}'

# Response: {"language": "en", "confidence": 0.835, "method": "mediapipe"}

Lingua

curl -X POST http://localhost:3000/detect \
  -H "Content-Type: application/json" \
  -d '{"text": "Bonjour le monde", "method": "lingua"}'

# Response: {"language": "fr", "confidence": 0.95, "method": "lingua"}

Структура проекта

lingua-rs/
├── main.py                      # Основное приложение Litestar
├── detectors/                   # Модули детекторов
│   ├── __init__.py
│   ├── base.py                  # Базовый класс детектора
│   ├── mediapipe_detector.py    # MediaPipe реализация
│   └── lingua_detector.py       # Lingua реализация
├── app/                         # Вспомогательные модули приложения
│   ├── __init__.py
│   ├── schemas.py               # Request/Response схемы
│   ├── http_exceptions.py       # Кастомные исключения
│   └── openapi_examples.py      # Примеры для OpenAPI
├── requirements.txt             # Python зависимости
├── Dockerfile                   # Docker конфигурация
├── docker-compose.yml           # Docker Compose
├── .env.example                 # Пример конфигурации
└── README.md                    # Документация

Технологии

  • Python 3.11
  • Litestar - современный асинхронный веб-фреймворк
  • MediaPipe - ML решения от Google
  • Lingua - высокоточная библиотека определения языка
  • Docker - контейнеризация

Сравнение методов

Характеристика MediaPipe Lingua
Скорость Очень быстрый Медленнее
Точность Высокая Очень высокая
Языков 110+ 75
Размер модели ~300 KB ~2 MB
Использование По умолчанию, для большинства случаев Когда нужна максимальная точность

Переменные окружения

Создайте .env файл на основе .env.example:

# MediaPipe model path
MEDIAPIPE_MODEL_PATH=/app/models/language_detector.tflite

Разработка

Локальный запуск (через Docker)

docker-compose up -d --build

Просмотр логов

docker-compose logs -f

Остановка

docker-compose down

Запуск тестов

./test.sh

Production

Для production окружения рекомендуется:

  1. Настроить переменные окружения через .env
  2. Использовать reverse proxy (nginx, traefik)
  3. Настроить мониторинг и health checks
  4. Добавить rate limiting
  5. Настроить логирование

Лицензия

MIT License

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors