Продолжение. Да, сегодня меня потянуло на просвящение. Сама этому рада, все же не просто тупо
просидела в просторах инета. Так что продолжение статьи про бар код снова прячу.
А еще очередной раз порадуюсь ща Ю Эс Эй, т.е. мою любимую Америку. Я горжусь ими. И на сколько бы вы их тупыми быне считали, но именно они изобрели многое, на чем сейчасм держится мир.В том числе и эти, элементарные баркоды, благодаря которым больше не приходится часами стоять в очередях, как некогда стояли наши бабушки и дедушки.
Barcode
European Article Number, EAN (европейский номер товара) — европейский стандарт штрихкода, предназначенный для кодирования идентификатора товара и производителя. Является надмножеством американского стандарта UPC.
Стандартизация
Стандартизацией и регистрацией кодов EAN занималась европейская ассоциация ЕАN, в продолжение развития стандартов, разработанных организациями UCC (Uniform Code Council, Inc.) в США и ECCC (Electronic Commerce Council of Canada) в Канаде. В 2005 году все эти организации объединились друг с другом и образовали глобальную организацию по стандартизации «GS1».
Теперь именно этот стандарт является универсальным для всех стран, а американская и канадская национальная организация настойчиво рекомендовала всем торговым компаниям своих стран заменить устаревшее оборудование и программы UPC, не способные считывать EAN, на современные.
Разновидности кода:
EAN-8 (сокращённый) — кодируется 8 цифр.
EAN-13 (полный) — кодируется 13 цифр.
EAN-128 — кодируется любое количество букв/цифр, объединенных в регламентированные группы.
Коды EAN-8, EAN-13 содержат только цифры и никаких букв или других символов. Например: 2400000032639
Кодом EAN-128 кодируется любое количество букв/цифр по алфавиту Code-128. Например00)353912345678(01)053987(15)051230, где (15) группа обозначает срок годности 30 декабря 2005
История разработки и отличие от UPC
Первоначально была разработана американская система штрихового кодирования Universal Product Code.
Для того, чтобы закодировать в коде товары других стран, необходимо было увеличить количество разрядов кода с 12 цифр, которые были в полном эксклюзивном владении американцев и канадцев, как минимум до 13 цифр, чтобы использовать эту дополнительную, и первую по счёту цифру в коде в качестве условного сигнала для торговых программ, что этот товар не американского производства, а товар производства другой страны. Американцам и канадцам в качестве этой цифры разработчики сразу зарезервировали ноль, что вполне естественно и логично. У европейцев стояла и организационная задача: распределить (делегировать) определённые диапазоны значений кодов различным странам мира, для чего определили в качестве префикса региона первые три цифры, включая эту дополнительную, тринадцатую. Справедливости ради стоит отметить, что, вопреки всеобщему заблуждению, этот префикс не означает страну происхождения товара, а лишь указывает код регионального регистратора, где зарегистрировалась компания, печатающая код на своей упаковке. То есть, товар может быть произведён, например, в Китае, но китайская компания, зная, что товар в этой русскоязычной упаковке будет продаваться в России, совершенно законно может зарегистрировать для себя коды в нашей национальной организации GS1, и выпускать продукцию со штрихкодом, начинающимся с 460—469. И наоборот, товар может быть выпущен в России, а код может быть использован не российский. Но, всё же чаще всего в качестве регионального кода действительно встречается код той страны, где выпущен данный товар.
Помимо организационной задачи, перед разработчиками стояла серьёзная техническая задача — сохранить совместимость кодов и одновременно возможность минимальных аппаратно-программных переделок сканеров штрихкода, очень удобных, но тогда ещё дорогих. Как говорится, чтобы «не изобретать велосипед», не тратить лишние средства на разработки, а воспользоваться уже имеющимися разработками американцев. Очень важно было сохранить всё то главное, что было в UPC: то же самое количество штрихов; осевую симметричность кода для его удобного чтения как в прямом, так и в обратном направлении (если товар поднесён к сканеру «вверх-тормашками»); сохранить возможность чтения фотографически негативных кодов (некоторые производители и таким способом печатают код на товаре, то есть, по тёмному фону — светлые штрихи). В результате творческой работы было найдено гениальное и простое решение: в целях максимальной совместимости кодирование EAN было переработано из UPC так, что по-прежнему содержало только 12 «штриховых цифр», то есть, только 12 цифр в коде имеют конкретное соответствие конкретным штрихам, а эта тринадцатая, дополнительная цифра, «вычислялась» логическим путём. В принципе, «рисунок» EAN-13 ничем не отличается от рисунка UPC, а для кодов, начинающихся с цифры ноль — точная копия.
(Одной из сложностей была проблема вероятного считывания кода в обратном направлении, то есть считывания кода на товаре, который кассир поднёс к сканеру «вверх ногами». Поэтому очень важно было, чтобы чередование полос было одинаковым в обоих направлениях — сначала тёмный штрих, потом белый, потом опять тёмный и так далее. Да, и ещё было бы неплохо, чтобы положение защитных шаблонов было всегда на одном и том же месте.
Решение было найдено. Можно обратить внимание, что код выглядит очень симметрично, то есть количество штрихов справа и слева от центра всегда равно, а ширина правой и левой части штрихкода одинаковы. То есть механизм считывания штрихкода всегда одинаков, как этот код ни поверни.
Что касается одинаковой последовательности чередования светлых и тёмных штрихов при прямом и обратном чтении, то разработчики добились этого тем, что кодировка правой и левой групп цифр немного отличается — правые символы имеют фотографически негативное начертание относительно левых. То есть шаблоны штрихов для одной и той же цифры идентичны, но позитивны или негативны. Иначе говоря, отличие только в том, что если для левой части кода это светлый штрих, то для правой — тёмный.
Проблема распознавания прямого или обратного считывания точно так же легко разрешается логически. Например, если сканер считывает цифру с толщиной штрихов 3-2-1-1, то он понимает, что это цифра «ноль» и её прямое считывание, а если он считывает штрихи толщиной 1-1-2-3, то он понимает, что это тот же «ноль», но считанный в обратном направлении. Считывая числа, закодированные зеркально относительно обычной кодировки, сканер понимает, что весь штрихкод считывается в обратном направлении, следовательно, и всю полученную последовательность из 12 цифр нужно передать компьютеру в обратном порядке.
Всё это было определённой перестраховкой, и по современным меркам излишеством, но и год был 1973.)
Внутренняя структура кода EAN-13
Основное отличие этих (EAN-13\UPC) кодов по внутренней организации — это несложный механизм «вычисления» самой тринадцатой цифры, и почти несущественное изменение в расчёте контрольного числа, с учётом этой 13 цифры.
13-ая цифра
Структура кода EAN-13
0 LLLLLL RRRRRR
1 LLGLGG RRRRRR
2 LLGGLG RRRRRR
3 LLGGGL RRRRRR
4 LGLLGG RRRRRR
5 LGGLLG RRRRRR
6 LGGGLL RRRRRR
7 LGLGLG RRRRRR
8 LGLGGL RRRRRR
9 LGGLGL RRRRRR
Первая цифра кодируется не дополнительными штрихами, а способом кодирования левой половины штрих-кода (10 разновидностей). Из таблицы видно, что для кодирования первой цифры используется немного разное начертание штрихов, обозначенное буквами L и буквами G. Определённое чередование этих кодов даёт сканеру на уровне логики определить 13 цифру. Например, для цифры «1» G-код у третьей, пятой и шестой цифры, то есть встретив код, в котором G-код левой части кода расположен в этом порядке, сканер в качестве первой цифры передаст в компьютер единицу. Для цифры «2» G-код у третьей, четвёртой и шестой цифры, соответственно сканер передаст в компьютер двойку. Для других цифр эта логика отображена в таблице.
L-код R-код G-код
0 0001101 1110010 0100111
1 0011001 1100110 0110011
2 0010011 1101100 0011011
3 0111101 1000010 0100001
4 0100011 1011100 0011101
5 0110001 1001110 0111001
6 0101111 1010000 0000101
7 0111011 1000100 0010001
8 0110111 1001000 0001001
9 0001011 1110100 0010111
Кодировка цифр для правых и левых частей кода
Цифра Левый код Правый код Ширина линий
0 0001101 1110010 3-2-1-1
1 0011001 1100110 2-2-2-1
2 0010011 1101100 2-1-2-2
3 0111101 1000010 1-4-1-1
4 0100011 1011100 1-1-3-2
5 0110001 1001110 1-2-3-1
6 0101111 1010000 1-1-1-4
7 0111011 1000100 1-3-1-2
8 0110111 1001000 1-2-1-3
9 0001011 1110100 3-1-1-2
Каковы графические отличия L-кода, R-кода, и G-кода? По сути для каждой цифры это одна и та же комбинация чёрно-белых штрихов, L-код отличается от R-кода лишь фотографически негативным исполнением, а G-код, в свою очередь, отличается от R-кода реверсивным (зеркальным) исполнением.
Для цифры ноль в коде ни для одной из шести цифр левой части кода нет ни одного преобразования в зеркально-негативный вид, то есть все штрихи кодируются L-кодом, как в UPC. EAN-сканер, встретив код без штрихов с G-кодом, передаёт в компьютер первую цифру «ноль». В свою очередь, если этот код прочитает редкий на сегодняшний день, уже ушедший в историю американский сканер штрихкодов UPC, то он будет просто прочитан как «родной» код UPC. Если же сканер UPC встретит на своём пути штриховку с G-кодом, то он просто не сможет считать этот код и выдаст ошибку или не заметит и не передаст никакой код в компьютер. Этим и обеспечена полная совместимость «снизу-вверх».
Резюмируя вышесказанное, можно констатировать, что UPC может считаться частным случаем, подмножеством кода EAN-13, у которого первая цифра есть 0, которая часто не указывается в виде арабской цифры, и эти коды в этом случае ничем не отличаются друг от друга по рисунку. Была полностью сохранена возможность чтения «американских» кодов на «европейских» сканерах, но не наоборот. Сам код EAN-13, и его 13 цифра в свою очередь формируется «игрой» негативности-реверсивности последовательности штрихов в левой части кода, в результате чего, чисто «американские» сканеры UPC читать европейский код не в состоянии, но обеспечена максимальная «похожесть» кодов друг на друга. К счастью, за эти годы и в США, и в Канаде этот тип сканеров уже вытеснен из всех магазинов, и установлены сканеры, способные считывать кодировку EAN-13, т.е. продажа товаров из других стран не вызывает никаких проблем на территории стран-основателей этой самой распространённой системы автоматизации торговли.
EAN-8
Использование штрих-кодов EAN-13 очень удобно, но не всегда возможно. Если товар имеет малые размеры, то для кода EAN-13 может не найтись достаточно места на этикетке. Уменьшение размера кода приводит к уменьшению ширины штрихов. Если штрихи будут слишком узкими, разрешающей способности сканера может оказаться недостаточно для уверенного считывания этого штрих-кода. Для маркировки небольших товаров разработан стандарт штрих-кода EAN-8, в теле сообщения которого кодируется только 8 цифр, вместо 13.
Каждая цифра в EAN-8, как и в EAN-13 кодируется с помощью четырёх штрихов: двух белых и двух чёрных. Штрихи могут иметь относительную ширину в одну, две, три и четыре единицы. Общая ширина штрихов одной цифры составляет семь единиц. Направление чтения комбинации штрихов значения не имеет.
EAN-128 (GS1-128)
Этикетка с кодом EAN-128
Данный формат предназначен для передачи информации о грузе между промышленными предприятиями. В коде регламентрирован словарь (Code-128), регламентированы группы кодов, но не регламентирована длина.
Такой код может содержать различную информацию, например код товара, сроки годности, размеры, объем, код партии производителя и др.
просидела в просторах инета. Так что продолжение статьи про бар код снова прячу.
А еще очередной раз порадуюсь ща Ю Эс Эй, т.е. мою любимую Америку. Я горжусь ими. И на сколько бы вы их тупыми быне считали, но именно они изобрели многое, на чем сейчасм держится мир.В том числе и эти, элементарные баркоды, благодаря которым больше не приходится часами стоять в очередях, как некогда стояли наши бабушки и дедушки.
Barcode
European Article Number, EAN (европейский номер товара) — европейский стандарт штрихкода, предназначенный для кодирования идентификатора товара и производителя. Является надмножеством американского стандарта UPC.
Стандартизация
Стандартизацией и регистрацией кодов EAN занималась европейская ассоциация ЕАN, в продолжение развития стандартов, разработанных организациями UCC (Uniform Code Council, Inc.) в США и ECCC (Electronic Commerce Council of Canada) в Канаде. В 2005 году все эти организации объединились друг с другом и образовали глобальную организацию по стандартизации «GS1».
Теперь именно этот стандарт является универсальным для всех стран, а американская и канадская национальная организация настойчиво рекомендовала всем торговым компаниям своих стран заменить устаревшее оборудование и программы UPC, не способные считывать EAN, на современные.
Разновидности кода:
EAN-8 (сокращённый) — кодируется 8 цифр.
EAN-13 (полный) — кодируется 13 цифр.
EAN-128 — кодируется любое количество букв/цифр, объединенных в регламентированные группы.
Коды EAN-8, EAN-13 содержат только цифры и никаких букв или других символов. Например: 2400000032639
Кодом EAN-128 кодируется любое количество букв/цифр по алфавиту Code-128. Например00)353912345678(01)053987(15)051230, где (15) группа обозначает срок годности 30 декабря 2005
История разработки и отличие от UPC
Первоначально была разработана американская система штрихового кодирования Universal Product Code.
Для того, чтобы закодировать в коде товары других стран, необходимо было увеличить количество разрядов кода с 12 цифр, которые были в полном эксклюзивном владении американцев и канадцев, как минимум до 13 цифр, чтобы использовать эту дополнительную, и первую по счёту цифру в коде в качестве условного сигнала для торговых программ, что этот товар не американского производства, а товар производства другой страны. Американцам и канадцам в качестве этой цифры разработчики сразу зарезервировали ноль, что вполне естественно и логично. У европейцев стояла и организационная задача: распределить (делегировать) определённые диапазоны значений кодов различным странам мира, для чего определили в качестве префикса региона первые три цифры, включая эту дополнительную, тринадцатую. Справедливости ради стоит отметить, что, вопреки всеобщему заблуждению, этот префикс не означает страну происхождения товара, а лишь указывает код регионального регистратора, где зарегистрировалась компания, печатающая код на своей упаковке. То есть, товар может быть произведён, например, в Китае, но китайская компания, зная, что товар в этой русскоязычной упаковке будет продаваться в России, совершенно законно может зарегистрировать для себя коды в нашей национальной организации GS1, и выпускать продукцию со штрихкодом, начинающимся с 460—469. И наоборот, товар может быть выпущен в России, а код может быть использован не российский. Но, всё же чаще всего в качестве регионального кода действительно встречается код той страны, где выпущен данный товар.
Помимо организационной задачи, перед разработчиками стояла серьёзная техническая задача — сохранить совместимость кодов и одновременно возможность минимальных аппаратно-программных переделок сканеров штрихкода, очень удобных, но тогда ещё дорогих. Как говорится, чтобы «не изобретать велосипед», не тратить лишние средства на разработки, а воспользоваться уже имеющимися разработками американцев. Очень важно было сохранить всё то главное, что было в UPC: то же самое количество штрихов; осевую симметричность кода для его удобного чтения как в прямом, так и в обратном направлении (если товар поднесён к сканеру «вверх-тормашками»); сохранить возможность чтения фотографически негативных кодов (некоторые производители и таким способом печатают код на товаре, то есть, по тёмному фону — светлые штрихи). В результате творческой работы было найдено гениальное и простое решение: в целях максимальной совместимости кодирование EAN было переработано из UPC так, что по-прежнему содержало только 12 «штриховых цифр», то есть, только 12 цифр в коде имеют конкретное соответствие конкретным штрихам, а эта тринадцатая, дополнительная цифра, «вычислялась» логическим путём. В принципе, «рисунок» EAN-13 ничем не отличается от рисунка UPC, а для кодов, начинающихся с цифры ноль — точная копия.
(Одной из сложностей была проблема вероятного считывания кода в обратном направлении, то есть считывания кода на товаре, который кассир поднёс к сканеру «вверх ногами». Поэтому очень важно было, чтобы чередование полос было одинаковым в обоих направлениях — сначала тёмный штрих, потом белый, потом опять тёмный и так далее. Да, и ещё было бы неплохо, чтобы положение защитных шаблонов было всегда на одном и том же месте.
Решение было найдено. Можно обратить внимание, что код выглядит очень симметрично, то есть количество штрихов справа и слева от центра всегда равно, а ширина правой и левой части штрихкода одинаковы. То есть механизм считывания штрихкода всегда одинаков, как этот код ни поверни.
Что касается одинаковой последовательности чередования светлых и тёмных штрихов при прямом и обратном чтении, то разработчики добились этого тем, что кодировка правой и левой групп цифр немного отличается — правые символы имеют фотографически негативное начертание относительно левых. То есть шаблоны штрихов для одной и той же цифры идентичны, но позитивны или негативны. Иначе говоря, отличие только в том, что если для левой части кода это светлый штрих, то для правой — тёмный.
Проблема распознавания прямого или обратного считывания точно так же легко разрешается логически. Например, если сканер считывает цифру с толщиной штрихов 3-2-1-1, то он понимает, что это цифра «ноль» и её прямое считывание, а если он считывает штрихи толщиной 1-1-2-3, то он понимает, что это тот же «ноль», но считанный в обратном направлении. Считывая числа, закодированные зеркально относительно обычной кодировки, сканер понимает, что весь штрихкод считывается в обратном направлении, следовательно, и всю полученную последовательность из 12 цифр нужно передать компьютеру в обратном порядке.
Всё это было определённой перестраховкой, и по современным меркам излишеством, но и год был 1973.)
Внутренняя структура кода EAN-13
Основное отличие этих (EAN-13\UPC) кодов по внутренней организации — это несложный механизм «вычисления» самой тринадцатой цифры, и почти несущественное изменение в расчёте контрольного числа, с учётом этой 13 цифры.
13-ая цифра
Структура кода EAN-13
0 LLLLLL RRRRRR
1 LLGLGG RRRRRR
2 LLGGLG RRRRRR
3 LLGGGL RRRRRR
4 LGLLGG RRRRRR
5 LGGLLG RRRRRR
6 LGGGLL RRRRRR
7 LGLGLG RRRRRR
8 LGLGGL RRRRRR
9 LGGLGL RRRRRR
Первая цифра кодируется не дополнительными штрихами, а способом кодирования левой половины штрих-кода (10 разновидностей). Из таблицы видно, что для кодирования первой цифры используется немного разное начертание штрихов, обозначенное буквами L и буквами G. Определённое чередование этих кодов даёт сканеру на уровне логики определить 13 цифру. Например, для цифры «1» G-код у третьей, пятой и шестой цифры, то есть встретив код, в котором G-код левой части кода расположен в этом порядке, сканер в качестве первой цифры передаст в компьютер единицу. Для цифры «2» G-код у третьей, четвёртой и шестой цифры, соответственно сканер передаст в компьютер двойку. Для других цифр эта логика отображена в таблице.
L-код R-код G-код
0 0001101 1110010 0100111
1 0011001 1100110 0110011
2 0010011 1101100 0011011
3 0111101 1000010 0100001
4 0100011 1011100 0011101
5 0110001 1001110 0111001
6 0101111 1010000 0000101
7 0111011 1000100 0010001
8 0110111 1001000 0001001
9 0001011 1110100 0010111
Кодировка цифр для правых и левых частей кода
Цифра Левый код Правый код Ширина линий
0 0001101 1110010 3-2-1-1
1 0011001 1100110 2-2-2-1
2 0010011 1101100 2-1-2-2
3 0111101 1000010 1-4-1-1
4 0100011 1011100 1-1-3-2
5 0110001 1001110 1-2-3-1
6 0101111 1010000 1-1-1-4
7 0111011 1000100 1-3-1-2
8 0110111 1001000 1-2-1-3
9 0001011 1110100 3-1-1-2
Каковы графические отличия L-кода, R-кода, и G-кода? По сути для каждой цифры это одна и та же комбинация чёрно-белых штрихов, L-код отличается от R-кода лишь фотографически негативным исполнением, а G-код, в свою очередь, отличается от R-кода реверсивным (зеркальным) исполнением.
Для цифры ноль в коде ни для одной из шести цифр левой части кода нет ни одного преобразования в зеркально-негативный вид, то есть все штрихи кодируются L-кодом, как в UPC. EAN-сканер, встретив код без штрихов с G-кодом, передаёт в компьютер первую цифру «ноль». В свою очередь, если этот код прочитает редкий на сегодняшний день, уже ушедший в историю американский сканер штрихкодов UPC, то он будет просто прочитан как «родной» код UPC. Если же сканер UPC встретит на своём пути штриховку с G-кодом, то он просто не сможет считать этот код и выдаст ошибку или не заметит и не передаст никакой код в компьютер. Этим и обеспечена полная совместимость «снизу-вверх».
Резюмируя вышесказанное, можно констатировать, что UPC может считаться частным случаем, подмножеством кода EAN-13, у которого первая цифра есть 0, которая часто не указывается в виде арабской цифры, и эти коды в этом случае ничем не отличаются друг от друга по рисунку. Была полностью сохранена возможность чтения «американских» кодов на «европейских» сканерах, но не наоборот. Сам код EAN-13, и его 13 цифра в свою очередь формируется «игрой» негативности-реверсивности последовательности штрихов в левой части кода, в результате чего, чисто «американские» сканеры UPC читать европейский код не в состоянии, но обеспечена максимальная «похожесть» кодов друг на друга. К счастью, за эти годы и в США, и в Канаде этот тип сканеров уже вытеснен из всех магазинов, и установлены сканеры, способные считывать кодировку EAN-13, т.е. продажа товаров из других стран не вызывает никаких проблем на территории стран-основателей этой самой распространённой системы автоматизации торговли.
EAN-8
Использование штрих-кодов EAN-13 очень удобно, но не всегда возможно. Если товар имеет малые размеры, то для кода EAN-13 может не найтись достаточно места на этикетке. Уменьшение размера кода приводит к уменьшению ширины штрихов. Если штрихи будут слишком узкими, разрешающей способности сканера может оказаться недостаточно для уверенного считывания этого штрих-кода. Для маркировки небольших товаров разработан стандарт штрих-кода EAN-8, в теле сообщения которого кодируется только 8 цифр, вместо 13.
Каждая цифра в EAN-8, как и в EAN-13 кодируется с помощью четырёх штрихов: двух белых и двух чёрных. Штрихи могут иметь относительную ширину в одну, две, три и четыре единицы. Общая ширина штрихов одной цифры составляет семь единиц. Направление чтения комбинации штрихов значения не имеет.
EAN-128 (GS1-128)
Этикетка с кодом EAN-128
Данный формат предназначен для передачи информации о грузе между промышленными предприятиями. В коде регламентрирован словарь (Code-128), регламентированы группы кодов, но не регламентирована длина.
Такой код может содержать различную информацию, например код товара, сроки годности, размеры, объем, код партии производителя и др.