Skip to content

off line handwritten text recognition using DL4J and OpenCV libs

Notifications You must be signed in to change notification settings

alarxx/Handwriting-Recognition

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 

Repository files navigation

Handwriting-Recognition

Разработка приложения для распознавания рукописного текста наказахском языке.

About

School research project focusing on the development of an application for recognising handwritten text written in Kazakh.

The project's main stack was Java development for Android and used DL4J, OpenCV. A standard neural network representing non-linear logistic regression was developed from scratch.

The evolution of the project is to abstract away from the specific problem and develop tensors and operations on them for machine learning: Tensor-Library.

Demonstration

WhatsApp.Video.2024-02-08.at.18.19.24_f3674335.mp4
video_2024-02-08_18-38-37.mp4

Documents

Presentation

Paper

References

  • Прохоренок, Н. А. (2018). OpenCV и Java. Обработка изображений и компьютерное зрение. БХВ-Петербург.
  • Rashid, T. (2016). Make Your own neural network. CreateSpace Independent Publishing Platform.
  • Patterson, J., & Gibson, A. (2017). Deep learning: A practitioner’s approach (First edition). O’Reilly.
  • Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep learning. The MIT press.

Results

Ru: Диплом первой степени республиканского конкурса научных проектов по общеобразовательным предметам.

Eng: First degree diploma of the republican competition of scientific projects in general education subjects.

гос_проект _page-0001

Выпуски 19/03/2021

photo_2024-02-09_15-46-34

Телеканал 24kz (Youtube). (27 Jul 2021). Рукописное сделает печатным | Hi-Tech

ПАВЛОДАРСКИЕ РАЗРАБОТЧИКИ - ЛУЧШИЕ В РЕСПУБЛИКЕ

Республикалық ғылыми жобалар конкурсының қорытындысы

https://khabar.kz/ru/news/nauka-i-obrazovanie/item/131059-shkolnik-razrabotal-unikalnoe-prilozhenie-po-raspoznavaniyu-kazakhskogo-rukopisnogo-teksta

Description 02/2021

Программа написана на Java, с использованием открытых библиотек OpenCV и DL4J, под android, не составляет труда перенести ее на другие платформы. На разработку ушло 2 месяца. Изначально я писал на Java полносвязную искусственную нейронную сеть с нуля, и я написал, но скорость обучения и прогнозирования медленнее библиотеки DL4J. Мне были интересны нейронные сети и интересны до сих пор. Тема проекта была выбрана при обсуждении направления проекта с научным консультантом Дарией Болатовной. Изначально было умение программировать, чему я научился, изучая литературу, и желание сделать что-нибудь из области искусственного интеллекта.

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

Проблема программы в том, что каждая буква должна быть написана раздельно, а так обычно не пишут. Я думаю, что можно объединить технологию рукописного ввода и рекуррентные нейронные сети с долгой краткосрочной памятью и, тем самым, распознавать непрерывный рукописный текст, написанный любым почерком.

Technical Description 02/2021

                      Off line handwritten text recognition using DL4J and OpenCV libs

Off line подразумевает, что слово сегментируется на буквы, эти буквы проходят через нейронку и получается криво предсказанное слово. On line - то как работает рукописный ввод. Анализ векторизованных каракуль человека. То есть там, наверное, используется рекуррентная нейронная сетьможет быть обычный алгоритм k-ближайших соседей. В этом случае нужна база ВСЕХ слов.

  1. Первая Activity - меню (StartButton.java), просто запускает камеру Activity (WordRecActivity)

  2. WordRecActivity. Наверное, я переименую этот класс "CameraActivity". Показывает на экране вид с задней камеры обводя прямоугольниками объекты похожие на слова, должен слова....

  3. SelectActivity - основной класс распознавания.

SelectActivity запускает SelectScreen где можно выбрать именно те слова, которые надо распознать, перевести в печатный. 

После того как выбрали и нажали на кнопочку "перевести в текст" в этом же классе обрабатываются эти слова.

Обработка выбранных слов: сортируем слова слева направо (можно добавить и по высоте);

находим буквы в слове (просто проводим контуры слова через morphologyEx и выбираем непрерывные контуры); дальше копируем эти прямоугольные области(буквы) и передаем нейронке эти картинки в том виде на котором она обучалась, в этом случае на черно-белых, то есть значения равны либо 1-му, либо 0-ю; Дальше соединяем эти предсказанные буквы слева направо и получаем слово.

Слова передаются в RecognizedScreen где можно делать с ними все что угодно. Так же я добавил казахский словарь слов из которого находятся наиболее похожие слова.

About

off line handwritten text recognition using DL4J and OpenCV libs

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages