OCR и штрихкоды

ТЕХНОЛОГИИ

  • Печать (генерация изображений) штриховых кодов
  • Обнаружение штриховых кодов
  • Распознавание штриховых кодов
  • Разработка новых типов штриховых кодов

Технологии, продукты и проекты ИИТ в области OCR и штрихкодов

Оптическое распознавание символов (OCR)

Задача распознавания текстовой информации при переводе печатного и рукописного текста в электронную форму является одной из важнейших составляющих любого проекта, имеющего целью автоматизацию документооборота или внедрение безбумажных технологий. Вместе с тем эта задача является одной из наиболее сложных и наукоемких задач полностью автоматического анализа изображений. Даже человек, читающий рукописный текст, в отрыве от контекста, делает в среднем около 4% ошибок. Между тем, в наиболее ответственных приложениях OCR необходимо обеспечивать более высокую надежность распознавания (свыше 99%) даже при плохом качестве печати и оцифровки исходного текста.

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

Типовые проблемы, связанные с распознаванием символов

Имеется ряд существенных проблем, связанных с распознаванием рукописных и печатных символов. Наиболее важные из них следующие:

  1. разнообразие форм начертания символов;
  2. искажение изображений символов;
  3. вариации размеров и масштаба символов.

Каждый отдельный символ может быть написан различными стандартными шрифтами, например (Times, Gothic, Elite, Courier, Orator), а также — множеством нестандартных шрифтов, используемых в различных предметных областях. При этом различные символы могут обладать сходными очертаниями. Например, «U» и «V», «S» и «5″, «Z» и «2″, «G» и «6″.

Искажения цифровых изображений текстовых символов могут быть вызваны:

  1. шумами печати, в частности, непропечаткой (разрывами слитных черт символов), «слипанием» соседних символов, пятнами и ложными точками на фоне вблизи символов и т. п.;
  2. смещением символов или частей символов относительно их ожидаемого положения в строке;
  3. изменением наклона символов;
  4. искажением формы символа за счет оцифровки изображения с «грубым» дискретом;
  5. эффектами освещения (тени, блики и т. п.) при съемке видеокамерой.

Существенным является и влияние исходного масштаба печати. В принятой терминологии масштаб 1012 или 17 означает, что в дюйме строки помещаются 1012 или 17 символов. При этом, например, символы масштаба 10 обычно крупнее и шире символа масштаба 12.

Система оптического распознавания текста (OCR), должна выделять на цифровом изображении текстовые области, выделять в них отдельные строки, затем — отдельные символы, распознавать эти символы и при этом быть нечувствительной (устойчивой) по отношению к способу верстки, расстоянию между строками и другим параметрам печати.

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

Системы OCR состоят из следующих основных блоков, предполагающих аппаратную или программную реализацию:

  1. блок сегментации (локализации и выделения) элементов текста;
  2. блок предобработки изображения;
  3. блок выделения признаков;
  4. блок распознавания символов;
  5. блок постобработки результатов распознавания.

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

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

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

Распознавание символов происходит в процессе сравнения выделенных характерных признаков с эталонными наборами и структурами признаков, формируемыми и запоминаемыми в процессе обучения системы на эталонных и/или реальных примерах текстовых символов.

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

Методы предобработки и сегментации изображений текстовых символов

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

Под сглаживанием в данном случае понимается большая группа процедур обработки изображений, многие из которых были рассмотрены в главе 3 данной книги. В частности, широко используются морфологические операторы заполнения и утонченияЗаполнение устраняет небольшие разрывы и пробелы. Утончениепредставляет собой процесс уменьшения толщины линии, в которой на каждом шаге области размером в несколько пикселов ставится в соответствие только один пиксел «утонченной линии». Морфологический способ реализации подобных операций на базе операторов расширения и сжатия Серра был описан в главе 3.2.

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

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

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

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

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

Признаки символов, используемые для автоматического распознавания текста

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

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

Задача обнаружения и считывания штриховых кодов на изображениях

Штриховые коды — самый распространенный на сегодняшний день тип символьных идентификаторов товаров и других предметов, предназначенных для автоматического считывания. Автоматически считываемые идентификаторы необходимы для эффективного функционирования систем автоматизированного складского учета, автоматизированных систем, используемых в торговле, автоматизированных систем контроля и инспекции на производстве. Вы, несомненно, неоднократно сталкивались со считывателями штриховых кодов в магазинах и супермаркетах, где специализированные лазерные считыватели у касс успешно считывают штриховые коды EAN, используемые в торговле для идентификации товаров. Такие считыватели с лазерной подсветкой по сути анализируют не изображение, а линейный профиль вдоль одной подсвеченной линии (подобный пример мы рассматривали в разделе 3.2). Однако и в торговле, и на производстве в последние годы все чаще используются не только линейные считыватели, но и двумерные считыватели на основе CCD матриц, а также программное обеспечение для офисных и промышленных компьютеров, изображения в которые вводятся при помощи сканеров и видеокамер. Эта тенденция определяется следующими основными причинами:

1) Штриховые коды в настоящее время бывают не только традиционного линейного типа (прямоугольная область, заполненная вертикальными черными и белыми штрихами различной толщины). В последние десятилетия получили широкое распространение и так называемые двумерные коды, которые позволяют на той же площади разместить существенно больше информации, причем информация в них распределена таким образом, что ее нельзя прочитать, просканировав только одну линию (см. ниже описание нескольких основных типов двумерных кодов). Например, микросхемы на компьютерном производстве в настоящее время, как правило, помечают двумерным штриховым кодом Data Matrix. Для считывания двумерных кодов необходимы считыватели, получающие и анализирующие двумерные изображения.

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

3) В автоматизированных системах, включающих человека, попадание сканирующей линии на штриховой код обеспечивает оператор (например, кассир в супермаркете). В полностью автоматических системах (например, при считывании штриховых кодов на изделиях, движущихся по конвейеру) возникает задача автоматического обнаружения заранее не известного местоположения штрихового кода, его размера, типа и ориентации (угла наклона). Эта задача также может быть решена только средствами анализа двумерного изображения.

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

Одномерные штриховые коды

В настоящее время существует около 200 видов штриховых символик линейных, или одномерных, кодов. Самые популярные штриховые коды носят следующие: Codabar; «interleaved 2 of 5″; код 39; код 93; код 128; UPC-E; EAN-8; EAN-13.

Рассмотрим штриховые коды, получившие наиболее широкое распространение.

Штриховой код Codabar

Дискретный, семиэлементный штриховой код, содержащий цифры 09, знаки «+», » — «, «:», «/», «.», знак доллара и четыре строба СТАРТ/СТОП. Буквы штрихового кода Codabar ограничены слева и справа. Изображение буквы состоит из четырех штрихов и трех пробелов. В специальных знаках три широких штриха, а в стробах СТАРТ/СТОП — два широких пробела и один широкий штрих (рис. 5 ).

Штриховой код 2 of 5

Буквы кода, обозначающие цифры от 0 до 9, содержат пять штрихов, два из которых широкие, а три — узкие. Пятый штрих изображения буква — дополнительный, для контроля по четности. Помимо цифр, данный код имеет стробы СТАРТ и СТОП, в изображении которых используются всего три штриха, два из них — широкие. Существует разновидность кода «2 of 5″, в которой используется прямое и инвертированное изображение буква. Пространство между штрихами заполняется разновеликими пробелами, которые также являются носителями информации. Такой код получил название «interleaved 2 of 5″. Буквы, находящиеся на нечетных позициях, представляются штрихами, а на четных позициях — пробелами.

Код «2 of 5″ является дискретным и самопроверяющимся, то есть одиночные ошибки считывания обнаруживаются автоматически. Недостатком кода «2 of 5″ является относительно низкая плотность штрихов и пробелов и отсутствие возможности кодирования алфавитной информации (рис. 6 ). Этот код за рубежом используется для сортировки и учета товаров и изделий на складах, нумерации авиабилетов и т. п.

7-2-5

Штриховой код Codabar

7-2-6

Штриховой код «2 of 5″

 

Штриховой код 39

Наименование данного кода связано со структурой изображения букв «3 из 9″, где три элемента буквы (два штриха и один пробел) из девяти являются широкими, а остальные шесть — узкими. Каждая буква кода 39 представлена пятью штрихами и четырьмя пробелами. По сравнению с кодом 2 of 5 число вариантов изображения буква увеличивается в четыре раза и позволяет отобразить 40 различных букв. Предусмотрены четыре дополнительных знака ($, «, +, %). Код 39 является дискретным, контролируемым. Достоинством этого кода является его очень высокая надежность, которая может быть увеличена добавлением в символ контрольной буквы (рис. 7 ). Этот код широко используется в больницах, библиотеках, государственных учреждениях, на производстве.

 

7-2-7Штриховой код 39

 

7-2-8Штриховой код 128

 

Штриховой код 128

Обеспечивает возможность кодирования 128 различных букв. Код 128 принадлежит к той же группе, что и рассматриваемые далее коды EAN и UPC. В коде 128 первый элемент изображаемой буквы представляется штрихом, а последний — пробелом. Код 128 является непрерывным и неконтролируемым кодом (рис. 8 ). Предусматривается кодирование 107 различных букв (21 буква в резерве).

 

 

Штриховые коды UPC и EAN

Получили наиболее широкое распространение для кодирования товаров в производстве и торговле. Первый из них представляет стандарт кодирования, принятый в США, второй — в Европе. Сходство кодов UPC и EAN заключается в том, что в них используется для кодирования один и тот же набор букв: цифры от 0 до 9 и пять вспомогательных символов. Изображение буквы содержит два штриха и два пробела. Длина буквы, отображающей цифру, равна 7 модулям. Вспомогательные буквы имеют три типоразмера — 3, 5 и 6 модулей (рис. 9 ). Обычно снизу штрихового кода печатается его цифровое значение для визуального контроля. Значение тринадцатой позиции символа определяется последовательностью сочетаний букв четного и нечетного паритетов, расположенных в левой части. Наибольшее распространение в торговле за рубежом получили тринадцати- и восьмиразрядные коды EAN. Эти штриховые коды относятся к непрерывным, контролируемым кодам.

7-2-9

Символ штрихового кода EAN

 

 

Символики сокращенной размерности (Reduced Space Symbology, или RSS)

Относительно новое семейство линейных штриховых кодов, характеризующееся малыми размерами штрихового кода (рис. 10 — 13 ) по сравнению с кодами EAN/UPC. Код RSS предназначен специально для совместного использования с так называемыми композитнымиштриховыми кодами. Разработка RSS и композитной символики вызвана необходимостью маркировки малоразмерных объектов, на которые штриховой код EAN/UPC стандартного размера нанести затруднительно, а иногда и вовсе невозможно.

 

7-2-10Штриховой код сокращенной размерности RSS-14

7-2-11

Штриховой код сокращенной размерности — многострочный RSS-14

7-2-12

Штриховой код сокращенной размерности — усеченный RSS

 

7-2-13Штриховой код сокращенной размерности — расширенный многострочный RSS

 

Двумерные штриховые коды

Линейные штриховые коды были созданы и традиционно использовались как машиночитаемые идентификаторы на изделиях. При этом каждая этикетка содержала уникальный серийный номер, закодированный в виде черных и белых полос, который служил ключом в базе данных, содержащей более детальную информацию. Но вскоре выяснилось, что многие пользователи нуждаются в более емких штриховых кодах, самостоятельно выполняющих роль портативной базы данных, а не только ключа в ней. Двумерный код (или 2D-код) - наиболее общее наименование для всего этого класса символик. Названия стековая символика (stacked symbology) или многорядный код (multi-row code) более точно отражают сущность серии кодов, в которых данные кодируются в виде нескольких строчек обычных одномерных штриховых кодов. Название матричный код (Matrix code) применяется для обозначения двумерных кодов, основанных на расположении черных элементов внутри матрицы. Каждый черный элемент имеет одинаковый размер, а позиция элемента кодирует данные.

Линейный штриховой код имеет «вертикальную избыточность», означающую, что одна и та же информация повторяется по вертикали. Вертикальная избыточность позволяет штриховому коду, имеющему дефекты печати (например, пятна или просветы) сохранять читаемость. Двумерный код содержит информацию как по горизонтали, так и по вертикали. Поскольку оба направления содержат информацию, теряется возможность использования вертикальной избыточности (заметим, что в двумерных стековых кодах присутствует небольшая вертикальная избыточность). Борьба с ошибками в двумерных кодах обеспечивается за счет использования специальных контрольных сумм, позволяющих гарантировать достоверность вводимой информации. Как правило, борьба с ошибками основывается на применении кода Рида — Соломона.

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

На сегодня разработано более 20 различных символик двумерных штриховых кодов, которые отличаются формой и структурой символов, формой и возможными цветами элементов, методами упаковки информации в символах, методами и степенью защиты информации от искажений изображений кодов на носителях. Ниже описаны два наиболее популярных типа двумерных кодов: стековая символика PDF417 и матричная символика Datamatrix.

Стековый код PDF417

Стековая символика PDF417 была введена в 1991 году фирмой Symbol Technologies. PDF происходит от сокращения Portable Data File (портативный файл данных), каждая буква символа состоит из 17 модулей, каждый

7-2-14

Символ штрихового кода PDF417

из которых содержит 4 штриха и пробела (отсюда номер 417). Штриховой код открыт для общего пользования. Пример символа стекового кода PDF417 изображен на рис. 14.
Каждый символ кода PDF417 содержит стартовую и стоповую группы штрихов, увеличивающие надежность считывания штрихового кода. Он кодирует до 1850 буквенно-цифровых или 2710 цифровых знаков. Высокая емкость данных позволяет кодировать всю необходимую информацию о человеке, продукте, документе или упаковке. Символику PDF417 рекомендуется использовать в транспортной и автомобильной промышленности, на транспортных этикетках и таможенных документах. PDF417 может кодировать не только текстовые, но и бинарные данные, поэтому им возможно закодировать все, что можно оцифровывать, включая цветные фотографии и отпечатки пальцев. Поэтому PDF417 используется также в системах идентификации личности.

Матричный код Data Matrix

Код Data Matrix от фирмы {CiMatrix} представляет собой двумерный код, разработанный для размещения большого объема информации на ограниченной площади поверхности. Матричный код составляется из темных и светлых ячеек, которые могут быть квадратными (большинство современных матричных кодов), шестиугольными (MaxiCode) или круглыми (как в точечном коде) по форме. Данные кодируются в двоичной форме (обычно темная ячейка соответствует двоичной единице; а светлая ячейка — двоичному нулю), а схема декодирования использует технологии обнаружения и коррекции ошибки для создания избыточности. Матричные коды масштабируются, и их теоретическая информационная емкость в один бит на ячейку дает им б ольшую плотность данных, чем у стековых кодов.

 

7-2-15Символ штрихового кода Data Matrix версии ECC 200

Например, символ кода Data Matrix с размером ячейки (X-размер) в 10 mil (0,25 мм) может закодировать максимум 2000 знаков, занимая около 8 кв. см, по сравнению с 25 кв. см для тех же данных у символа PDF417 с тем же самым X-размером.

Данный штриховой код может масштабироваться от 1-mil плотности до четырнадцатидюймовой площади и имеет теоретическую максимальную плотность до 500 миллионов символов на дюйм. На практике плотность, конечно, ограничивается разрешающей способностью печатающих устройств и сканеров. Код Data Matrix имеет фиксированную степень защиты от ошибок для каждого размера символа кода. Поскольку информация кодируется абсолютной позицией элемента внутри кода, то есть позицией относительно границ кода, код не так чувствителен к дефектам печати, как традиционный штриховой код. Схема кодирования имеет высокий уровень избыточности, данные рассредоточены внутри символа. Это позволяет сохранять читаемость кода при его частичном повреждении или потере части кода. Каждый код имеет измерительные линейки, которые выглядят, как сплошная линия по одному краю символа, и равномерно расположенные квадратные точки одинакового размера по другому краю. Эти линейки используются для определения ориентации и плотности кода.

Существуют две основные версии данной символики. Одна использует сверточное кодирование для коррекции ошибок, которое использовалось в первых версиях кода Data Matrix, эта версия описывается как ECC 000-140. Вторая версия описывается как ECC 200 и использует коды Рида — Соломона для коррекции ошибок. Символы версии ECC 000-140 всегда имеют нечетное количество модулей по каждой стороне квадрата. Символы версии ECC 200 всегда содержат четное число элементов по каждой из сторон. Максимальная емкость символа ECC200 (рис. 15 ) составляет 3116 цифр или 2335 букв в символе, состоящем из 144 модулей.

Наиболее популярными применениями для Data Matrix является маркировка небольших предметов — таких, как электронные элементы и печатные платы электронных приборов. Эти приложения используют способность Data Matrix разместить примерно 50 символов в коде размером 3 мм и тот факт, что код может быть прочитан при 20% контрастности печати. Код читается ПЗС-камерой или ПЗС-сканером.

Более подробную информацию по данному вопросу вы можете найти в Wiki ресурсе «Техническое зрение» в разделе «Обработка документов, распознавание текста и штриховых кодов»