Ацтекский штрих-код против QR-кода
Я пытаюсь разработать приложение, которое будет использовать билеты, чтобы пользователь мог их проверить. Мне интересно, почему я должен выбрать штрих-код Aztec, так как многие компании уже выбрали его вместо QR-кодов. Каковы плюсы ацтекских штрих-кодов?
Хорошее сравнение, которое я нашел до сих пор: http://www.tec-it.com/en/support/knowbase/barcode-overview/2d-barcodes/Default.aspx
и здесь: http://en.wikipedia.org/wiki/Aztec_Code в разделе использования, вы можете увидеть, что он используется довольно часто.
3 ответа
Несмотря на то, что коды Aztec более компактны и настраиваемы, они плохо поддерживаются среди открытого, несобственного программного обеспечения. Я бы все еще использовал QR-коды, которые имеют очень развитую поддержку программного обеспечения на самых разных платформах.
Если вам не хватает места и вам не нужно, чтобы пользователи могли читать или генерировать ваши коды с помощью их собственного программного обеспечения или на самых разных устройствах, тогда Aztec будет лучшим выбором. Коды Aztec не требуют окружающего поля, допускают очень тонко настраиваемый уровень исправления ошибок и имеют более плотное кодирование, оптимизированное для более широкого диапазона текстов сообщений.
Например, в кодеке Aztec есть режим, специализированный для кодирования строчных букв, поэтому он может кодировать большую часть ответа на этот вопрос только с 5 битами на символ. The QR codec is only optimized for uppercase URLs, and must store lowercase letters as full 8-bit binary data. A QR code containing this text would have to encode about 160% as much data as an Aztec code -- and then it needs a margin space too.
QR codes require more space than Aztec codes but have freely available software supporting them.
Aztec codes can store more information, but there is poor free support for them. They can be harder to read and generate efficiently, right now.
On an Android phone, Google's "Barcode Scanner" application will scan an Aztec code after a longer delay than a QR code, and the user has to manually enable Aztec code scanning in the application preferences.
Similarly the free barcode generator package "zint" will produce Aztec codes, but has a handful of bugs, and does not make full use of the codec to optimize their size as small as possible. Its generation of QR codes, on the other hand, is bulletproof.
Я разделяю разочарование по поводу сравнительной неполноты поддержки FLOSS для кодирования и декодирования Aztec Code, выраженной в ответе @fuzzyTew.
По сравнению с Aztec кода с открытым исходным кодом для кодирования и декодирования QR гораздо больше, он более полнофункциональный и тщательно протестирован.
Это позор, потому что Aztec Code по нескольким параметрам превосходит QR. Как описано в ответе @fuzzyTew …
- Aztec не требует "тихой зоны" белого пространства вокруг символа, в отличие от QR.
- Aztec предлагает непрерывно настраиваемые уровни исправления ошибок, тогда как QR-код предлагает только несколько дискретных уровней.
- Aztec предлагает значительно более высокую плотность, чем QR, для типичных приложений, состоящих в основном из стандартного текста ASCII.
- По сравнению с Aztec, QR особенно неэффективен для кодирования строчных латинских букв (8 бит / символ) по сравнению с Aztec (5 бит / символ).
- Самый большой размер QR, 177×177 блоков, может хранить 2953 байта в двоичном режиме с низкой коррекцией ошибок (~7%), в то время как самый большой размер Aztec, 151×151 блок, может хранить 2318 байтов в двоичном режиме с эквивалентной ошибкой 7%. исправление. При таком размере Aztec требует ~9,83 блока / байт, а QR - ~10,61.
Большая часть поддержки открытого кода для Aztec основана на ZXing. Это включает в себя приложение Android Barcode Scanner и множество онлайн-кодировщиков и декодеров.
До недавнего времени реализация ZXing Aztec Code некорректно поддерживала кодирование или декодирование символов, отличных от Latin1. (QR, Aztec, PDF417 и Data Matrix используют ECI для поддержки других кодировок символов.)
Недавно я начал что-то с этим делать:
- Я добавил поддержку правильного декодирования не-Latin1 символов из Aztec в ZXing.
- Я добавил поддержку правильного кодирования наборов символов, отличных от Latin1, в Aztec в ZXing.
- Я также добавил поддержку кодирования наборов символов, отличных от Latin1, в Python
aztec_code_generator
модуль.
Суть всего в следующем: на самом деле не нужно проделать тонну работы, чтобы получить высококачественные кодеры / детекторы / декодеры Aztec с открытым исходным кодом.
Самое большое преимущество, которое я видел в ацтекских кодах в прошлом, — это расстояние, с которого вы их читаете.
Тестирование, которое я видел, показало, что если плотность данных низкая (6 дюймов с квадратными изображениями примерно 1 3/4 дюйма), они читаются на расстоянии, вдвое превышающем расстояние QR-кодов (10 футов против менее 5 футов). Это с современной, по состоянию на 2023 год, коммерческой библиотекой сканирования.
Если вы увеличите плотность данных (40–60 байт), тестирование показало, что разрыв в расстоянии увеличивается, хотя расстояние кода Aztec также уменьшилось на фут, чтобы обеспечить надежное чтение. После 80 ацтекских кодов снова наблюдается снижение, но более резкое (5 футов).
Тестирование показало, что QR-кодам также необходимы лучшие условия освещения, чем ацтекским кодам, чтобы обеспечить повторяемость считывания. Результаты вне угла также были лучше с Aztec.