Arithmetical expression computation using computer vision
Техническое задание
В рамках данного проекта должен быть реализован сервис, предоставляющий возможности для вычисления значения арифметического выражения, содержащего цифры и операторы сложения, вычитания, умножения и целочисленного деления. Сервис должен определить по выражению, является ли оно корректным, а также вычислить его значение, если оно является корректным.
Использование сервиса должно осуществляться через 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
и положите в ее свой датасет, после чего перезагрузите сервис