Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 

Repository files navigation

Lab_TextRec

Background image

Лабораторная работа по распознаванию печатного текста.

Введение. Цель проекта.

Этот простой демонстрационный проект предназначен для обучения и постижения основ обработки изображений и простейшей логистической регресиии. С помощью этого проекта вы можете познакомиться с такими основными элементами технологии распознавания образов, как выделение характерных особенностей (image features) и построение классификатора. Рыночная ниша проекта Это простой демонстрационный проект, созданный в целях обучения. Он никаким образом не является конкурирующим с комерческими системамми распознавания текстов и других образов. Предназначение проекта - заглянуть "под капот" и понять, как работает распознавание шаг за шагом.

Сравнение с аналогами

Продукт Стоимость Русские символы Латинские символы Цифры Учет регистра
Abby Fine Reader $$$ + + + +
OCR Cunei form $$$ + + + +
Lab_TextRec бесплатно + - - -

Требования к аппаратуре

Настольный компьютер, процессор не хуже Intel Core i7, оперативная память не менее чем 4 Гб. Графическая видео-карта не хуже NVidia GForce GTX 780Ti. Проект не имеет особенных, специфических требований к аппаратуре. Все вычисления производятся на центральном процессоре, поэтому критичным фактором для общей призводительности приложения является частота и количество ядер центрального процессора, а не технология, применяемая в GPU. В этом проекте нет GPU вычислений.

Требования к программному обеспечению

На настольном компьютере или лаптопе должна быть установлена операционная система Windows 10. Точная версия должна быть не ниже чем 10.0.14393. Приложение было протестирвано на указанной версии операционной системы. Скорей всего, приложение будет работать на более старших версиях Windows. Работа на более младших версиях не гарантируется.

Средства разработки программного обеспечения

Для сборки проекта необходимо, чтобы на компьютере были установлены:

  • Microsof Visual Studio 2015 версия 4.0.25431.01 Update 3
  • Microsoft .NET Framework версия 4.6.01586
  • QT версия 5.7

Характеристики продукта

Расход памяти максимальный расход требуемой памяти равен примерно 4 000 000 000 байт и может быть вычислен как XX x YY x ZZ, где XX - размер изображения в пикселях по горизонтали , YY - размер изображения в пикселях по вертикали, ZZ - коэффициент, равный 24 (используется 6 промежуточных изображений, формат пикселя - 4 байта, ARGB)

Производительность Приложение работает со скоростью не ниже чем 30 кадров в секунду для входного изображения размером 1024 x 600 пикселей.

Надежность Приложение обеспечивает примерно 95% точности распознавания текста. Эти результаты получены на синтетических тестах, прилагаемых к приложению.

Формат входных данных

Приложение принимает на вход графические файлы в формате JPEG. Более подробно о формате JPEG прочитать тут. Так как это - учебный проект, то для простоты (что не ограничивает общности подхода) установлено ограничение на размер входнызх изображений: 1024 x 600.

Формат выходных данных

Выходными данными являются текстовые файлы в формате XML, тэги которого имеют следующий смысл:

  • xMin Минимальная координата х охватывающего символ прямоугольника
  • yMin Минимальная координата y охватывающего символ прямоугольника
  • xMax Максимальная координата x охватывающего символ прямоугольника
  • yMax Максимальная координата y охватывающего символ прямоугольника
  • color Номер цвета, использующися при алгоритме заливки символов разными цветами для того, чтобы отделить каждый символ индивидуально
  • letterCode Номер символа с таблице символов UTF-8

Установка продукта

Продукт не требует никакой специальной процедуры установки. После сборки проекта с помощью MS Visual Studio 2015 на выходе получается запускаемый EXE файл. Для установки продукта, скопируйте на локальный диск репозиторий Github полностью. При дальнейшем улучшении продукта возможно создание специальной устрановочной процедуры, позволяющей пользователю выбрать опции установки через предоставляемый интерфейс пользователя.

Запуск продукта

Приложение может быть запущено в нескольких режимах. Каждому режиму соответствует свой ключ, передаваемый приложению через командную строку

Ключ Режим
-e Редактирование
-f Создание каталога изображений символов
-d Создание дескрипторов символов и обучение модели
-p Предсказание(распознавание)

Изобржаниия для распознавания должны быть выложены в папку project/data и называться img_0000.jpg, img_0001.jpg, ...

Описание интерфейса пользователя

Приложение поставляется с простейшим интерфейсом командной строки. Формат запуска приложения: app.exe FileName, где FileName - имя файла с изображением, которое требуется распознать. Внутри приложения можно пользоваться клавишами:

  • Стрелка вправо: следующее избражение
  • Стрелка влево: предыдущее изображение

Описание API библиотеки

Приложение представляет собой законченное standalone приложение и не предполагает наличия внешнего интерфейса (это не библиотека). Тем не менее, внутренняя реализация основывается на методе Predictor::performPrediction, в котором используются следующие аргументы:

  • Raster* Входной изображение (в растеризованной форме)
  • Model* (Модель предсказания, обученная заранее)
  • RectSet& (Выходной набор прямоугольников с 2d координатами и распознанным символом)

Детали реализации

Цикл "жизни" проекта можно представить следующими стадиями:

  • Редактирование разметки охватывающих символы прямоугольников и назначение кодов символов (подготовка обучающего набора)
  • Создание каталога изображений, в каждом из которых есть только один символ (подготовка обучающего набора)
  • Получение дескрипторов каждого символа из обучавющего набора и построение модели предсказания
  • Использование модели предсказания на входном изображении, содержащем неизвестные символы

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

  • Перевод пиксельного формата изображения из формата ARGB в формат Greyscale (8 байт на пиксель)
  • Фильтрация изображения методом Гаусса с небольшим радиусом (2 пикселя) и равномерным смазыванием. На этом этапе удаляются мелкие артифакты изображения
  • Адаптивная бинаризация смазанного на предыдущем этапе изображения с поомощью метода Отсу с дальнейшей линейной интерполяцией барьерных значенией
  • Выделение зон связности путем применения алгоритма Flood Fill.
  • Отбрасывание слишком "крупных" и "не-квадратных" зон связности, в которых с очень большой вероятность не может быть обнаружен символ
  • Извлечение 8-ми градиентных признаков и 2-х суммарных признаков. Эти 10 чисел являются вектором - дескриптором прямоугольника
  • Применение обученной нейронной сети для 10 входов (вектор дескрипторов) и получение предсказания (классификатор)

Тестирование. Классы тестов

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

  • Охватываюий прямоугольник (4 целых числа) - выделяется автоматически приложением, пользователь может указать любой прямоугольник и назначить ему символ
  • Символ - целое число. Пользователь назначает символ, который "нарисован" в выделенном охватывающем прямоугольнике

Ссылки и литература

  1. P.Frey, D.Slate, "Letter Recognition Using Holland-Style Adaptive Classifiers", Machine Learning, 1991. PDF
  2. Y.Chung, M.Wong, "Handwritten Character Recognition By Fourier Descriptors and Neural Network", IEEE, 1997. PDF

About

Лабораторная работа по распознаванию печатного текста.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors