README.md

Распознавание рукописного текста

  В данном проекте создано web-приложение, которое распознает рукописный текст на кириллице или латинице. Приложение использует созданную и обученную в рамках проекта сверточно рекуррентную нейронную сеть с 7 298 263 параметрами по алгоритму CTC (Connectionist Temporal Classification). Проект является исследовательским масштабируемым прототипом. В настоящее время в нем не используется декодирование beamsearch (wordbeamsearch) с использованием словарей для коррекции текста при распознавании.

  Данные для обучения взяты из открытых источников:

1) Handwritten Kazakh and Russian (HKR) database for text recognition (набор данных не содержит изображений рукописных цифр)
2) IAM Words

  Здесь можно посмотреть работу Web-приложения данного проекта (скорость работы приложения невелика, т.к.приложение развернуто на собственном “домашнем” сервере).

  Проект создан без коммерческой выгоды. Он не содержит в себе затрат каких-либо материальных средств кроме затрат на потребляемую нетбуком электроэнергию и личного времени разработчика. Проект носит исследовательский характер и не преследует цель разработки готового программного продукта. Он был создан для тренировки навыков программирования, методов обработки и аугментации данных, создания и исследования различных моделей нейронных сетей глубокого обучения, проверки некоторых инструментов и платформ разработки ПО в области ИИ.

  Проект включает в себя следующее.

1. Создание обучающих датасетов на латинице и кириллице из упомянутых выше источников. Сначала аннотированные базы изображений рукописного текста были разделены на тестовую часть и тренировочно-валидационную. Из тренировочно-валидационной части слов и словосочетаний при помощи аугментации были созданы по 4-6 дополнительных варианта каждого изображения с измененными яркостью/контрастностью и проекционными искажениями. Затем все изображения были перемешаны и объединены в изображения предложений по 3-10 объектов (слов, словосочетаний или символов) в каждом предложении с добавлением пробелов между объектами. В результате получились два набора данных для обучения, содержащие порядка 350000 аннотированных изображений на кириллице и латинице каждый.

2. Создание и обучение модели нейронной сети с архитектурой CNN-RNN. Создание и обучение проводилось в бесплатной версии Google Colab с использованием TPU + 35 Gb RAM (лайфхак), либо GPU T4 15Gb VRAM + 12 GB ОЗУ. На тестовом датасете средняя edit distance порядка 3,5 на, в среднем, 36,5 символов.

3. Созданы фронтэнд и бэкенд вэб-приложения, которое впоследствиии развернуто на хостинге. Фронтенд включает в себя код, написанный GPT-3.5 и GPT-4. Бэкенд содержит следующие модули:

1) код серверной части вэб-приложения;

2) модуль детектирования текста «craft text detector»;

3) модуль сортировки детектированных текстовых изображений;

4) модуль преобразования изображения в серо-белое с нахождением оптимального порога и удаления «шума»;

5) модуль изменения толщины текстовых линий перед выполнением подгонки размеров текстовых изображений;

6) модуль подгонки размеров текстовых изображений под заданный размер на входе в нейронную сеть;

7) обученные модели для распознавания рукописного текста, написанного на кириллице и латинице;

8) модуль сборки распознанных текстовых изображений в файл текста.

Принцип работы приложения

Вэб-приложение позволяет загрузить готовое изображение или сфотографировать рукописный текст. Далее приложение предлагает выделить на изображении область с рукописным текстом. В случае прекционных искажений текста для их устранения приложение выполняет четырехточечное преобразование перспективы, придавая изображению вид сканированного документа. Затем преобразованное изображение текста предлагается распознать. Результат распознавания, который можно скачать в виде текстового файла, выводится в окно приложения.

Внешний вид приложения

Список информационных источников

Цитаты

  1. @article{nurseitov2021handwritten, title={Handwritten Kazakh and Russian (HKR) database for text recognition}, author={Nurseitov, Daniyar and Bostanbekov, Kairat and Kurmankhojayev, Daniyar and Alimova, Anel and Abdallah, Abdelrahman and Tolegenov, Rassul}, journal=, pages={1–23}, year={2021}, publisher= }
  2. @article{Abdallah_2020, title=, volume={6}, ISSN={2313-433X}, url={http://dx.doi.org/10.3390/jimaging6120141}, DOI={10.3390/jimaging6120141}, number={12}, journal=, publisher=, author={Abdallah, Abdelrahman and Hamada, Mohamed and Nurseitov, Daniyar}, year={2020}, month=, pages={141} }
  3. @article{DaniyarNurseitov2020, author = {{Daniyar Nurseitov, Kairat Bostanbekov, Maksat Kanatov, Anel Alimova, Abdelrahman Abdallah}, Galymzhan Abdimanap}, doi = {10.25046/aj0505114}, file = {:D$\backslash$:/ASTESJ/ASTESJ{_}0505114.pdf:pdf}, journal = {Advances in Science, Technology and Engineering Systems Journal}, keywords = {CNN,CTC,Convolutional neural networks,RNN,Recurrent neural networks}, number = {5}, pages = {934–943}, title = {}, volume = {5}, year = {2020} }
  4. @article{hannun2017sequence, author = {Hannun, Awni}, title = , journal = , year = {2017}, note = {https://distill.pub/2017/ctc}, doi = {10.23915/distill.00008} }
Описание

Web-приложение по распознаванию рукописного текста с использованием глубокого обучения нейронной сети

Конвейеры
0 успешных
0 с ошибкой