Skip to content

Тестовое задание разработчика нейросетей Python в команду ООО "ИНФО СФЕРА"

Notifications You must be signed in to change notification settings

isphere-ru/python-nn-test-task-lvl2

Repository files navigation

Тестовое задание разработчика нейросетей Python в команду ООО "ИНФО СФЕРА"

Описание

Реализовать бекенд сервис, выполняющий роль обертки над разработанной нейросетью (НС). НС - решение числовой и/или буквенной капчи-изображения. Датасет, ограничения на формат текста (длина текста, алфавит) будут высланы HR или TeamLead команды.

Капча может быть разного вида, один из примеров:

Капчи

Необходимо реализовать методы API:

  • Загрузка изображения в body запроса и получение в формате JSON ответа с решением капчи (ответ), временем на распознавание текста.

Оптимизировать прогрузку по потреблению памяти и по времени. Стоит учесть обработку ошибок, валидацию входных данных и иные ситуации. Например, сервер не должен лечь, если загрузили pdf, а не картинку.

НС - собственная НС без использования готовых решений вида YOLO и т.п. Обучение НС рекомендуется производить в Jupyter Notebook и загрузить в репозиторий. Обученную НС также загрузить в репозиторий.

Требования

  • Язык реализации python3.7+
  • Использование FastAPI. (Django крайне не желателен для решения данной задачи)
  • Иной стек технологий и библиотек произвольный
  • Использование классов, ООП
  • Точность распознавания - не менее 95%.
  • Решение оформить как проект на любом git-сервисе
  • Описать в README.md установку, запуск, python и другие зависимости для запуска

Было бы большим плюсом

  • Сохранение обученной НС в ONNX формате
  • Наличие документации на Swagger (или хотя бы Postman)
  • Использование асинхронности
  • Оптимизация полученного решения по скорости/памяти
  • Docker multistage build
  • Написать тесты при помощи pytest/unittest и любой другой на ваш выбор

Дополнительные усложнения

Добавить использование SQL базы данных (например, PostgreSQL) для сохранения результатов распознавания текста на изображении. Если пользователь загружает изображение, которое когда-то уже обрабатывалось, то сервер возвращает данные из БД. Хранить изображения в самой БД не нужно, достаточно работы с файлами и папками.

Оценка решения

Приоритет факторов при оценивании решения:

  • Оптимальность, надежность и отказоустройчивость
  • Архитектура полученного решения
  • Скорость решения поставленной задачи (сколько часов, дней, недель понадобилось для разработчику)
  • Качество и чистота предоставляемого кода на python
  • Количество решенных доп. задачи (из раздела с плюсом и усложнений)

Как начать выполнение тестового задания?

Для выполнения задания лучше всего использовать данный репозиторий как шаблон, для чего просто перейдите по этой ссылке.

Данный репозиторий уже содержит Dockerfile, docker-compose.yml и Makefile для быстрого запуска приложения силами docker (нет необходимости устанавливать python и пр. локально). Всё, что необходимо - это установленные локально docker и docker-compose. После клонирования репозитория просто выполните docker-compose up -d и/или натравите PyCharm на docker-compose - и можно приступать к написанию полезного кода.

Результат выполнения

  • Ссылку на репозиторий с вашей реализацией необходимо отправить нашему HR или TeamLead, от которого вы получили ссылку на данный репозиторий.

  • Приложение должно успешно запускаться после выполнения:

$ git clone ...
$ make build
$ docker-compose up -d
$ docker-compose run --rm app ./app
  • Проходить все тесты (при их наличии).

Если для запуска приожения потребуется другой набор команд - обязательно отразите это в файле README.md вашего репозитория.

Если в процессе выполнения у вас возникнут какие-либо неразрешимые вопросы - создайте [соответствующий issue][link_create_issue] в данном репозитории. На вопросы касательно деталей реализации ("А лучше так и так?") - вероятнее всего вы получите ответ "Как вы посчитаете правильнее".

About

Тестовое задание разработчика нейросетей Python в команду ООО "ИНФО СФЕРА"

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published