Сервис распознавания образов для проекта VZOR
- Flask API для анализа изображений
- Swagger UI для тестирования API с индикатором прогресса загрузки
- Обнаружение объектов на изображениях
- Распознавание текста на изображениях
- Генерация описания изображений
- Поддержка загрузки больших файлов (до 100 МБ)
- Python — язык программирования
- Flask — веб-фреймворк
- Flask-RESTx — расширение для создания RESTful API с Swagger UI
- uv — самый быстрый пакетный менеджер для Python
- Ruff — быстрый линтер с большим количеством правил
- Docker — платформа для контейнеризации
- Клонируйте репозиторий и перейдите в его папку.
- Установите Docker.
- Создайте файл
.env
на основе .env.template и настройте все описанные там параметры. - Запустите сборку образа:
docker build -t vzor-cv .
- Теперь запускать образ можно командой:
docker run -d -p 5000:5000 --name vzor-cv-standalone vzor-cv
- API будет доступен по адресу http://localhost:5000/swagger/
- Установите пакетный менеджер uv одним из способов. Например, для Windows:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
- Установите зависимости:
uv sync --frozen --no-dev
-
Создайте файл
.env
на основе .env.template и настройте все описанные там параметры. -
Теперь запускать проект можно командой:
uv run -m src
- API будет доступен по адресу http://localhost:5000/swagger/
Если вы используете Nginx в качестве прокси-сервера, вам необходимо увеличить максимальный размер загружаемых файлов в конфигурации Nginx:
- Используйте пример конфигурации из файла
nginx.conf.example
- Обратите внимание на параметр
client_max_body_size 100M;
, который увеличивает максимальный размер запроса до 100 МБ
Загрузка и анализ изображений. Поддерживает загрузку нескольких файлов одновременно.
Параметры запроса:
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 .