Горячий ветер 2018

Коломенский кайт клуб "Семь ветров" при поддержке Комитета по физической…

Как Валерий Шувалов снег убирал в 2016 году

Руководитель администрации города Валерий Шувалов проверил лично, как происходит расчистка…

В доме красногорского стрелка нашли долговые расписки Рассказова

В доме убийцы нашли черную бухгалтерию, где фигурируют крупные суммы,…

Дальнобойщики против "Платона"

Дальнобойщики бастуют по всей России. «Недовольство растет. Власти это замалчивают».…

«
»

Изготовление пластиковых карт с эмбоссированием. Шрифт на банковских картах


Легко ли распознать информацию на банковской карточке?

Когда мы общаемся с нашими заказчиками, то, будучи специалистами в этой области, активно используем соответствующую терминологию, в частности слово «распознавание». При этом слушающая аудитория, воспитанная на Cuneiform и FineReader, часто вкладывает в этот термин именно задачу сопоставления вырезанного участка изображения некоторому числу (коду символа), которая в наши дни решается нейросетевым подходом и является далеко не первым этапом в задаче распознавания информации. В начале необходимо локализовать карточку на изображении, найти информационные поля, выполнить сегментацию на символы. Каждая перечисленная подзадача с формальной точки зрения является самостоятельной задачей распознавания. И если для обучения нейронных сетей существуют зарекомендовавшие себя подходы и инструменты, то в задачах ориентации и сегментации каждый раз требуется индивидуальный подход. Если вам интересно узнать про подходы, которые мы использовали при решении задачи распознавания банковской карточки, тогда добро пожаловать под кат!

Распознавание данных с кредитной карты одновременно является высокоактуальной и весьма интересной с точки зрения алгоритмов задачей. Хорошо реализованная программа распознавания пластиковых карт может избавить человека от надобности вводить большую часть данных вручную при осуществлении интернет-платежей и платежей в мобильных приложениях. С точки зрения распознавания, банковская карта — это сложный документ стандартного размера (85,6 × 53,98 мм), выполненный на типовом бланке и содержащий определенный набор полей (как обязательных, так и дополнительных): номер карты, имя держателя карты, дата выдачи, срок действия, номер аккаунта, CVV2-код или его аналог. Часть полей находится на лицевой стороне, другая часть — на обратной. И несмотря на то, что для совершения платежной транзацкии требуется указать только номер карты, практически все платежные системы (в качестве проверки подлинности) дополнительно требуют указать имя держателя карты, срок действия и CVV2-код. Сосредоточимся дальше на задаче распознавания информационных полей лицевой стороны карточки (объективно, она в разы сложнее).

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

В качестве первого этапа необходимо найти координаты углов карточки. Так как геометрические характеристики карточки нам известны (все карточки выполнены строго в соответствии с стандартом ISO 781), то для определения четырехугольника карточки воспользуемся алгоритмом поиска и перебора прямых, про который мы уже рассказывали в одной из наших публикаций на Хабре.

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

С точки зрения архитектуры, распознавание трех целевых полей состоит из одних и тех же частей:

  1. Предварительная фильтрация изображения (с целью подавления фона карточки, который бывает удивительно разнообразным).
  2. Поиск зоны (строки) целевого информационного поля.
  3. Сегментация найденной строки на “коробки символов”.
  4. Распознавание найденных “коробок символов” с помощью искусственной нейронной сети (ИНС).
  5. Применение постобработки (использование алгоритма Луна для выявления ошибок распознавания, применение словарей имен и фамилий, проверка даты на валидность и т.п.).
Хотя состав шагов распознавания один и тот же, сложность сильно разнится. Легче всего распознать номер карты (не даром существует достаточное количество SDK для различных мобильных платформ, в том числе и выложенных в свободном доступе) в силу целого набора причин:
  • номер карточки содержит только цифры;
  • формат номера строго определен для каждого типа платежной карты;
  • геометрическое положение номера не сильно “гуляет” вне зависимости от производителя;
  • существует алгоритм Луна, позволяющий проверить правильность распознавания номера.
Сложнее дело обстоит с двумя оставшимися полями: срок действия и имя держателя карты. В этой статье подробнее остановимся на процедуре распознавания срока действия карты (распознавание имени выполняется аналогично).

Алгоритм распознавания срока действия

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

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

Рисунок 1. Примеры искомой трехстрочной информационной зоны

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

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

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

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

После фильтрации интенсивности пикселей обработанного изображения проецируются на вертикальную ось:

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

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

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

Рисунок 3. Вид проекции и оптимальные разрезы, выделяющие на ней области трех строк

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

Каждая из подстрок-кандидатов сегментируется на символы, учитывая, что все символы на таких картах моноширинные. Это позволяет использовать алгоритм динамического программирования для поиска межсимвольных разрезов без распознавания символов (все, что требуется знать — допустимый интервал для ширины символа). Здесь изложим основные идеи алгоритма.

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

После сегментации на символы, пришло время распознавания с помощью искусственной нейронной сети (ИНС). К сожалению, сколь-нибудь подробное описание этого процесса выходит за рамки данной статьи. Отметим только пару фактов:

  1. Для распознавания используются сверточные нейронные сети, обученные с помощью инструмента cuda-convnet.
  2. Алфавит обученной сети содержит цифры, знаки препинания, пробел и знак не-символа («мусора»).

Таким образом, для каждого изображения символа мы получим массив, содержащий псевдовероятностные оценки нахождения соответствующего символа алфавита на данном изображении. Казалось бы, правильный ответ — построить строку из наилучших вариантов (с наибольшими значением псевдовероятности). Однако ИНС иногда ошибается. Часть ошибок ИНС можно исправить с помощью постобработки благодаря существующим ограничениям на ожидаемые значения даты (например, не бывает 13-го месяца). Для этого используется так называемый алгоритм “рулетки”, итерационно перечисляющий все возможные варианты “прочтения строки” в порядке убывания общей псевдовероятности. Первый удовлетворяющий существующим ограничениям вариант считается ответом.

Конечно, помимо описанного “элементарного” постпроцесса в нашей системе используются и дополнительные контекстно-зависимые методы, описание которых не попало в данную статью.

Результаты работы

Для того, чтобы оценить качество работы нашего SDK, мы собрали базу изображений карточек различных платежных систем, выпущенных разными банками в размере 750 изображений (количество уникальных карточек — 60 штук). На собранном материале получили следующие результаты:
  • Качество распознавания номера — 99%
  • Качество распознавания даты — 99%
  • Качество распознавания имени держателя карты — 90%
  • Общее время распознавания карты на iPhone 4S — 0.6 секунды.

Список полезных источников

  1. van Herk М. A fast algorithm for local minimum and maximum filters on rectangular and octogonal kernels // Pattern Recognition Letters, 1992, V. 13, № 7, pp. 517–521.

habr.com

Изготовление пластиковых карт с эмбоссированием в Москве

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

Где можно разместить эмбоссирование на пластиковой карте?

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

Отступ эмбоссирования от края карты

При разработке макета для эмбоссирования пластиковых карт обязательно нужно учитывать, что на оборотной стороне остаются углубления. В связи с этим нужно разместить текст на оборотной стороне так, чтобы на него не попадали выдавленные символы. Если вам требуется изготовить карты с магнитной полосой, то эмбоссированные символы можно разместить не ближе 5 мм к полосе.

Положение эмбоссирования относительно магнитной полосы

Какие символы я могу эмбоссировать на пластиковой карте?

Для цифр используются два стандартных шрифта большой (OCR высотой 4,5 мм) и малый (Simplex 3 мм). Буквы можно выбить только малым шрифтом (3 мм). Разрешено использование заглавных букв русского и английского алфавита A-Z, А-Я, чисел 0-9, а также символов -/.’,&.

Шрифты, используемые при эмбоссировании пластиковых карт

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

Трудно не согласится, что получить дисконтную карту со своим именем, выдавленным на лицевой стороне, все-таки очень приятно.

Что обычно эмбоссируют на дисконтных картах?

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

Эмбоссирование случайного номера по базе данных

Иногда возникает потребность кроме номера указать дату действия или тип. На примере серебряная карта с магнитной полосой на которой нанесено эмбосирование номера крупным шрифтов, а срок действия и silver card мелким. Верхушки символов окрашены в серебро. Номер карты в данном случае может быть записан на магнитую полосу.

Эмбоссирование срока действия и типа карточки

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

Выдавливание имени владельца карты кириллицей

История возникновения эмбоссирования

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

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

magenta.su

Дисконтные карты

Требование к макету Дисконтной карты.

Размер макета должен быть 90х57 мм., без скругления углов. Вся полезная информация должна вписываться в 86х54мм. На примере размер 86х54мм. обозначен горизонтальными и вертикальными направляющими. Макет дисконтной карты Почему фон в макете должен быть больше чем размер пластиковой карты?

Потому что есть допуск на вырубку пластиковых карт примерно +-1мм. И следовательно, если размер фона макета будет равно размеру карты(86х54мм.), то может получиться вот такой неприятный момент. Макет Пластиковой карты Конечно, так печатать пластиковые карты никто не будет. А нам прейдется растянуть фон в макете до нужного размера(90х57мм.). Что в свою очередь может нарушить пропорциональность изображений.

Разрешение растровых изображений в макете должно быть не менее 300 dpi (пикселов на дюйм). Текст должен быть переведен в кривые. Располагать текст на макете не ближе 2,5мм от края карты(86х54мм) и не ближе 5мм от магнитной полосы или полосы для подписи. Текст, который используется для печати переменной информации, НЕ нужно переводить в кривые. При использовании для переменной информации шрифтов отличных от стандартных, данный шрифт приложить к макету. Все шрифты находятся в папке “C:\WINDOWS\Fonts”. Макет пластиковой карты Эмбоссирование пластиковых карт Эмбоссирование должно располагаться на карте на расстоянии не менее 5 мм от верхнего, нижнего края карты, и на расстоянии не менее 8 мм от левого и правого края карты. Так же эмбоссирование не должно располагаться ближе 5 мм от магнитной полосы. При эмбоссировании символы выдавливаются только горизонтально.

Стандартный размер эмбоссируемых символов : Большой шрифт — 3,5 х 4,5 мм; Малый шрифт — 2,5 х 3 мм;

Большой шрифт может содержать только цифры: 0123456789Малый шрифт — цифры и заглавные буквы английского алфавитов, включая символы: ".", ",", " ’", "-", "/", "&".

Количество символов в одной строке составляет : — для большого шрифта (4,5 мм) — 20 знаков. — для малого шрифта (3 мм) — 26 знаков.

Если эмбоссированные символы окрашиваются, то зона окрашивания (типирования) имеет следующие ограничения : от верхнего края карты– не менее 8 мм.

Будьте внимательны, чтобы эмбоссирование не забивало важную информацию на обратной стороне карты!

Для размещения эмбоссируемых символов на макете используйте шрифт

OCR A Std 16 пунктов для большого шрифта. 11 пунктов для малого шрифта.

Данное размещение символов на макете носит информационный характер. (Обозначает место эмбоссирования)

Магнитная полоса. Магнитные карточки. Для стандартных считывающих устройств (ридеров) используется магнитная полоса шириной 12,7 мм (0,5 дюйма). Магнитная полоса располагается на расстоянии 4 мм от края Дисконтной карты. Магнитная полоса содержит три дорожки. Все три дорожки магнитной полосы обычно используются в крупных банковских платежных системах. В дисконтных картах и картах доступа используется чаше всего одна дорожка (как правило вторая).

Дорожки могут быть закодированы следующим способом :1-дорожка – может содержать цифробуквенную информацию: до 76 знакомест QWERTYUIOPASDFGHJKLZXCVBNM1234567890 : ; = + ( ) – ‘ " ! @ # ^ & * / Все латинские буквы ЗАГЛАВНЫЕ. Информация будет окружена служебными символами: " % " — в начале строки, " ? " в конце строки. Служебный знак „?” добавляется в конце каждой строки и означает конец записи на магнитную полосу и при считывании не отображается.2-дорожка – только цифры: 1234567890 и знак „=”, до 37 знакомест пробел отображается на магнитной полосе знаком „=”, знак „?” означает конец записи на магнитную полосу и при считывании не отображается. Информация будет окружена служебными символами: " ; " — в начале строки, " ? " в конце строки.3-дорожка – только цифры: 1234567890 и знак „=”, до 104 знакомест пробел отображается на магнитной ленте знаком „=”, знак „?” означает конец записи на магнитную ленту и при считывании не отображается. Информация будет окружена служебными символами: " _ " — в начале строки, " ? " в конце строки.

Магнитная карточка,Магнитная полоса для дисконтной карты Магнитная карточка размер,Магнитная полоса для дисконтной карты
№ дорожки Начало дорожки Знаки, которые можно записать Конец дорожки max Длинна
1 дорожка % QWERTYUIOPASDFGHJKLZXCVBNM1234567890:;=+()–‘"[email protected]#^&*<> / ? 76 знаков
2 дорожка ; 1234567890 = ? 37 знаков
3 дорожка _ 1234567890 = ? 104 знака
Как выбрать? считыватель для Магнитных карт, Дисконтных карт, Пластиковых карт или карточек... Где купить? считыватель для Магнитных карт, Дисконтных карт, Пластиковых карт или карточек... Как подключить? считыватель для Магнитных карт, Дисконтных карт, Пластиковых карт или карточек...

Где взять информацию для записи на магнитную полосу...? Далее...

Полоса для подписи. Не следует располагать ближе 2 мм от края карточки. На карточках с магнитной полосой нельзя располагать подписную панель таким образом, чтобы она попадала в зону проката читающей головки, как на лицевой, так и на оборотной стороне, т.к. это может приводить к засорению ридера и к повреждению самой подписной панели с подписью. Поэтому панель для подписи наносят над/под магнитной полосой с отступом не менее 5 мм от ее края. Полоса для подписи Дисконтная карта Штрих-код на Дисконтной карточке должен располагаться с отступом не менее 2.5 мм от любого края карточки и от магнитной полосы. Конечно, можно сделать штрих код и в срез карты и даже под любым углом. Длина значения, которое можно записать в штрих код зависит от типа штрих-кода. К примеру, в штрих код EAN13 можно записать число длинной в 12 знаков.(000000000001 или 125954789562) Только при печати под штрих кодом чисел будет 13!!! 13 число - это контрольная сумма штрих кода. Контрольная сумма подставляется в штрих код автоматически при генерации штрих кода.Для занесения штрих кодов-EAN13 в программу учета, к примеру, в 1С, КОНТРОЛЬНАЯ СУММА НЕ НУЖНА!! Для импорта штрих кодов EAN13 в 1С, Вам нужно знать только 12 чисел.

Многие штрих-кода имеют возможность кодировать не только цифры, но и буквы. Набор кодируемых символов конкретного штрих-кода указывается в соответствующей спецификации. При размещении штрих-кодов необходимо учитывать их минимально допустимые размеры для последующего уверенного считывания. Высота штрих-кода должна быть не менее 10 мм. Возможна печать следующих типов штрих-кодов: CodeBar, Code 39(Extended), Code 93(Extended), Code 128 (все типы), EAN/JAN-13, EAN/JAN-8 и т.д. Возможность печати, не указанного выше, штрих-кода дополнительно необходимо уточнить у менеджера.

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

Штрих код дисконтная карта,Штрих код на Пластиковой карте Штрих код Пластиковая карта,Штрих код на Дисконтной карте Как выбрать? сканер штрих кода для Дисконтных карт, Пластиковых карт или карточек... Где купить? сканер штрих кода для Дисконтных карт, Пластиковых карт или карточек... Как подключить? сканер штрих кода Дисконтных карт, Пластиковых карт или карточек...

Где взять информацию для записи в штрих код...? Далее...

Стираемая Стрейч голограмма. Защитный слой, который наносится на поверхность Дисконтной карты, поверх защищаемой информации (пин-код, код-пополнения и прочее). Такую голограмму не возможно отклеить. При попытке вскрытия, голограмма рвется. Скрытую информацию, возможно увидеть, только после стирания защитного гаоографического слоя. Размер голограммы 6х35мм. Стрейч для дисконтной карты Бейджи и бирки. Размер 35 х 54 мм. Размеры отверстий для бейджев и бирок. Круглое отверстие - диаметр 6мм. Прямоугольное отверстие - 2х14мм.

Отверстия для бирок и бейджев изготавливаются на расстоянии 5мм. от края.

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

Также такие чипы EM MARIN можно использовать для защиты дисконтных карт, а также для защиты подарочных сертификатов. Изготавливается подарочный сертификат с чипом. К программе 1С подключается настольный считыватель бесконтактных карт. Все подарочные сертификаты путем считывания номер чипа через настольный считыватель, заносяться в базу 1С. И в последствии, при предъявлении подарочного сертификата, программа опознает только тот сертификат, который занесен в базу. Чипы EM MARIN имеют не повторяющийся номер(двух одинаковых чипов нет!!). И перезаписать номер чипа невозможно. Что гарантирует защиту от подделки.

Бесконтактный чип EM MARIN Для Дисконтной карты Как выбрать? считыватель EM MARIN для Дисконтных карт, Пластиковых карт или карточек... Где купить? считыватель EM MARIN для Дисконтных карт, Пластиковых карт или карточек... Как подключить? считыватель EM MARIN для Дисконтных карт, Пластиковых карт или карточек...

Далее...

www.color59.ru