В рамках данного проекта должен быть реализован сервис, предоставляющий возможности для вычисления значения арифметического выражения, содержащего цифры и операторы сложения, вычитания, умножения и целочисленного деления. Сервис должен определить по выражению, является ли оно корректным, а также вычислить его значение, если оно является корректным.
Использование сервиса должно осуществляться через web-приложение. Приложение должно поддерживать два режима работы: основной и с компьютерным зрением.
- В основном режиме пользователь вводит формулу в текстовое поле, после чего нажимает кнопку “Submit expression”, после чего приложение осуществляет разбор и вычисление выражения.
- В режиме с компьютерным зрением пользователь загружает картинку, на которой черным цветом на белом фоне записано арифметическое выражение, затем нажимает кнопку “Submit picture”. Приложение осуществляет сегментацию отдельных символов в выражении, а также распознавание каждого отдельно взятого символа, после чего формирует строку, являющуюся результатом распознавания. Эта строка подставляется в форму поле для ввода текста, предоставляя возможность пользователю исправить возможность исправить ошибки, возникшие при распознавании символов изображения. Затем пользователь нажимает на кнопку “Submit expression”, осуществляя вычисление значения выражения.
Для того, чтобы запустить данное приложение, необходимо скачать данный репозиторий
git clone https://github.com/ADKosm/JavaML.git
cd JavaML
После чего собрать и запустить сервис
./gradlew runMain
Приложение запустится и использованием предобученной модели.
Для проверки работоспособности, после появления записи Start server at http://localhost:4567
, необходимо зайти по адресcy
http://localhost:4567
. После чего можно попробовать ввести любое корректное математическое выражение, например:
1+2
(34+54)/(5-3)*(24+(2*9+3))-15*2*3
Также можно попробовать загрузить картинку с математическим выражением, например example1.jpg
или example2.jpg
, которые находятся в папке examples
Для того, чтобы заново обучить модель, необходимо удалить папку model
и перезапустить приложение. В этом случае оно скачает стандартный датасет и произведет обучение на нем.
Для того, чтобы обучить модель на своем датасете, создайте папку dataset
и положите в ее свой датасет, после чего перезагрузите сервис