HimeraSearchDB
Carding_EbayThief
triada
CrackerTuch
d-shop
HimeraSearchDB

НОВОСТИ Пробел не так прост как кажется

Bonnie
Оффлайн
Регистрация
12.04.17
Сообщения
19.095
Реакции
107
Репутация
0
Всем привет! Как вы уже знаете, мы в SE занимаемся распознаванием текста (и не только) на разных документах. Сегодня мы хотели бы рассказать еще об одной проблеме при распознавании текста на сложных фонах — о распознавании пробелов. Вообще, мы будем говорить об имени на банковских картах, но для начала пример с «призраком» буквы Ё. Как видите, тут справа от D искажения и фон сформировали достаточно четкую Ё. При этом, если показать эту ячейку отдельно от всего остального, человек (или нейронная сеть) уверенно скажет, что буква есть.

kshorhuhdresxo82etwfeop48r4.png


Как видно на картинке — мы работаем на исходном изображении со сложными фонами, поэтому пробелы наши весьма разнообразны. На них бывают узоры, логотипы, а иногда и текст. Например, VISA или MAESTRO на карточках. И нам интересны именно такие «сложные пробелы», а не просто белые прямоугольники. А в своих системах мы рассматриваем именно отдельно вырезанные прямоугольники символов [1].

А в чем сложность?


Пробел — это символ без особых признаков. На сложных фонах, например, как на изображении, отдельно вырезанный пробел бывает сложно отличить даже человеку.

cilmpyhfrtsmzgsqpve-lu7nuee.png


С другой стороны, по своей сути пробел отличается от остальных символов. Если в имени вместо ASIA распознается ABIA, то есть шанс исправить это пост-обработкой. Но, если там возникнет A IA — вряд ли уже что-то поможет.

Не нами используемые методы


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

0hexkpogxaemkyw8nhv4cmtipsi.png


Всеми любимая бинаризация тут тоже не поможет. Например, вот на такой картинке:

3eulmtd6rgxo3v2pt5gzpv1ithy.png


Итак, как же можно улучшить распознавание?


Раз человеку нужно окружение пробела, чтобы его увидеть, то логично и сети показывать хотя бы два соседних символа. Мы не хотим увеличивать вход распознающей сети, которая, в общем-то, неплохо работает (и многие пробелы распознает). Так что мы заведем еще одну сеть — попроще. Новая сеть будет предсказывать, что на картинке: два пробела, две буквы, пробел и буква или буква и пробел. Соответственно, такая сеть используется вместе с распознающей сетью. На изображении представлены используемые архитектуры: слева — архитектура распознающей сети, справа — архитектура предложенной сети. Распознающая сеть работает на картинке с одним символом, а новая — на картинке двойной ширины, содержащей два соседних символа.

cwlznsllpu9_hhfim166xkcq8x8.png


А протестировать?


Для тестирования у нас было 4320 строк с именами, содержащие 130149 символов, из которых 68246 пробелов. Для начала, у нас есть два метода. Базовый метод: нарежем строку на символы и распознаем каждый символ по отдельности. Новый метод: также нарежем строку символы, найдем все пробелы новой сетью, а оставшиеся символы распознаем обычной. Из таблицы видно, что качество распознавания пробелов, как и общее качество, растет, но качество распознавания букв слегка проседает.


Пробелы

Буквы

Итого

Базовый метод

93.6%

99.8%

96.5%

Новый метод

94.3%

99.6%

96.8%

Однако наша базовая сеть тоже умеет распознавать пробелы (пусть и хуже, чем нам бы хотелось). И мы можем попробовать этим воспользоваться. Посмотрим, на ошибки обоих методов. А также — на качество нового метода на ошибках базового и наоборот.

Для базового метода:


Пробелы

Символы

Итого

Ошибки базового метода

4392

141

4533

Распознано новым методом

44.7%

29.8%

44.3%

Для нового метода:


Пробелы

Символы

Итого

Ошибки базового метода

3893

241

4134

Распознано новым методом

37.6%

58.9%

38.9%

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


Качество

Базовый метод

96.39%

С новой сетью

96.46%

Комбинация методов

97.07%

Заключение


Пробел — большая проблема на пути к 100%-ному качеству распознавания документов =) На примере пробелов отлично видно, как важно смотреть не только на отдельные символы, но и на их сочетания. Однако не стоит сразу хвататься за тяжелую артиллерию и учить гигантские сети, обрабатывающие строки целиком. Иногда достаточно просто еще одной маленькой сети.

Данный пост сделан с использованием материалов доклада с европейской конференции по моделированию ECMS 2015 (Болгария, г. Варна): Sheshkus, A. & Arlazarov, V.L. (2015). Space symbol detection on complex background using visual context.

Список используемых источников
1. Y. S. Chernyshova, A. V. Sheshkus and V. V. Arlazarov, “Two-step CNN framework for text line recognition in camera-captured images,” IEEE Access, vol. 8, pp. 32587-32600, 2020, DOI: 10.1109/ACCESS.2020.2974051.
 
Сверху Снизу