Русский
Русский
English
Статистика
Реклама

Qr-коды

QR-художество

12.10.2020 22:07:24 | Автор: admin

На хабре уже обсуждалось устройство QR-кодов и украшение их произвольными рисунками, но дизайнерская мысль до сих пор работала только в двух основных направлениях: замена квадратных модулей на более интересные формы, либо замена части кода рисунком. Такие художества возможны благодаря тому, что блоки данных в QR-коде дополняются кодами Рида-Соломона, позволяющими восстановить до 30% искажённых байтов. Основываясь на этом, дизайнеры QR-кодов давно уже наловчились заменять участок, занимающий до 30% площади кода, какой-нибудь картинкой. Я же решил испробовать другой подход художественно искажать в QR-коде отдельные биты в целях получения интересного изображения. Например, в этом коде инвертированы лишь 50 модулей из 841:

Важно понимать деление QR-кода на части. Например, QR-код размером 2929 модулей (Version 3) с уровнем избыточности Q либо H состоит из двух перемежающихся блоков по 35 байт, где каждый байт это восемь модулей, расположенных по четыре в двух соседних столбцах:

На этом рисунке один блок показан голубым цветом, другой сиреневым; и в каждом из них независимо от второго допускается искажение до 11 байт. (Сколько бит внутри одного байта искажены не имеет значения.) В зависимости от размера QR-кода и уровня избыточности, число перемежающихся блоков может быть от 1 до 81, а размер одного блока от 25 до 153 байт: чем выше уровень избыточности, тем мельче каждый блок. Удобны для экспериментов коды Version 4 H, состоящие из четырёх блоков по 25 байт, в каждом из которых можно испортить по 8 байт:

Но рисовать по сиренево-голубому трафарету и подсчитывать число изменённых байтов в каждом блоке не так удобно, как иметь редактор QR-кодов, который бы подсвечивал модули, изменение которых приведёт ко сбою расшифровки. Именно такой редактор я создал на https://tyomitch.github.io/qr.html с использованием библиотеки https://github.com/cozmo/jsQR, реализующей расшифровку QR-кодов на чистом JS.

Подробнее..

Умные кассы для ВкусВилла

10.11.2020 14:15:42 | Автор: admin
С точки зрения пользователя процесс онлайн-покупки продуктов у ВкусВилла выглядит просто открыл приложение (самого ВкусВилла или партнеров доставки и агрегаторов), выбрал нужные товары, оплатил, дождался, получил. В этом посте мы немного расскажем о том, как работают кассы ВкусВилла изнутри, как они участвуют в процессе онлайн-заказа и как они связаны со всей остальной экосистемой магазина.

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



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

Для начала расскажем про архитектуру нашего кассового решения. С точки зрения взаимодействия решение имеет клиент-серверную архитектуру. С точки зрения развертывания оно ближе к десктопному, т.к. обе части (и клиент, и сервер) располагаются локально, на каждой отдельно взятой кассовой машине. Ядро написано на Java, а фронт на JavaScript (React). Для хранения данных используется PostgreSQL. Если говорить про обвязку, то всё, что касается оборудования, написано на Go, API на Python.

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

image

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

Стек технологий, который мы использовали при реализации, позволил нам сделать кроссплатформенное решение. И на большинстве точек в качестве ОС используется Linux Ubuntu, что позволяет дополнительно экономить на лицензиях.

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

Адаптация кассы для работы с заказами


Для того чтобы понять объем доработок на кассе, нужно рассмотреть процесс онлайн-заказа покупателя.

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

Вот как это выглядит на схеме:



1. Оформление заказа покупателем

Содержимое заказа попадает на отдельный сервер ВкусВилла, в котором под запрос доставки была изменена структура БД. Когда заказ оформлен, после попадания на сервер его данные аккуратно раскладывается в БД.

2. Отображение заказов на кассе

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

3. Печать сборочного чека

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

4. Регистрация собранных товаров
После сборки корзины кассир-сборщик возвращается к кассе и сканирует штрих-код со сборочного чека. После этого корректирует позиции заказа в соответствии с собранными товарами и согласует это с покупателем. Затем прикладывает к сканеру уже свой собственный бейджик это решает сразу несколько задач. Во-первых, мы знаем, кто какой заказ собирал. Помните, как раньше на некоторых видах пищевой продукции можно было встретить штамп ОТК и пометку Сборщик Иванов П.В.. Здесь что-то подобное, только видим это лишь мы в системе, и можем повлиять на качество сборки конкретного сотрудника, в случае появления большого количества рекламаций на обработанные им заказы. Во-вторых, на качество каждой сборки подвязана система мотивации сотрудников это обеспечивает добавочный контроль качества.

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

5. Выдача заказа

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

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

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

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

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

Умные тележки


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

image

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

Но сначала расскажем, как в принципе происходит авторизация покупателя на кассе с помощью QR-кода.

  1. Покупатель подходит к кассе и нажимает Сгенерировать код.
  2. Касса отправляет запрос на центральный сервер ВкусВилла и сообщает свой уникальный номер и запрос на регистрацию нового QR-кода.
  3. На сервере регистрируется этот код, в таблице БД создается соответствующая запись, что в таком-то магазине создан такой-то QR-код.
  4. Покупатель видит сгенерированный QR-код на мониторе кассы, сканирует его с помощью мобильного приложения.
  5. Приложение (в котором пользователь уже залогинен) распознает зашитый в QR-код номер и посылает запрос на сервер.
  6. На сервере запись с распознанным QR-кодом дополняется данными о покупателе из приложения.
  7. Касса всё это время мониторит эту таблицу на предмет изменений и появления новых данных. Как только замечает их выдает оповещение на мониторе об успешной авторизации.
  8. При этом, если за 30 секунд касса так и не обнаружила информацию о покупателе в таблице, то выводит сообщение об ошибке авторизации.

Так вот, авторизация тележек на кассах работает примерно так же, но со своими особенностями.

Теперь расскажем непосредственно о тех вариантах интеграции тележек с кассами, которые мы реализовали.

1 попытка. QR-коды


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

И вроде бы все здорово. Но проблема в том, что сам QR-код на мониторе кассы всегда выводится в одном и том же месте экрана. Сканер на тележке статичный, встроенный в корпус примерно на высоте 50 см от земли. А вот кассы в магазинах стоят на разной высоте отличаться может и высота прилавков на обычных кассах, и размещение касс самообслуживания. Так что нормально считывать код во всех магазинах сети разом таким способом не вышло сканер не выносной, его специально делали одним целым с тележкой. А поднимать вручную тележку в попытках правильно считать код тоже так себе идея.

Поэтому решили попробовать вариант с RFID-метками.

2 попытка. RFID-метки


К кассе подключен считыватель RFID-меток. На каждой телеге закреплена собственная метка.
Когда покупатель подъезжает с тележкой к конкретной кассе, касса замечает метку и принимает данные с этой тележки, выдавая на экран список покупок.

Тут проблема была в том, что тестировалось это всё в условиях, близким к идеальным. На деле же тележку можно не очень ровно подвезти к кассе, особенно, когда посетителей много. Или в магазине кассы могут стоять чуть ближе друг к другу, и пользователь должен подъезжать к нужной кассе максимально близко. В условиях деятельности нормального магазина это работает с перебоями уже при средней загруженности.

3 попытка. Авторизация с ручным вводом номера телеги


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

Поэтому, когда тележка передает данные о списке товаров на сервер, она передает еще и этот номер например, тележка номер 33782 из такого-то магазина и список просканированных товаров.

Далее покупатель идет к кассе и выбирает опцию загрузки товаров из телеги, вводя лишь номер своей тележки. И всё, с кассы уходит запрос на сервер, а там уже есть данные о списке товаров в тележке с этим номером. Всё это выводится на экран кассы.

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

О сложностях


Может показаться, что реализация кассового решения проста прокачал основную логику, поддерживаешь API, и всё как-то работает само собой. Но всё немного не так.

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

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

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

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

Если говорить не только про сложности доставки, а про разработку вообще, у ВкусВилла очень разношерстное оборудование по всем магазинам. И нам изначально нужно было закладываться таким образом, чтобы можно было максимально просто запуститься на всем этом парке оборудования.

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

Планы развития


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

Кстати, мы сейчас активно расширяем команду, все описанные кейсы, доделки, работоспособность систем и интеграций ее работа. Планируем использовать максимально свежие решения и идеи, добавлять новые возможности как в приложение для покупателей, так и во внутренние системы. А вот тут можно посмотреть полный перечень вакансий hh.ru / наш карьерный сайт.

Буду рад ответить на ваши вопросы.
Подробнее..

Эволюция баркода

17.06.2020 12:21:27 | Автор: admin
Баркод, безусловно, относится к одному из тех изобретений человечества, которые изменили течение нашей жизни. Благодаря появлению штрихового кодирования и его последующей эволюции, многие обыденные действия не только значительно упростились и ускорились, но иногда и приобрели неожиданные формы. В процессе нашей деятельности по разработке и улучшению алгоритмов интеллектуального распознавания документов (IDR) и движка распознавания баркодов Smart BarcodeReader мы постоянно систематизируем знания в предметной области. Понимание того, как развивается технология, позволяет нам совершенствовать наши разработки, делать их более быстрыми, точными и эффективными. Сегодня мы расскажем о том, как эволюционировал (и продолжает эволюционировать) баркод от линейного черно-белого рисунка к многомерной конструкции.



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

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

Следующий подход к кодированию товарного ассортимента был предпринят в 1948 году, когда аспирантами-энтузиастами из Дрексельского технологического института (США) началась проработка технологии сбора аналитической информации о покупках непосредственно на кассах в супермаркетах на основании маркировки товаров. Тогда группа исследователей создала гибрид технологии оптической звуковой дорожки (optical soundtrack) и азбуки Морзе. В классической технологии оптической звуковой дорожки по краю кинопленки наносится покрытие с неравномерной плотностью. Эта неравномерность приводит к тому, что интенсивность луча проектора, проходящего через него, также изменяется. Эти колебания яркости и преобразуются в звук.

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

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

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

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

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

В конце 60-х годов в США началась разработка универсальной системы нумерации товаров как средства идентификации. Система штрихового кодирования, которую начали применять в торговле, была разработана в 1972 году и получила название UPC Universal Product Code. Штрих-коды этой системы начали присваивать всем видам товаров, производимым и зарегистрированных в США и Канаде. Одноименная организация начала активную пропаганду и внедрение использования штрих-кодов в промышленность и торговлю. Первое историческое считывание штрих-кода стандарта UPC в рознице произошло в американском супермаркете в 1974 году.

С 1977 года в Западной Европе для идентификации потребительских товаров стала применяться аналогичная американской система под названием Европейский артикул (EAN European Article Numbering). Сегодня именно эта ассоциация и занимается распределением штрих-кодов для производителей товаров. Чтобы избежать дублирования номеров, штрих-коды товарам выдаются централизованно международной ассоциацией, включающей 98 организаций из 100 стран мира. Производитель может получить штрих-код для своего товара, предварительно зарегистрировавшись в этой ассоциации.

Штрих-коды семейств UPC и EAN оперируют достаточно небольшим алфавитом, позволяющим закодировать достаточно ограниченный объем информации. UPC, используемый в США, состоит из 12 символов, EAN из 13 цифр и является немного усовершенствованной модификацией кода UPC. Кодирующие символы это вертикальные полосы различной ширины и пробелы между ними. В стандартных линейных кодах зашифрована информация о стране происхождения товара, организации-изготовителе, непосредственно код товара. Для проверки корректности кода в конце размещается контрольная цифра и специальный знак, указывающий на то, что товар производится по лицензии.


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



Штрих-код типа UPC-A код разделен на 2 равные части и отображается в виде темных (штрихов) и светлых (пробелов) полос, которые кодируют 12-значный номер UPC-A. Каждая цифра это уникальный набор из 2 штрихов и 2 пробелов переменной ширины в 1, 2, 3 или 4 модуля (в данном случае минимальная дискретная ширина полосы). При этом общая ширина кодирующих полос для каждой цифры остается неизменной 7 модулей. Таким образом содержательная часть товарного кода UPC-A кодируется в 84 единицах.

Многие задавались вопросом, почему на разных штрих-кодах одинаковые цифры могут быть несколькими разными способами (некоторые даже строили на сей счет конспирологические теории). Делов в том, что алгоритм кодирования штрих-кода не совсем линейный. В правой и левой частях кода цифры кодируются неодинаково: чередование штрихов и пробелов в цифрах происходит по трем наборам последовательностей (A, B и С). В последовательности А темных модулей всегда нечетное количество, в наборах В и С четное. При этом набор В представляет собой инверсию набора а (штрихи заменены пробелами и наоборот), а набор С зеркальное отражение набора В. Знаки символа в числовых наборах А и В всегда начинаются слева со светлого модуля и заканчиваются справа темным модулем, а в числовом наборе С начинаются слева с темного модуля и заканчиваются справа светлым модулем. В левой стороне при кодировании цифр используются наборы А или В в зависимости от позиции цифры в коде, правая сторона кодируется набором C. Алгоритмы кодирования подробно прописаны в стандартах. Например, в этом.

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

Форматы штрих-кодов постоянно совершенствуются и меняются. На сегодняшний день помимо принятых в международном товарообороте стандартных Universal Product Code и European Article Numbering существует более 300 стандартов штрих-кодирования.

С 2005 года принят международный стандарт, в котором используются три основные типа кодирования информации о товарах:

  • EAN-8 (сокращённый) кодируется 8 цифр.
  • EAN-13 (полный) кодируется 13 цифр (12 значащих + 1 контрольная сумма).
  • EAN-128 позволяет кодировать любое количество букв и цифр, объединенных в регламентированные группы.

В отличие от EAN-8 и EAN-13, кодом EAN-128 (GS1-128) используется производителями, перевозчиками и торговыми компаниями для обмена данными о перевозимых грузах. В этом, более длинном коде, может содержаться расширенная информация, такая как номера накладных, индексы пунктов назначения, объемы перевозимого груза, коды товара и серийные номера изделий, сроки годности и пр.

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

Эра 2-D


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

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

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

Пример составного линейного баркода PDF417, появившийся в 1991 году и запатентованный в 1993. Код PDF417 состоит из строк, образуемых словами набором из чередующихся штрихов и пробелов (4 штриха, 4 пробела первое число из названия кода). Общая длина каждого слова 17 модулей (второе число в названии кода).

Помимо собственно содержательных слов, каждая строка состоит из старт-паттерна (крайнего левого набора, ключевых слов (индикаторов они занимают крайние позиции на строке), необходимых для коррекции ошибок, и стоп-паттерна (Впрочем, существует также и так называемый усеченный PDF417 (truncated), где исключен индикатор правой строки и уменьшен шаблон остановки до одной линии. Таким образом, усеченные PDF417 занимают меньше места, но они более восприимчивы к неправильному прочтению. Такой вариант PDF417 используют только там, где риск повреждения изображение кода минимальный). Так как все слова имеют одинаковую длину, размещенные одна под другой строки образуют колонки. В самом коде PDF417 как количество строк, так и количество столбцов может варьироваться: код может содержать от 3 до 90 строк, и иметь ширину от от 3 до 30 столбцов включительно, не считая столбцов со словами индикаторами. Подробная статья про кодирование PDF417 недавно выходила на Хабре здесь, а о возможности его ручного декодирования здесь.



Особенность кода PDF417 заключается в возможности кодировать информацию в текстовом режиме, числовом режиме и режиме данных (байт-режиме).

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

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

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

Код в матрице


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

Код Data Matrix


Код DataMatrix был изобретен компанией International Data Matrix в середине 1980-х для программы Space Shuttle, где требовалась маркирровка большого количестко деталей. Data Matrix был разработан до PDF417, а не предшествовал ему, как указывается в некоторых источниках. Важное преимущество кода его компактность и простота нанесения. В настоящее время Data Matrix описывается соответствующими стандартами ISO.



DataMatrix это двумерный штрих-код, который может хранить до 3116 цифр и до 2335 букв. Информация в баркоде Data Matrix кодируется черными и белыми квадратами (модулями) при этом минимальный линейный размер модуля 0.255 мм.

Шаблон поиска (finding pattern) в виде буквы L две сплошные линии на внешней стороне кода Data Matrix.Этот шаблон позволяет сканеру штрих-кода задать изображению правильную ориентацию и считать информацию в правильном порядке.

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

Зона тишины (quiet zone) это область отделяющая границу штрих-кода от фона и других изображений. Для Data Matrix ширина зоны тишины равна линейному размеру используемого модуля. Маленькие габариты для зоны тишины позволяют минимизировать площадь нанесения Data Matrix на поверхность.

Специфика Data Matrix позволяет читать его как в прямом так и отраженном свете (то есть при использовании инвертированного изображения, при котором светлые модули становятся темными).

Еще одно преимущество Data Matrix, что от квадратные модули могут быть заменены на круглые. Это дополнительно расширяет возможности использования различных технологий нанесения, например в виде тиснения или ударной гравировки. Впрочем, эта же технология замены квадратного модуля на круглый взята на вооружения и в других разновидностях кодов, например в QR-коде.

Стандартизированный код Data Matrix сегодня рассматривается как ключевое звено идентификации и маркировки фармацевтических товаров и медицинских изделий. С 1 июля 2020 года маркировка кодами Data Matrix станет обязательной для всех лекарств, находящихся в обороте в России.

Подробный процесс создания Data Matrix описан здесь.

Код AZTEC


Баркод типа Aztec появился в 1995 году, как пишут, в результате объединения лучших практик разработки баркодов предыдущих поколений. Вид и структура кода Azteс разработана таким образом, чтобы она была одинаково удобна как для нанесения и считывания. Символы в целом квадратные на квадратной сетке с квадратным центральным прицелом из концентрических темных и светлых квадратов типа яблочка мишени (в англоязычных описаниях используется термин bulls eye).

Самый маленький символ Aztec Code имеет площадь 15 x 15 модулей, а самый большой 151 x 151. Самый маленький символ Aztec Code кодирует 13 цифровых или 12 буквенных символов, тогда как самый большой символ Aztec Code кодирует 3832 цифровых или 3067 буквенных символов.



В этом материале мы не ставим своей задачей подробно разбирать каждый код в отдельности, тем более, что про Aztec великолепно написано во всех подробностях на Хабре здесь.

QR-код


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

QR код это еще одна разновидность матричного кода. Его название происходит от английского Quick Response Быстрый Отклик. Он был создан компанией Denso-Wave в 1994 году в Японии для внутреннего рынка (отличие QR-кода от других двумерных баркодов в том, что этот код позволяет кодировать символы японского (вернее, пришедшего из китая в японию) письма кандзи. Также в QR коде может быть заложена избыточная информация, которая позволяет закодировать определенные действия для программы смартфона или сканера для считывания.

Принципы кодирования QR-кода описаны достаточно подробно и их можно легко найти. Алгоритм того, как читать штрих-код не не сканером, а глазами, можно прочитать, например, здесь.

В таком QR-коде можно легко закодировать адрес интернет-страницы, которая будет открываться при наведении на нее мобильного телефона:



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



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

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



Перечисленные баркоды QR-коды позволяют кодировать цифровые и текстовые данные примерно с одинаковой эффективностью. Согласно сравнению, приведенному на сайте РИТ-сервис, специализирующейся на обработке штрих-кодов, QR-код позволяет кодировать большие объёмы цифровых данных на меньшей площади при одинаковом размере модуля по сравнению с Aztec и Data Matrix кодировать большие объёмы цифровых данных. Код Data Matrix уступает QR коду при кодировании более 88 цифр, Aztec уступает QR-коду при кодировании более 170 цифр. Но по эффективности кодирования текста QR-код значительно уступает Aztec, а Data Matrix превосходит только при объёме текста большем 298 символов. Однако, при кодировании текста набранного прописными (заглавными) буквами эффективности QR-код и Aztec близки, а Data Matrix уступает QR-коду уже при кодировании 88 букв.

Что объединяет все эти коды?


Машине важно понимать, что перед ней код, где находится его начало и конец. Для этого используются зоны тишины, специальные пограничные паттерны и прицелы. Кроме этого, машине необходимо понимать, в каком формате записаны данные, то есть как производить декодирование в виде цифр, цифро-буквенного текста, или в формате данных. Машина также должна иметь возможность скорректировать ошибки, чтобы случайное выпадение нескольких пикселов изображения баркода не приводило к его полной нечитаемости. Коррекция ошибок в кодах DataMatrix, Aztec, QR осуществляется с помощью кодов Рида-Соломона, исправляющих ошибки чтения и позволяющие распознавать данные даже в сильно испорченных кодах (вплоть до 30% поверхности).

Зачем вообще нужны баркоды?


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

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

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

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

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

В чем задача и проблемы распознавания баркодов?


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

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

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

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

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

А что дальше?


Где два измерения, там 3 и 4. В середине 2006 года Японская компания Content Idea of ASIA c гордостью заявили о том, что они изобрели первый в истории 3D-код. В PM-коде (от образовано от paper memory бумажная память ) в качестве третьего измерения к двумерному QR-коду был добавлен цвет. Добавление цветной компоненты, по заявлению изобретателя Татсуи Онода, если в черно белом двумерном QR-коде можно зашифровать 3 кб информации, то в трехмерном до 720 (то есть в 240 раз больше). Вместо ссылки на изображение, используя топологию цветного 3D-кода, можно зашифровать картинку целиком, а также небольшие видео и аудио фрагменты. Технология получила патенты в Японии и Европе. Судя по всему, проект развивался до 2013 года, а к настоящему моменту заморожен или закрыт. Сайт японской компании-изобретателя не обновляется с 2013 года, а скачать приложение в официальных магазинах приложений уже невозможно. (При желании его можно скачать с некоторых зеркал в сети и на размещенных на сайте разработчика образцах посмотреть, как оно работает).



В 2010 году Microsoft пошла дальше объявила о создании новой концепции высокоплотных цветных баркодов (High Capacity Color Barcode (HCCB)), где код был представлен уже в виде той же QR-подобной матрицы, однако в качестве элементов кода выступали не черные квадратные модули, а цветные (4 или 8 цветов) треугольники, каждый из которых занимал ячейки.



Проект HCCB тоже просуществовал до 2013 года: тогда Microsoft объявила о том, что проект не будет поддерживаться и был закрыт в 2015.Недавно в сети появилась информация о том, что Apple разрабатывает новые типы кодов, которые будут доступны в будущих модификациях ОС. Речь идет о круглых баркодах, где информация кодируется в виде 4-х цветных капель размещенных по центру и по периметру круга.

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

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

В качестве послесловия


В 2013 году появилась забавная программа для мобильников Barcode KANOJO, которая декодировала (или делала вид, что декодировала) баркод не совсем привычным способом. Вместо заложенного набора символов на экране мобильного появлялась виртуальная подруга (kanojo) персонаж аниме соответствующая просканированному коду. С ней можно было дружить, завоевывать доверие (и любовь???). Проект просуществовал достаточно недолго, персонажи не генерировались а, скорее всего, просто выбирались из некоторого набора созданных заранее с внешнего сервера данных, который сейчас недоступен.
Подробнее..

Неоконченная история QR-кода

21.03.2021 20:19:46 | Автор: admin

Мы встречаемся с ними всюду: на водосточных трубах жилых массивов и поручнях метро. В рекламных роликах крупных брендов и сервисах регистрации. Даже в видеоигре Alan Wake QR-коды, простите за каламбур, засветились в качестве пасхалок с дополнительным контентом.

Чуть ли не ежегодно возникают убийцы QR-кодов, а им самим предрекают скорую гибель. Но уже не одно десятилетие люди продолжают пользоваться этими черно-белыми квадратиками. Зачем? Почему? Кто их придумал? Попробуем разобраться под катом.

Япония издавна славится разного рода изобретениями, призванными сделать бизнес-процессы и производственные задачи как можно более компактными и эффективными. В начале 1990-х годов перед инженерами крупной машиностроительной компании Denso стояла нетривиальная задача: создать унифицированный штрих-код (или нечто подобное) для маркировки деталей и компонентного сканирования. На тот момент внутри компании были приняты более 10 кодов разного назначения, и сотрудники завода жаловались на то, что работа с кодами требует большой концентрации, а сами коды содержат чрезвычайно мало полезной информации.

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

Китайские шашки и японская смекалка

Масахиро Хара, сотрудник отдела разработки Denso Wave, в 1992 году взялся за решение этой задачи. Новые коды должны были отвечать следующим требованиям:

  • объем информации, которую возможно хранить в коде, должен существенно возрасти;

  • процесс считывания должен быть как можно более точным и быстрым;

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

  • считывающее устройство должно быть простым и дешевым.

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

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

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

К 1994 году новый формат кода (Quick Response Code) был повсеместно внедрен на заводах производственной цепочки автоконцерна Toyota, но быстро перетек из цехов в другие бизнес-сферы. Масахиро Хара вспоминает, что вплоть до презентации нового формата кода он не был уверен, что его детище приживется в компании. Да, скорость считывания данных и надежность формата не вызывали сомнений, однако 2D-сканеры могли стать серьезным препятствием на пути внедрения технологии. Тем не менее код был воспринят и главами, и рядовыми сотрудниками корпорации очень тепло. В течение следующего месяца удалось успешно внедрить его в собственную Kanban-программу Toyota.

Не секрет, что японцы любят свои изобретения и не выпустят любимую игрушку из рук, пока не появится её более технологичный наследник. То же произошло с QR-кодами: с 2002-2003 года их стали применять в ресторанах для маркировки контейнеров, в делопроизводстве. Известны также случаи применения QR-кодов в школах, музеях и на кладбищах.

QR-коды захватывают мир

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

Говорить о версиях QR-кодов можно достаточно долго: существуют и маленькие версии (21х21px), и более крупные 177х177px. Вот основные принятые во всем мире кодировки данных:

  • цифровая кодировка, до 7089 цифр;

  • алфавитно-цифровая кодировка, до 4296 символов (или до 2953 символов с поддержкой кириллицы);

  • байтовая кодировка, до 2953 байт;

  • кодировка кандзи, до 1817 иероглифов.

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

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

Примечание: QR-коды ниже представлены исключительно для демонстрации технологии. Автор статьи не несет ответственности за их содержание сканируйте на свой страх и риск :)

Двумерный креатив

Игра с цветом

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

Игра с формой

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

Особняком здесь стоят дизайнерские варианты QR-кодов: это не просто вписывание квадратика с изображением в поле кода, это целое произведение искусства. Ну, почти искусства.

Коды с нестандартной ориентацией в пространстве также не новы.

Кроме того, периодически можно встретить анимированые QR-коды, однако это, скорее, модная диковинка, нежели оправданное использование технологии.

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

Игры с применением

Открытки, футболки, бижутерия с памятными шифровками даже сюда добрались QR-коды.

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

Ритейл не остался в стороне: в QR-кодах шифруются коды скидочных купонов и номера карт для программ лояльности. Впрочем, здесь у QR-кода есть сильные конкуренты, например, NFC-решения.

QR-коды все еще популярны среди рекламодателей: в кодах шифруются адреса сайтов и ссылки на скачивание приложений своеобразная попытка перевести пользователей из оффлайна в онлайн.

Сомнительное решение наручные часы, которые показывают время в зашифрованном варианте.

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

Японская виза здесь без комментариев. :)

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

Татуировки опять же, без комментариев. Главное, чтобы мастер ничего не напутал. Агент 47 шлет пламенный привет.

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

Проект бизнес-центра в ОАЭПроект бизнес-центра в ОАЭ

Киса и Ося были тут: QR-коды используются также в так называемой психогеографии. Люди записывают свои мысли, ассоциации и воспоминания, связанные с разными местами, и распространяют их в виде QR-кодов.

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

Игры с содержанием

Пароли от гостиничного Wi-Fi, географические координаты, ссылки на меню это весьма традиционные варианты использования кода. Как насчет чего-то более интересного?

Сервис QRInfoPoint предлагает достаточно забавное решение для передачи музыки, фото или видео через QR-код. Задумка проста и элегантна: разумеется, вместить целый аудио-файл в код не получится, однако вполне возможно залить его на сервер (или воспользоваться уже существующей ссылкой, например, на YouTube), а в код интегрировать адрес html-странички с соответствующим тегом и атрибутом src, по которому будет загружена и проиграна композиция.

Симпатичные QR-коды использует Nintendo в играх серии Pokemon (и некоторых других) для передачи информации, обмена покемонами и многого другого.

Совершенно сумасшедший, но работающий QR-код. Опять же, в стилистике Nintendo.

Попытка зашифровать в QR-коде целую игру:

Убийцы и прочие родственники QR-кода

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

Приложение PhonoPaper позволяет зашифровать аудио до 10 секунд в изображении или произвести расшифровку.

Приложение Честный знак для проверки подлинности товаров и получения дополнительной информации по различным кодам.

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

Clickable paper проект, нацеленный на получение дополнительной информации из печатных материалов.

Убийца QR-кодов SnapTag обведи логотип кружком, и дело в шляпе.

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

Подробнее..

Возможности QR-кодов

09.05.2021 14:14:20 | Автор: admin
image

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


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


В этой статье будут рассмотрены некоторые из этих стандартов и описаны возможные типы данных, которые можно спрятать в qr-код.


Все примеры были протестированы с помощью сканера в IOS 14 и the-qrcode-generator.com


Ссылка


Наиболее распространенным применение qr-кода это кодирование ссылок. Для этого просто закодируйте текст ссылки в qr-код. Добавьте протокол https:// в начало ссылки, чтобы убедиться, что сканер распознает текст именно как ссылку.


Пример qr-кода с ссылкой Пример qr-кода с ссылкой

В дикой природе встречается префикс urlto:. Кодируемый текст тогда выглядит, как urlto:habr.com. Однако данный формат поддерживается не всеми современными сканерами (например, не работает во встроенном в IOS 14)


Адрес электронной почты


Чтобы закодировать адрес электронной почты, например info@habr.com. Нужно дополнить адрес до ссылки ( подробнее про URI scheme ), которая будет распознана, как команда открыть приложение почты: mailto:info@habr.com. Добавляя параметры к ссылке, можно указать тему письма, его содержание и многое другое. Стандарт mailto RFC 6068 является частью интернет стандартов IETF.


Поэкспериментировав, можно понять, что умный сканер в IOS 14 распознает просто закодированный email и предлагает написать на него письмо. Однако, чтобы указать другие параметры, уже потребуется mailto: префикс.




# Только адрес получателя (распознается как почта в сканере IOS 14)someone@habr.com# С использованием mailto схемыmailto:someone@habr.com# Адрес и тема письмаmailto:someone@habr.com?subject=Hello%20from%20Habr# Получатель, сс: копия, bcc: скрытая копия и тема письмаmailto:someone@habr.com?cc=someoneelse@habr.com,another@habr.com,me@habr.com&bcc=lastperson@habr.com&subject=Big%20News# Адрес, CC, BCC, тема и текст письмаmailto:someone@habr.com?cc=someoneelse@habr.com,another@habr.com,me@habr.com&bcc=lastperson@habr.com&subject=Big%20News&body=QR-code%20are%20cool.

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


Номер телефона



Чтобы закодировать номер телефона, нужно использовать tel url-схему. Чтобы гарантировать правильность распознавания номера, лучше указывать полную версию номер (например, код страны + код города + номер).


Как и с адресом электронной почты, просто закодированный номер телефона распознается в сканере IOS 14.


# Только номер+78005553535# Tel url-схемаtel:+78005553535                                            

Контактная информация



Для передачи контакта существует несколько форматов:


  • NTT DoCoMo MECARD


    Этот формат похож на предыдущие, но уже не является ссылкой.


    MECARD:N:Owen,Sean;ADR:76 9th Avenue, 4th Floor, New York, NY 10011;TEL:12125551212;EMAIL:email@example.com;;                                                    
    

    Вначале идет префикс с указанием формата MECARD, после двоеточие через точку с запятой перечисляются параметры в формате {ключ}:{значение}. В конец добавляется еще одна точка с запятой.


  • BIZCARD (документации по этому стандарту я не смог найти)


    BIZCARD:N:Sean;X:Owen;T:Software Engineer;C:Google;A:76 9th Avenue, New York, NY 10011;B:+12125551212;E:email@google.com;;
    

    Синтаксис похож на предыдущий формат

  • vCard


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


    BEGIN:VCARDN:Smith;John;TEL;TYPE=work,VOICE:(111) 555-1212TEL;TYPE=home,VOICE:(404) 386-1017TEL;TYPE=fax:(866) 408-1212EMAIL:smith.j@smithdesigns.comORG:Smith Designs LLCTITLE:Lead DesignerADR;TYPE=WORK,PREF:;;151 Moore Avenue;Grand Rapids;MI;49503;United States of AmericaURL:https://www.smithdesigns.comVERSION:3.0END:VCARD                                                    
    

    Некоторые из доступных параметров описаны в таблице ниже.


    Ключ

    Тип

    Description

    Format

    BEGIN

    Обязательный

    Все vCards должный начинаться с этого параметра

    BEGIN:VCARD

    N

    Опциональный

    Полное имя

    N:Smith;John;

    TEL;TYPE

    Опциональный

    Номера телефонов и их типы

    TEL;TYPE=work,VOICE:(111) 555-1212 TEL;TYPE=home,VOICE:(404) 386-1017 TEL;TYPE=fax:(866) 408-1212

    EMAIL

    Опциональный

    Адрес электронной почты

    EMAIL:smith.j@smithdesigns.com

    ORG

    Опциональный

    Название компании

    ORG:Smith Designs LLC

    TITLE

    Опциональный

    Должность

    TITLE:Lead Designer

    ADR; TYPE

    Опциональный

    Домашний и рабочий адреса в формате: Street; City; State; Postal Code; Country

    ADR;TYPE=WORK,PREF:;;151 Moore Avenue;Grand Rapids;MI;49503;United States of America

    URL

    Опциональный

    Веб-сайт

    URL:https://www.smithdesigns.com

    VERSION

    Обязательный

    Версия vCard

    VERSION:3.0

    END

    Обязательный

    Закрывающий параметр

    END:VCARD


SMS



Для отправки смс существует формат со url-схемой sms:, похожей на отправку email.


# Отправить смс на номерsms:+15105550101# Отправить определенный текстsmsto:+15105550101:hello there                                            

Формат smsto: является аналогом sms:, но только с помощью него мне удалось передать текст сообщения (все тесты проводились на IOS 14).


FaceTime


В документации IOS есть информация о url-схемах для доступа к звонкам FaceTime


Пример qr-кода с вывозом FaceTime Пример qr-кода с вывозом FaceTime
# FaceTime видео-звонокfacetime:+18005551212facetime:me@icloud.com# FaceTime аудио-звонокfacetime-audio:+18005551212facetime-audio:me@icloud.com                                           

Карты



Для передачи точки на карте используется geo: url схема. Через запятую перечисляются широта, долгота и опционально высота над уровнем моря (в метрах).


# Координатыgeo:40.71872,-73.98905# Координаты + высотаgeo:40.71872,-73.98905,100

Однако более современным способом являются простые ссылки, генерируемые самим приложением Карты. В этом случае доступно больше параметров.


# Apple mapshttps://maps.apple.com/place?address=400%20Broad%20St,%20Seattle,%20WA%20%2098109,%20United%20States&auid=17457489312301189071&ll=47.620521,-122.349293&lsp=9902&q=Space%20Needle# Google mapshttps://maps.google.com/?address=400%20Broad%20St,%20Seattle,%20WA%20%2098109,%20United%20States&auid=17457489312301189071&ll=47.620521,-122.349293&lsp=9902&q=Space%20Needle

События в календаре



iCalendar формат используется для хранения календарей. Компонент vEvents отвечает за хранения событий, он и используется для кодирования в qr-код.


BEGIN:VEVENTUID:19970901T130000Z-123401@example.comDTSTAMP:19970901T130000ZDTSTART:19970903T163000ZDTEND:19970903T190000ZSUMMARY:Annual Employee ReviewCLASS:PRIVATECATEGORIES:BUSINESS,HUMAN RESOURCESEND:VEVENT                                            

WiFi сети


После сканирование такого qr-кода устройство (Android, iOS 11+) предложит подключиться к сети.

Пример qr-кода для подключения к WiFi Пример qr-кода для подключения к WiFi
WIFI:T:WPA;S:mynetwork;P:mypass;;                                            

Другие параметры приведены в таблице ниже


Ключ

Пример

Описание

T

WPA

Тип аутентификации; может быть WEP, WPA или WPA2-EAP, или nopass для сети без пароля.

S

mynetwork

Название сети SSID. Обязательный параметр. Если строка может быть интерпретирована как шестнадцатеричное число, нужно заключить ее в двойные кавычки.

P

mypass

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

H

true

Необязательный параметр. Значение true указывает, что сеть скрыта.

E

TTLS

(WPA2-EAP) EAP method, например TTLS или PWD

A

anon

(WPA2-EAP) Anonymous identity

I

myidentity

(WPA2-EAP) Identity

PH2

MSCHAPV2

(WPA2-EAP) Phase 2 method, например MSCHAPV2


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


Telegram



У телеграма есть своя url-схема, которая позволяет делиться ссылками.


# Простая ссылкаhttps://t.me/share/url?url={url}&text={text}https://telegram.me/share/url?url={url}&text={text}# Команда для приложенияtg://msg_url?url={url}&text={text}                                            

Подробнее про возможности поделиться через телеграм можно почитать в документации.


Выводы


Многие приложения имеют url-схемы, которые дают возможность обращаться к ним по ссылкам. Эти ссылки, в свою очередь, можно спрятать в qr-коды. Однако для некоторых типов данных были разработаны собственные текстовые форматы, которые подходят для сохранения в qr-коды.


Источники



Облачные серверы от Маклауд быстрые и безопасные.Зарегистрируйтесь по ссылке выше или кликнув на баннер и получите 10% скидку на первый месяц аренды сервера любой конфигурации!
Подробнее..

QR-коды для учета мусоровозов. Ч. 1

01.10.2020 20:16:38 | Автор: admin

Зачем я занялся этим вопросом? Меня беспокоит, как гражданина проблема мусора. А учет работы мусоровозов, одна из первых задач для возможностей снижения загаживания так полюбившейся мне Ленинградской области.

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

На сегодняшний день в Ленинградской области есть Комитет Цифрового Развития. Эта организация совместно с другими комитетами в т.ч. реализовывает различные ИТ-проекты, закупая их естественно по 44-ФЗ. Я не вижу ничего плохого, когда появляется необходимость в той или иной системе, ее заказывают и запускают в работу. Есть рабочие места, есть улучшение работы и деятельности организаций, оказывающих от имени государства услуги.

Не так давно Губернатор Ленинградской области Александр Юрьевич Дрозденко заявил, что для того, чтобы эффективнее отслеживать мусоровозы Санкт-Петербурга и Ленинградской области, необходимо им всем выдать QR-коды. Сделать такую систему.

Spoiler

"Самое страшное, что у нас сейчас происходит - это свалки в лесах, эти "закапушки".

Александр Дрозденко, губернатор Ленинградской области

Что меня настораживает во всем этом?

  1. У государства уже есть закупленная: Региональная информационно-навигационная система Ленинградской области (РИНС)

  2. У любого мусоровоза есть ГРЗ (государственный регистрационный знак, типа: А123ВЕ47RUS), а так же с завода установленные системы ГЛОНАСС, ЭРА-ГЛОНАСС и может доукомплектовываться тахографом.

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

Конечно я решил подкараулить машины и понял, что единственное, что в принципе удобно и доступно разглядеть, это государственный регистрационный знак. Я могу его увидеть и запомнить даже у проезжающих авто. А значит машина должна быть в едином реестре, что упрощает задачу. И если уж наносить QR-код, то по бокам на весь размер и со всех сторон, в том числе и на крыше авто. Тогда по этому коду-ссылке можно перейти на страницу такого реестра. А тут как говориться уже не нужно магии.

Какой же должна быть логика системы?

Увидел гражданин машину с мусором, перешел на сайт "мусоровозы" и ввел номер в формочку. Или отсканировал громадный QR-код. Который не самой накладной на лобовом стеклышке листа А4, а нормальный, большой, со всех сторон и даже на крыше.

По результатам выдачи формы увидел: транспортную накладную, данные об авто и фото, а так же точку на карте. Всё как в том же AIS, да и любой другой системе подобного типа.

Логика работы мусорной компании или мусоровоза-частника?

  1. Регистрируемся как пользователь гос.портала;

  2. Регистрируем каждую машину и водителя;

  3. У водителя смартфон, на котором он может запустить мобильную версию сайта (зачем писать еще и мобильное приложение - верно?) и поставить машину в рейс, с указанием точек или принять готовое задание, сфотографировать к заданию накладные и даже фактические фотографии того, как и откуда он увез и как и куда он вывез;

  4. На каждый авто мы можем в публичной части вывести нужный нам отчет :)

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

Смоделировать такую историю я взялся на 1С Битрикс, а если точнее Битрикс24. Под рукой оказался именно он, в нем можно накликав мышкой автоматизировать кучу бизнес-процессов. Хотя может стоит и на Python + Django.

Почему выбор пал именно на него?

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

Во вторых - реализация автоматизации задач на Битрикс доступна любому мыслящему руководителю;

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

Что я прошу от сообщества?

На Хабре очень много классных ребят и девчат. А значит, можно обсудить данный вопрос и его целесообразность, а так же возможно озвучить свои мысли и предложения для того, чтобы наконец наши государственные слуги смогли качественно реализовывать системы, не флудя в соц.сетях о том, что любые решения кроме тех, которые они делают жутко проприетарными с непонятными стоимостями и функционалом являются отстоем. Мы же знаем, что Битрикс, это всего лишь конструктор сайтов? :)

Кто, как видит решение проблемы учета мусоровозов и возимых ими отходов без серьёзных бюджетных затрат?

Не кидаться в друг друга какахами, не минусовать меня или кого либо еще. Может я и дурак, но давайте жить дружно хотя бы по этому вопросу?

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

И немного самокритики.

Подробнее..

Как ВТБ помогает снизить комиссию за приём платежей до 0,4 с помощью QR-кода

03.12.2020 10:23:07 | Автор: admin

С 2019 года в России работает система быстрых платежей (СБП) возможность переслать деньги в любой банк участник системы по номеру телефона и, что не менее важно, новый способ для юрлиц принимать платежи по QR-коду. Мобильный банк сейчас в кармане у многих, и мы подумали: почему бы не сделать такой продукт, который позволит легко, быстро и c низкой комиссией принимать платежи от покупателей и делать это там, где удобно?

Сказано сделано. За три месяца полностью на удалёнке мы разработали мобильное приложение и провели пилот, в рамках которого обкатали сервис в четырёх городах, а уже сейчас он доступен по всей России. Платежи можно принимать через обычный смартфон, просто сгенерировав QR-код и показав его покупателю для оплаты. Размер комиссии, в зависимости от вида деятельности, составляет 0,4% или 0,7% от суммы платежа. О концепции продукта, его разработке и многом другом мы хотим рассказать в этой статье. Заходите, будет интересно.

Как возникла идея

Не будем лукавить приём платежей через QR-код не является чем-то инновационным. У всех на виду Китай, где этот вариант оплаты стал чуть ли не главным. И когда Центробанк заявил о подобной возможности как одной из важных фич своей СБП, мысль стала работать.

QR-коды уже давно используются повсеместно даже банально на квитанциях ЖКХ. И у нас родилась идея: а что если платёж через СБП поможет снизить комиссию за обслуживание? Надо просто сделать правильную и удобную обёртку сервиса так клиенты смогут принимать платежи от физических лиц по QR-коду. Win-Win!

Как идея реализовывалась

Увы (кому-то ура), но тотальная удалёнка наша новая реальность. Поэтому и набирать команду, и работать пришлось дистанционно. Изначально на проекте было около 10 человек. Мы внедрили Scrum и постепенно наращивали численность команды. Сейчас над проектом трудится около 30 человек, поделённых на 3 команды так проще планировать спринты.

Всего от старта разработки до выхода в App Store и Google Play у нас ушло чуть больше 3 месяцев. В бэкенде, написанном на Kotlin, реализована микросервисная архитектура. Он размещён на серверах ВТБ, а фронтендом является само приложение в версиях под iOS и Android.

Изначально разработанный в рамках быстрого MVP сервис являлся монолитом. Но сейчас мы пилим его на микросервисы и переходим на так называемый Release Train, подразумевающий выход обновления продукта с заданной периодичностью. Мы начинаем с релизов раз в месяц и планируем затем перейти на двухнедельные.

Что получилось

Новый продукт получил название ВТБ Бизнес QR. Для работы с ним предпринимателю нужно а) иметь расчётный счёт в ВТБ; б) установить на смартфон приложение и и, в общем-то, всё.

После подключения к СБП можно скачивать приложение и регистрироваться в нём. После этого для генерации QR-кода в приложении необходимо ввести сумму и назначение платежа. В чеке можно указать сразу несколько позиций.

Две чашки кофе и один QR-кодДве чашки кофе и один QR-код

Покупатель считывает код из мобильного приложения любого банка, подключённого к СБП (полный список банков, работающих в системе, можно посмотреть здесь во вкладке Оплата по QR), и оплачивает счёт. Статус платежа сразу отображается в ВТБ Бизнес QR, а зачисление на расчётный счёт происходит в течение 15 секунд.

Историю транзакций можно посмотреть на отдельном экранеИсторию транзакций можно посмотреть на отдельном экране

Приложение является бесплатным для клиента он платит только комиссию в размере 0,4% для образовательных, потребительских и ещё ряда категорий товаров (полный список на сайте продукта) и 0,7% для всех остальных.

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

Тестирование

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

Немного статистики: за два месяца после масштабирования количество пользователей выросло в 15 раз до 1500, а география расширилась ещё больше до 300 населённых пунктов. В топ-6 регионов входят Москва, Санкт-Петербург, Новосибирск, Барнаул, Красноярск и Хабаровск. Наиболее активно приложение используется для оплаты покупок в розничной торговле, парикмахерских, салонах красоты и туристических агентствах. Размер максимальной транзакции составил 200 000 руб., средний чек 3 000 руб.

Поддержка

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

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

Что дальше

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

Подробнее..

Apple shortcuts генератор QR-кодов

25.04.2021 00:12:13 | Автор: admin

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

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

Но не все знаю, как создавать qr-коды прямо на айфоне без сторонних приложений. Чтобы создать qr-код, достаточно воспользоваться встроенным приложением Команды.

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

О том, как добавить иконку быстрого запуска команды на экран "Домой", читайте в конце статьи.

Создаем команду

  • Открываем приложение Команды, в меню Мои команды нажимаем на плюсик.

  • Нажимаем Добавить действие и вводим QR, выбираем команду Генерировать QR-код

  • Нажимаем на слово текст и в списке над клавиатурой выбираем Спрашивать каждый раз.

  • Добавляем действие Быстро посмотреть.

  • Нажимаем далее и вводим название, например Генератор QR-кодов

Добавляем значок на экран "Домой"

Вот таким простым способом можно создавать qr-коды прямо на вашем айфоне.

Подробнее..

Приём платежей по QR-кодам без комиссий

03.06.2021 06:23:09 | Автор: admin

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

Далеко не все знают, что банковские приложения для физиков поддерживают два типа QR-кодов. Второй это мгновенная оплата типа того же интернет-эквайринга по картам через систему быстрых платежей (СБП) по номеру телефона. И там как с интернет-эквайрингом банк берёт комиссию с продавца. А первый это просто оплата по обычным банковским реквизитам распознавание реквизитов для платёжного поручения. Вот так выглядит этот QR-код:

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

Как сгенерировать QR-код для оплаты в мобильном приложении

Генерируется такой код в PHP и других языках элементарно просто и быстро:

use Endroid\QrCode\QrCode;$this->qr_str = "ST00012|Name={$this->firm->urname}" . "|PayeeINN={$this->firm->inn}|KPP={$this->firm->kpp}" .                 "|PersonalAcc={$this->firm->rs}|BankName={$this->firm->bank}" .                 "|BIC={$this->firm->bik}|CorrespAcc={$this->firm->ks}" .                 "|Sum=$this->qr_s|Purpose=$purpose|Contract=$this->service_id";$qrCode = new QrCode($this->qr_str);$qrCode->setSize(150);$qrcode = '<img class="logo" src="data:image/png;base64,' . base64_encode($qrCode->writeString()) . '">';

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

В других языках программирования примерно также.

Включите в свои счета и квитанции QR-код

Если ваши банки не распознают обычный QR-код (особенно для РКО юрлиц и ИП), то обратитесь в их поддержку, чтобы добавили распознавание. Если вы клиент Сбера, пните Сбер.

И получайте платежи без комиссий. Хватит кормить банки! Безналичные платежи сейчас доходят за пару часов в рабочий день.


Дата-центр ITSOFT размещение и аренда серверов и стоек в двух дата-центрах в Москве. За последние годы UPTIME 100%. Размещение GPU-ферм и ASIC-майнеров, аренда GPU-серверов, лицензии связи, SSL-сертификаты, администрирование серверов и поддержка сайтов.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru