Skip to content

code-418-dpr/VZOR-cv

Repository files navigation

VZOR-cv

license release downloads code size

Linter CodeQL (Python, GH Actions)

Сервис распознавания образов для проекта VZOR

Особенности реализации

  • Flask API для анализа изображений
  • Swagger UI для тестирования API с индикатором прогресса загрузки
  • Обнаружение объектов на изображениях
  • Распознавание текста на изображениях
  • Генерация описания изображений
  • Поддержка загрузки больших файлов (до 100 МБ)

Стек

  • Python — язык программирования
  • Flask — веб-фреймворк
  • Flask-RESTx — расширение для создания RESTful API с Swagger UI
  • uv — самый быстрый пакетный менеджер для Python
  • Ruff — быстрый линтер с большим количеством правил
  • Docker — платформа для контейнеризации

Установка и запуск

  1. Клонируйте репозиторий и перейдите в его папку.

Посредством Docker

  1. Установите Docker.
  2. Создайте файл .env на основе .env.template и настройте все описанные там параметры.
  3. Запустите сборку образа:
docker build -t vzor-cv .
  1. Теперь запускать образ можно командой:
docker run -d -p 5000:5000 --name vzor-cv-standalone vzor-cv
  1. API будет доступен по адресу http://localhost:5000/swagger/

Без использования Docker

  1. Установите пакетный менеджер uv одним из способов. Например, для Windows:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
  1. Установите зависимости:
uv sync --frozen --no-dev
  1. Создайте файл .env на основе .env.template и настройте все описанные там параметры.

  2. Теперь запускать проект можно командой:

uv run -m src
  1. API будет доступен по адресу http://localhost:5000/swagger/

Использование с Nginx

Если вы используете Nginx в качестве прокси-сервера, вам необходимо увеличить максимальный размер загружаемых файлов в конфигурации Nginx:

  1. Используйте пример конфигурации из файла nginx.conf.example
  2. Обратите внимание на параметр client_max_body_size 100M;, который увеличивает максимальный размер запроса до 100 МБ

API Endpoints

POST /api/send-image

Загрузка и анализ изображений. Поддерживает загрузку нескольких файлов одновременно.

Параметры запроса:

  • files: Один или несколько файлов изображений (поддерживаются форматы JPG, JPEG, PNG)

Ограничения:

  • Максимальный размер загружаемых файлов: 100 МБ

Особенности интерфейса:

  • Индикатор прогресса загрузки в Swagger UI для отслеживания статуса загрузки больших файлов

Ответ:

[
  {
    "objects": ["object1", "object2", ...],
    "text": "Detected text in the image",
    "description": "Generated description of the image"
  },
  ...
]

Модификация

Если вы планируете модифицировать проект, установите все зависимости:

uv sync

Запустить линтинг кода (и автоисправление некоторых ошибок) можно через Ruff:

uv run ruff check --fix .