У сучасному світі щодня з'являються нові розробки та технології. Часом те, що вчора видавалося фантастикою вже сьогодні є простою річчю. Причому, частина винаходів у світовій історії робилися немов випадково (наприклад пеніцилін, мікрохвильова піч, суперклей тощо). Подібною є історія створення QR-кодування. Спосіб нанесення технічної інформації на деталі в точному машинобудуванні здобув поширення в багатьох інших галузях. То в чому ж секрет популярності QR-кодування? Чому ця технологія здобула таке розповсюдження? Відшукаймо відповіді на ці запитання!

QR-кодування виникло із системи кодування штрих-кодів. В свою чергу винайдення штрих-коду сягає 30-х років XX століття.

У 1948 році Бернард Сілвер і Норманн Джозеф Вудленд зробили перші кроки у розробці штрих-кодів. Вони розробляли автоматичну систему зчитування інформації про продукт та контроль якості. Спочатку Вудленд використовував ультрафіолетові чорнила для маркування товару, однак чорнила виявились занадто дорогими і ненадійними. Через деякий час Вудленд винайшов лінійний штрих-код, використовуючи відомі на той момент способи кодування інформації: азбуку Морзе і звукові доріжки. Вже 7 жовтня 1952 року Джозеф Вудленд та Бернард Сілвер запатентували свій винахід під назвою «Метод класифікації та відповідний пристрій»[1].

Своє перше застосування у промислових цілях штрих-код здобув у 1950-x роках. Американський інженер Давид Коллінз застосував кодування номерів вагонів у цілях логістики. Коллінзу прийшла ідея освітлювати номери вагонів і зчитувати їх за допомогою фотоелементів. Для спрощення зчитування інформації інженер запропонував записувати номери не тільки звичайними цифрами, але й спеціальним кодом, складеним з жовтих і синіх смуг. Уже у 1967-му році Асоціація залізниць США прийняла штрих-код під назвою «KarTrak» , основою для якого служили розробки Коллінза [1].

1

У торгівельній сфері штрих-код вперше був використаний у вже в 1970-х. Норманн Джозеф Вудленд спільно з Джорджем Лаурером розробили версію найпопулярнішого на сьогоднішній день штрих-коду – «Універсальний товарний код» (UPC – Universal Product Code). 3 квітня 1973 року вважається офіційним днем народження штрих-коду.

Першим товаром, який пройшов під променем сканера на касовому апараті була упаковка жувальної гумки Wrigley, що складалася з 10 пачок жуйки Juicy Fruit. Вона була продана 26 червня 1974 року.

2

У Західній Європі для ідентифікації споживчих товарів з 1977 року стала застосовуватися аналогічна система під назвою «Європейський артикул» (EAN  – European Article Number). Вже у 1980-х роках міжнародним стандартом у кодуванні товарної продукції став штрих-код EAN-13.

Тим часом у Японії, починаючи ще із 1960-х років спостерігався грандіозний підйом в економіці та торгівлі. Уже у 1978 році в країні було впроваджено власний варіант штрих-коду JAN (Japanese Article Number), що був сумісним зі стандартом EAN-8 [5].

Однак, використання «традиційних» штрих-кодів у Японії мало свої особливості. Обсяг інформації, що кодувався «звичайними» – лінійними штрих-кодами, виявився замалим. Виникла потреба пристосування «традиційних» штрих-кодів до підтримки японського ієрогліфічного письма Кандзі та силабічної абетки Кана.

На початку 1990-х років відома японська машинобудівна компанія DENSO (одна з дочірніх компаній концерну TOYOTA) ініціювала проект створення нового механізму кодування інформації для нанесення технічної інформації на деталі. Її дочірня компанія DENSO WAVE, що виробляла сканери штрих-кодів, розпочала реалізацію цього проекту. Вже у 1994 році було презентовано абсолютно нову систему двовимірного кодування – QR-кодування [8].

Над розробкою нової технології працювали двоє інженерів – Масахіро Хара та Такаюкі Нагая.

3

Звичайно, що існували конкуруючі розробки (DataMatrix – 1989р, PDF 417 – 1991р). Однак розробники із DENSO WAVE підійшли до проблеми з діаметрально-протилежного боку. Більшість конкуруючих розробок намагалися вмістити якнайбільше інформації у своїх реалізаціях. Недоліком такого підходу був час декодування даних, що збільшувався прямо пропорційно до обсягу закодованої інформації. Масахіро та Такаюкі більш пріоритетною вважали зручність користування майбутньою технологію [8]. Адже уже саме використання двох вимірів для кодування інформації замість одного у «традиційних» штрих-кодах гарантуватиме значне збільшення обсягів закодованих даних.

Першою вимогою, яку поставили розробники до майбутньої технології, була можливість коректно зчитувати QR-код із різних кутів нахилу зчитувального пристрою відносно коду. Щоб це реалізувати, Масахіро Хара здійснив детальний аналіз існуючих технологій та підбір різноманітних шаблонів для майбутнього коду. Шаблон підбирався таким чином, щоб однозначно ідентифікувати код, незалежно від того під яким кутом він буде зчитуватись.

Ще однією ключовою вимогою стала можливість відновлення закодованих даних у разі втрати частини зображення. Над розв’язанням цієї проблеми працював Такаюкі Нагая. Він запропонував на етапі кодування включити до вхідних даних службову інформацію, яка вказуватиме на тип повідомлення та вид самого коду. Потім, на етапі декодування за допомогою цієї надлишковості можна діагностувати втрату даних. В разі цього застосовувався спеціальний набір кодів (коди Ріда-Соломона) для відновлення даних.

В результаті клопіткої праці розробників було створено абсолютно нову технологію, яка одразу ж була успішно застосована для внутрішніх потреб DENSO. Але технологія виявилась наскільки вдалою, що зайняла свою нішу в інших сферах. Однією із причин цього була висока швидкість декодування. QR-код піддавався декодуванню в 10 разів швидше ніж інші розробки (в тому числі і «традиційні» штрих-коди [8]). Саме тому він і отримав свою назву (quick response англійською – швидкий відгук).

Окрім того, новостворена технологія надавала мала низку переваг:

  • Можливість кодування достатніх обсягів даних [8] (цифрові та алфавітні символи, ієрогліфи Кандзі, Кана та Хіраґана, символи, бінарні та хеш-коди).
  • Значно менший розмір для друку в порівнянні із «традиційними» штрих-кодами для однакових обсягів даних.
  • Можливість відновлення даних при відсутності певної частини коду.
  • Можливість декодування коду при довільному повороті зображення у його площині [6].
  • Висока швидкість декодування (в 10 разів швидше порівнюючи із іншими технологіями кодування [8]).
  • Можливість декодування без використання спеціалізованих пристроїв. Підтримка широкого спектру платформ на яких доступні спеціальні програми-декодери[13].
  • Можливість поділу одного QR-коду на послідовність кодів менших розмірів [14].

Розглянемо деякі із перелічених можливостей більш детально керуючись витягом зі специфікації QR-кодування [14]:

Характеристика Опис та можливості
Символьний розмір Від 21×21 до 177×177 (із кроком +4)
Тип і максимальний розмір вхідних даних (також підтримується змішаний тип) Цифровий Максимально 7089 символів
Алфавітно-цифровий Максимально 4296 символів
Двійковий код Максимально 2953 символів
Ієрогліфи Кандзі Максимально 1817 символів
Корекція помилок (надлишковість даних) Рівень L До 7% даних можна відновити
Рівень M До 15% даних можна відновити
Рівень Q До 25% даних можна відновити
Рівень H До 30% даних можна відновити
Структурний поділ Можливість поділити один код на сукупність менших кодів з максимальною розмірністю 16×16 символів

Для специфікації технології також вводиться спеціальна термінологія.

Версія QR-коду – умовний номер в діапазоні від версії 1 до версії 40. Кожна версія має різну кількість модулів. (Модулями називають чорно-білі точки, з яких складається QR-код.)

Модульна конфігурація залежить від числа точок, що містяться в коді, починаючи з першої версії (21×21 модулів) до версії 40 (177×177 модулів). Кожна конфігурація більшої версії, доповнюється 4-ма додатковими модулями по-горизонталі та вертикалі.

4

Кожна версія QR-коду має максимальний обсяг для кодування даних відповідно до їх кількості, типу, характеру і рівня корекції помилок. Тобто збільшення обсягів вхідних даних зумовлює використання більшої кількості модулів, що спричиняє збільшення розмірів вихідного QR-коду [8].

QR-кодування має можливість корекції помилок для відновлення даних якщо код пошкоджений або забруднений. Доступно чотири рівні корекції помилок (див. таблицю вище). Збільшення цього рівня покращує здатність до корекції помилок, але спричиняє збільшення розміру вихідного QR-коду.

Можливість корекції помилок QR-код здійснюється шляхом додавання коду Ріда-Соломона до вихідних даних. Здатність корекції помилок залежить від обсягу даних, які повинні бути виправлені [6].

Розглянемо детальніше як саме зі звичайного рядка тесту отримується QR-код.

Алгоритм перетворення складається із таких етапів [15]:

  1. Аналіз даних

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

  1. Кодування даних

Насамперед обирається рівень кореляції помилок (L,M,Q,H). Потім визначається мінімальна версія майбутнього QR-коду (від 1 до 40), розмірів якої буде достатньо щоб закодувати всі дані вхідного тексту. Спочатку заноситься службова інформація (4-бітний індикатор режиму, лічильник закодованих символів) за якою здійснюється власне кодування. В разі необхідності отриманий бітовий рядок доповнюється нулями до довжини кратної 8.

  1. Кодування корекції помилок

Отриманий двійковий рядок розбивають на групи по 8 біт у кожній. Групи записують у десятковій системі числення і виконують ряд перетворень (детальніше [2] і [14]). В результаті перетворень отримується новий набір який забезпечуватиме відновлення даних пошкодженого коду.

  1. Структурування вихідного повідомлення

Отримані на попередньому кроці коди корекції помилок та власне коди повідомлення спеціальним чином перемішуються, їхні біти інвертуються та, в разі необхідності, додаються нульові залишкові біти (remainder bits).

  1. Розміщення модулів в матриці.

На цьому етапі матриця відповідних розмірів заповнюється спеціальними функціональними шаблонами (шаблони пошуку – три квадрати у кутах матриці, роздільниками, шаблонами вирівнювання) та власне двійковими даними, отриманими на попередніх кроках.

  1. Застосування масок

До вже розміщених модулів на матриці застосовується набір бітових масок (усього вісім різних масок-шаблонів).

5

Для кожного варіанту спеціальним чином розраховуються штрафні очки. Остаточно обирається варіант, що набрав найменшу кількість штрафних очок[3; 15].

  1. Додавання метаданих

На останньому етапі перетворень до матриці додається інформація про рівень корекції помилок та маску, що були застосовані на попередніх етапах. Для QR-кодів версії 7 та вище додається спеціальний 18-бітний рядок із інформацією про версію.

Зчитування QR-коду здійснюється в оберненій послідовності (розпізнавання областей коду, декодування інформації про формат та версію, застосування маски, отримання даних, накладання кодів корекції, власне декодування). Детальніше [3].

Проаналізуймо, «шлях успіху»QR-коду. Найбільшого поширення він набув у себе на батьківщині – в Японії[17]. До 2000 року із прийняттям стандартів (AIM International – 1997, JEIDA-55 –1998, JIS X 0510 – 1999) QR-код успішно використовувався у логістиці на японських підприємствах [14]. Із прийняттям у червні 2000-го року стандарту ISO/IEC18004 система QR-кодування стала міжнародною. Вектор поширення цієї технології простягнувся зі сходу на захід. Це зумовлено тим, що ієрогліфічне письмо притаманне азійським країнам. Проте із появою перших мобільних телефонів із фотокамерою стався сплеск застосування QR-кодів [13; 14]. Можливість розпізнавати код без використання спеціального обладнання, лише використовуючи програму на мобільному телефоні, ще більше сприяла поширенню технології.

QR-коди почали наносити на продукцію замість/поряд зі «звичайними» штрих-кодами, використовувати в рекламі, в дизайнерських колекціях модного одягу. QR-код із промислового стандарту виріс у явище культури.

6

Внаслідок стрімкого поширення мобільних технологій з'явилася можливість миттєво заносити в свій телефон текстову інформацію, додавати контакти в адресну книгу, переходити за web-адресами тощо [11].Технологію успішно застосовують в електронній документації, (існують електронні QR-білети, візитні картки), в інтернет-авторизації (яскравий приклад – інтернет-банкінг Приват24), торгівлі, креативній рекламі, музеях та міжнародному туризмі (наприклад QR-коди у Львові). В Японії навіть на кладовищах(!) використовуються QR-коди  [17].

7

У 2014 році колектив розробників був удостоєний найвищої нагороди European Inventor Award у галузі телекомунікацій, що проводилась під егідою European Patent Organisation. Масахіро Хара й Такаюкі Нагая заслужено отримали нагороди за внесок у економічну і соціальну сфери людської діяльності. Саме так охарактеризували вплив винаходу в European Patent Organisation [18].

Однак існують і недоліки технології [4]. Наприклад у рядові випадків нанесення QR-коду може бути недоречним, доцільніше використати короткі написи або ілюстрації. Також можлива загроза при скануванні коду запускати шкідливий контент.

Але технологія не стоїть на місці! QR-код вже має ряд «нащадків» [17]:

  • Micro QR-код – «урізана» версія стандарту. У випадках нанесення коду на поверхні невеликої площі MicroQR є ідеальним варіантом. Цей стандарт позбавлений деяких переваг «традиційного» QR-коду (відсутня можливість зчитування коду із довільного кута, менша кількість версій, відсутність корекції помилок у молодших версіях), але він уже активно використовується у різних сферах [12].
  • iQR-код – покращена версія «традиційного» QR-коду, яка є відповіддю DENSO WAVE найближчому конкурентові – двовимірному DataMatrix коду та його модифікації DataMatrix ECC 200 [7]. До найбільш гучних нововведень слід віднести збільшення рівня стиснення даних, зменшення площі самого коду, підтримка генерування прямокутних кодів, збільшення об'ємів зберігання та фантастична можливість відновлення до 50% втраченої інформації  [10].

8

  • SQRC – захищена версія «традиційного» QR-коду. У цій версії розробники DENSO WAVE додали підтримку конфіденційності до технології кодування. Сам QR-код генерується на спеціалізованому обладнанні і на вигляд зовсім не відрізняється від«традиційного». Лише частину інформації можна розпізнати сканером звичайного коду. Для зчитування всієї інформації потрібен спеціалізований сканер та ключ-дешифратор [16].

9

Отже, підіб’ємо підсумки. У статті ми детально розповіли про основні сфери застосування та перспективами розвитку технології QR-кодування, зробили історичний огляд розвитку «батьківської» технології – штрих-кодування, визначили історичні передумови створення QR-коду, описали колектив розробників технології, розглянули основні можливості та внутрішні принципи роботи стандарту QR-кодування.

Окрім того, ми розглянули три перспективні розробки, які в майбутньому можуть доповнити або повністю замінити існуючу технологію. Можна стверджувати, що в найближчому майбутньому QR-кодування буде застосовуватись у все нових і нових сферах людської діяльності та швидкої заміни цьому стандарту поки що не передбачається.

На завершення пропонуємо Вам два відео-ролики, які дуже наочно і в науково-популярному вигляді розкривають інформацію про описану нами технологію та про самих розробників:

https://www.youtube.com/watch?v=vqB4nL_DJH0

https://www.youtube.com/watch?v=ZLhoBWlrTtw

СПИСОК ВИКОРИСТАНОХ ДЖЕРЕЛ

  1. Історія появи штрих-коду [Електронний ресурс] – Режим доступу до ресурсу: http://cnrmk.com.ua/?p=477
  2. Коды Рида-Соломона. Простой пример[Електронний ресурс] – Режим доступу до ресурсу: https://habrahabr.ru/post/191418/
  3. Читаем QR код[Електронний ресурс] – Режим доступу до ресурсу: https://geektimes.ru/post/256932/
  4. Что же не так с QR-кодами?[Електронний ресурс] – Режим доступу до ресурсу: https://habrahabr.ru/post/206924/
  5. Barcode History[Електронний ресурс] – Режим доступу до ресурсу: http://www.barcoding.com/information/barcode_history.shtml
  6. Error correction feature[Електронний ресурс] – Режим доступу до ресурсу: http://www.qrcode.com/en/about/error_correction.html
  7. GS1 DataMatrix Guideline [Електронний ресурс] – Режим доступу до ресурсу: http://www.gs1.org/docs/barcodes/GS1_DataMatrix_Guideline.pdf
  8. HistoryQRCode[Електронний ресурс] – Режим доступу до ресурсу: http://www.qrcode.com/en/history/
  9. Information capacity and versions of QR Code [Електроннийресурс] – Режимдоступудоресурсу: http://www.qrcode.com/en/about/version.html
  10. iQR Code  [Електронний ресурс] – Режим доступу до ресурсу: http://www.qrcode.com/en/codes/iqr.html
  11. Many ways of using QR Codes[Електронний ресурс] – Режим доступу до ресурсу: http://www.qrcode.com/en/about/howtouse.html
  12. Micro QR Code [Електронний ресурс] – Режим доступу до ресурсу: http://www.qrcode.com/en/codes/microqr.html
  13. QR C[Електронний ресурс] – Режим доступу до ресурсу: https://en.wikipedia.org/wiki/QR_code
  14. QRCodeStandardization[Електронний ресурс] – Режим доступу до ресурсу: http://www.qrcode.com/en/about/standards.html
  15. QR Code Tutorial[Електронний ресурс] – Режим доступу до ресурсу: http://www.thonky.com/qr-code-tutorial/introduction
  16. SQRC [Електронний ресурс] – Режим доступу до ресурсу: http://www.qrcode.com/en/codes/sqrc.html
  17. Types of QR Code [Електронний ресурс] – Режим доступу до ресурсу: http://www.qrcode.com/en/codes/
  18. WinnersthePopularPrize - MasahiroHaraandTakayukiNagaya[Електронний ресурс] – Режим доступу до ресурсу: https://www.epo./learning-events/european-inventor/finalists/2014/hara.html

Статтю підготував студент ІІІ курсу спеціальності інформатика Туртуріка Віктор Ігорович у межах звіту про вивчення курсу «Історія науки і техніки» (викладач – професор Р.Я.Ріжняк).