Как я делаю OCR

в 11:17, , рубрики: ocr, машинное обучение, оптическое распознавание символов, разметка данных, распознавание текста

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

Современные решения OCR насколько мне известно в большинстве случаев состоят из двух компонентов, детектирование текста и последующее распознавание.

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

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

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

Как я делаю OCR - 1

На каком то этапе разметки я натренировал в keras сетку DBNet, законвертил её в TensorFlow Lite, и дело пошло в разы быстрей, в полуавтоматическом режиме, теперь приходилось больше корректировать.

В течении нескольких месяцев в свободное время я собирал и размечал изображения.

В итоге удалось собрать и разметить 19 230 изображений содержащих преимущественно латинский и русский текст, а так же немного на китайском.

Как я делаю OCR - 2

Используя данный датасет я натренировал в Keras выше указанную DBNet сеть на основе ResNet50V2, результат детектирования после месячной тренировки на одной GeForce RTX 2060 Ghost 12GB выглядит следующим образом.

Как я делаю OCR - 3

Похоже пора переходить ко второму этапу, распознавание текста.

А для тех кто не хочет собирать данные, вы можете использовать мой датасет.

Успехов в машинном обучении!

Автор: Игорь Зорков

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js