Целью данного проекта является разработка микросервиса, который:
- Определяет пространственное положение документа (медицинская справка) на основе прогноза модели ML.
- Вертикально ориентирует документ для правильного отображения.
- Сохраняет обработанный документ и возвращает путь к файлу и URL-адрес.
Микросервис будет реализован как приложение на FastAPI и смонтирован в Docker.
Принимает post запрос response =requests.post(url_base, json=data)
url_base='http://127.0.0.1:8000/forms/'
data = {"path": path} Если path - это URL или путь к файлам с изображениями, то будет возвращен следующий ответ:
{'post_request':data.path, // path запроса
'save_path':save_path, // путь
'save_url':save_url, //url
'pred':pred.item() // скаляр предсказания ((Вертикально- 0, 90'- 1, 180'- 2, 270'- 3))
}
Если введены некорректные данные, будет возвращено соответстующее исключение.
host="0.0.0.0", port=8000 настройки сервера.
-
images
- папка с файлами изображений документов, предоставленных заказчиком;
Примечание: Папка не включена в репозиторий. Создайте её вручную и добавьте файлы сфотографиями документов;data
- папка созданная в проектеwork_1.ipynb
, содержащая набор; отобранных изображений, каждое из которых соориентировано на( 0, 90 180,270) градусов, также к названию был добавлен префикс (_0 ,_1 ,_2, _3) , характеризующий положение документа;
-
input_images
- папка для хранения исходных документов, которая будет смонтирована в docker; что позволит передавать документы по пути для дальнейшей обработки. -
transformed_images
- папка для хранения обработанных с учетом прогноза документов,
документы будут доступны как по пути так и по url (смонтированы статические файлы); -
models
в папке сохранена обученная модель и .csv файлы, с разметками для данных вimages
,data
. Подробности можно найти в jupyter проекте work_1.ipynb; -
'work_1.ipynb' проект, целью которого является создание обученной модели для прогнозирования положения документа. Все этапы работы подробно прокомментированы;
-
'main.py' скрипт реализующий микросервис как приложение FastApi, есть doctring;
-
requirements.txt - зависимости для docker;
-
requirements_jupyter.txt - зависимости для корректной работы work_1.ipynb;
-
request_test.ry -скрипт позволяющий оценить работу приложения:
- формирует окно для получения пути или url;
- принимает post запрос endpoint - @app.post('/forms/');
- печатает документ по его url.
-
request_post.ry - тестовый post запрос;
-
'Dockerfile' - инструкция для сборки образа docker;
-
'Makefile' - управление сборкой образа и создания и запуска контенера.
make build - Cборка образа.
make run - Cоздание и запуск контенера.
Папки input_images
, transformed_images
смонтированы внутри контейнера.
Контейнер после остановки будет удален.