Создание QR code в LaTeX и не только: QR code generator in LaTeX

Оформляя постер к очередной конференции SPIE, в рекомендациях наткнулся на желательность использования QR code в постерах. Раньше я думал, что это нужно только хитрым японцам для идентификации деталей на всяких промышленных объектах. Оказывается, что QR code теперь в моде и их суют куда надо и не надо. О том, что это такое и зачем надо, а так же как сгенерировать QR code в ЛаТеХе, можно
прочесть далее.



Что такое QR code?

QR это аббревиатура от Quick Response, а сам QR-code это двумерный штрих-код:который может хранить ссылки, обычный текст, SMS сообщения, URL и другую контактную информацию.
В двух словах, это такая бумажная гиперссылка. То есть не просто штрих-код, а содержащий куда больше информации идентификатор, и сканер может "кликнуть" по закодированной внутри ссылке. Переход по ссылке можно отследить, и так вы знаете, кто и где просканировал ваш код.

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

Как сгенерировать QR Code в LaTeX?
Есть веб-сайты, которые могут это сгенерировать, но они выдают чаще всего растровые картинки. А так как постеры верстаются теперь в beamerposter, то хорошо бы это сделать в LaTeX.

Сделать это можно с помощью пакета pst-barcode, который доступен для загрузки отсюда. Так же следует установить латеховского пакета pstricks.

Далее создаём тестовый латеховский документ, в который вставляем следующее:


\documentclass{article}
\usepackage{pst-barcode}
\begin{document}

\begin{pspicture}(1in,1in)
\psbarcode{test string}{}{qrcode}
\end
{pspicture}

\end{document}
Приведённый выше пример закодирует фразу test string в такие вот хитрые квадратики:
Собственно, обратно расшифровать этот код тоже можно, но уже не ЛаТеХом, а веб-сайтом (например этим).

Надо сказать, что pst-barcode не любит pdflatex и компилировать текст нужно через DVI - PS - PDF типа:
latex 123.tex
dvips 123.dvi
ps2pdf 123.ps

При этом можно управлять параметрами кодирования и закодировать в QR code много чего интересного:
\begin{pspicture}(15mm,15mm) \psbarcode{MECARD:N:Visissualy,Poopkin;EMAIL:poopkin@rogaandcopyta.narod.ru;TEL:74950001111;NOTE:ceo roga copyta;}{eclevel=L}{qrcode}
\end{pspicture}
Так, можно управлять степенью избыточности при кодировании, что достигается параметром eclevel=L
    • eclevel=L - Low
    • eclevel=M - Medium
    • eclevel=Q - Quality
    • eclevel=H - High

Для своего постера я использовал Medium уровень коррекции ошибок, и вот что получилось:
Разумеется, приведённый пример это только для затравки. Если дать волю фантазии, можно заделать небольшой макрос на ЛаТеХе и автоматически генерить QR code для каждого документа, подставляя значения из \title{}, \date{} и \author{} - и вообще всего, до чего дотянутся шаловливые ручонки. Так можно по обрывку титульной страницы выудить информацию о документе и, возможно, его авторе.


QR code online: веб-cервисы для создания и декодирования QR кодов

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


Где сгенерировать - QR code generator
Собственно, помимо ЛаТеХа, можно генерировать и в более простых веб-формочках. Замечательный обзор свободных генераторов QR кодов собрал 5 сайтов, из которых работают нормально в основном:

Где распознать - QR code reader
Среди сайтов, которые могут прочесть все эти странные кодированные картинки, работают следующие:
Из всех этих сайтов этот, конечно, всё-в-одном: и расшифровать QR code, и сгенерировать, и просветиться заодно.


Былое и думы
Описание полей MECARD для QR кодов хорошо и с примерами описано тут. Охочим до официального формата просьба проследовать по ссылке. Желающие почитать про софт для Андроидов, способный распознавать QR коды, могут насладиться хорошим обзором. С настольным софтом для QR code всё несколько грустно, но ситуация может исправиться, когда Zint допилят до съедобного состояния.

16 комментариев: |высказаться!| RSS-лента дискуссии.|
Sergey комментирует...

самый простой способ получить qr код — google chart, вписывай что хочешь в URL и вперёд: https://chart.googleapis.com/chart?chs=150x150&cht=qr&chl=Hello%20world&choe=UTF-8

сохраняем png и используем с pdflatex/xelatex/luaчтотоновенькое

iv_vl комментирует...

@Сергей комментирует...

сохраняем png и используем с pdflatex/xelatex/luaчтотоновенькое

Как раз хотелось бы узнать у Михаила: зачем так всё усложнять? Понятно, что pst-barcode на выходе даёт векторный EPS, который легко масштабируется по размеру постера. Но если QR - всё равно набор пикселей, то "зачем платить больше"?

goblinyara комментирует...

кстати, ещё из неплохих онлайн-генераторов можно отметить http://qrcoder.ru/ и http://qr-coder.ru/

Анонимный комментирует...

Опечатка: латеховского пакет pstricks.

За мануал спасибо, интересная информация.

drakulavich комментирует...

> С настольным софтом для QR code всё несколько грустно.
По-моему, не стоит делать выводы по трёхлетней статье :-)

Есть консольный qrencode, к нему GUI финские парни пишут. Или нужны какие-то специфические фичи?

Юрий комментирует...

> http://qrcode.good-survey.com/ - генерирует и расшифровывает QR codes.

Там в разделе Decode используется Silverlight О_о

virens комментирует...

@Сергей комментирует...
самый простой способ получить qr код — google chart
Серж, оно не айс, мне ж в постер это вставлять.


@iv_vl комментирует...
Как раз хотелось бы узнать у Михаила: зачем так всё усложнять?
Хотелось это вставлять сразу в документ при рендеринге постера.

Но если QR - всё равно набор пикселей, то "зачем платить больше"?
Смотри на вещи шире. Так можно делать автоматические пометки документов в латехе. Ну и чтобы перегенерировать, каждый раз не надо лезть в эти ваши интернеты.


@goblinyara комментирует...
кстати, ещё из неплохих онлайн-генераторов можно отметить
О, спасибо за ссылки! Добавлено.

@engraver комментирует...
Опечатка: латеховского пакет pstricks.
Пофиксено.

За мануал спасибо, интересная информация.
Пожалуйста. Собственно, я постеры готовил и нашёл сие. Решил поделиться и самому потом быстрее найти.


@Dr.AKULAvich комментирует...
По-моему, не стоит делать выводы по трёхлетней статье :-)
Так ведь нету нифига, один навоз на джаве, который у меня так и не завёлся, сколько я ни бил в этот индийский бубен.

Есть консольный qrencode, к нему GUI финские парни пишут. Или нужны какие-то специфические фичи?
Ну, хочется настроек. Вот в этом латеховском варианте можно задать уровень коррекции ошибок, к примеру. Для простеньких кодов можно и на сайт слазить.

@Yurij комментирует...
Там в разделе Decode используется Silverlight О_о
Хм... странно, а у меня в дебиане работает. Может, ко мне какой микрософтский код просочился? :-)

Анонимный комментирует...

Отличная статья! Про QR коды знал, но не знал что для LaTeXa есть тоже пакеты. Ну и коллекция ссылок на сайты полезная. Спасибо!

Анонимный комментирует...

Немного не в тему, но требую статьи про настройки ifplugd + guessnet в debian, ибо боролся неделю но до конца не победил((( (смог только сделать ацкое быстрое подключение мегафон гпрс)
wicd и network manager не предлагать...

Unknown комментирует...

Как то запись сильно напоминает перепечатку с
http://gentoo.ru/node/23477

virens комментирует...

@coderoid комментирует...
Про QR коды знал, но не знал что для LaTeXa есть тоже пакеты.
Я тоже не знал, и по началу хотел вклеивать QR-картинки с веб-сервисов в постер. Потом подумал, что это как-то моветон и латех должен такое уметь. Собственно....

Ну и коллекция ссылок на сайты полезная. Спасибо!
Пожалуйста. Ссылок не так много, и там кое-где пропущены важные моменты.


@Анонимный комментирует...
Немного не в тему, но требую статьи про настройки ifplugd + guessnet в debian
Анонимус, а кто все эти люди?! :-)
Судя по названиям, это что-то сетевое, а моя гармошка такое плохо умеет играть :-)


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


@alexxy комментирует...
Как то запись сильно напоминает перепечатку с
http://gentoo.ru/node/23477

, я писал этот пост (и следующий, про визитку с QR) сам, и пользовался теми же ссылками, что и топикстартер на генте.ру. Когда гуглил в яндексе, оно мне не попалось. За ссылку спасибо, я её воткну в пост про визитку (он скоро будет).

Vlsu комментирует...

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

shimetoya комментирует...

QR code становится все популярней, лавинообразно завоевывает рынок ритейла. масса интересных статей встретилась мне на одном из сайтов, http://qr.mid.ua/ , кажется...

Анонимный комментирует...

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

Анонимный комментирует...

А все-таки, как вставить кириллицу в qr-код, чтобы она потом правильно отразилась? Пробовал
\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}
\usepackage[T2A]{fontenc}
\usepackage{pst-barcode}
\begin{document}
\begin{pspicture}(1in,1in)
\psbarcode{MECARD:N:Пупкин,Вася;EMAIL:pupkin@mail.com;;}{eclevel=M height=1.15 width=1.15}{qrcode}
\end{pspicture}
\end{document}
Пробовал распознать полученную картинку на сайте
http://qrcode.good-survey.com/ , получил:

...
First name
T2ACYRV T2Acyra T2Acyrs T2Acyrya
...
Raw content from QR Code: MECARD:N:T2ACYRP T2Acyru T2Acyrp T2Acyrk T2Acyri T2Acyrn ,T2ACYRV T2Acyra T2Acyrs T2Acyrya ;EMAIL:pupkin@mail.com;;

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

Анонимный комментирует...

Прошу прощения за неточность в коммент. от 16.11.2012, 15:55:00.
На сайте малазийских товарищей
http://latex-my.blogspot.ru/2011/08/barcodes-galore.html ,
вот в этом месте о языках и qr-коде:
http://latex-my.blogspot.com/2011/08/barcodes-galore.html?showComment=1314104295134#c6245453720153452832

Отправить комментарий

Подписаться на RSS-ленту комментариев к этому посту.