QRCodes (Quick Response code) | Código de barras bidimensional e o seu Algoritmo

Esta semana um amigo me procurou para desenvolver uma feature para um projeto de sua empresa. O bate-papo foi mais ou menos assim:

“Então, estou trabalhando em um projeto X e gostaria de implementar este novo código de barras, acho que é 2-D ou 3-D.” – Neste momento ele abriu uma imagem com o tal código de barras e mostrou o que seria.

Em resposta eu disse:

“Ok, vou estudar sobre o assunto e te envio.”

Chegando no escritório a noite, resolvi desenvolver o tal código de barras, primeiro me organizei.

RoadMap:

1.) Descobrir o que é código de barras 2-D.

2.) Entender o Algoritmo (QRCode Algorithms)

3.) Definir a linguagem de programação e encontrar APIS/Bibliotecas que lidam com isto. (Não precisamos reinventar a roda e perder tempo.)

5.) Desenvolver a solução/testar e entregar.

Tendo em vista meu objetivo, comecei o trabalho.

Hands-On

1.) Descobrir o que é código de barras 2-D.

Na realidade o código de barras bi-dimensional é conhecido por QRCode (acrônimo do inglês Quick Response) atualmente sendo utilizado no Brasil e em outros países. QR Code é uma simbologia 2-D desenvolvida pela Denso-Wave uma empresa subsidiária da Toyota (uma divisão da Denso Corporation at the time), criada em 1994 para ser facilmente interpretada por equipamentos de scanner.

O código de barras trandicional segundo a documentação da denso-warve [1] é capaz de armazenar aproximadamente 20 digitos, por outro lado o QR Code é capaz de armazenar cem vezes mais pela razão de conter informações em ambas as direções vertical e horizontal, enquanto um código de barras contém dados em uma única direção. QR Code tem um volume consideravelmente maior de informação do que um código de barras.

“Podemos dizer que esta tecnologia chegou muito antes do seu tempo, e só agora, passados 17 anos, é que começamos a olhar para ela de uma forma diferente e a detectar o seu verdadeiro potencial..”- FeedTheReader.com (Recomendo a leitura deste blog).

Se deseja conhecer um pouco mais acesse:

http://pt.wikipedia.org/wiki/C%C3%B3digo_QR – (português).

http://feedthereader.com/2011/11/qr-codes-%E2%80%93-tecnologia-vintage/ (português).

http://www.denso-wave.com/qrcode/aboutqr-e.html – (inglês).

2.) Entender o Algoritmo (QRCode Algorithms)

Por possuir uma grande curiosidade e gostar de algoritmos, resolvi entender como funciona. Fiz meus calculos pessoais e testes com caneta e papel. Mas não reescreverei o que já existe. Segue abaixo toda a estrutura do Algoritmo e fontes de estudo para gerar o QRCode.

QRCode possui os seguintes algoritmos:

1 – Geração da string de dados em bits.

2- Correção de erro utilizando: Reed-Solomon error correction.

3- Geração do eight mask pattern formulas de acordo com especificação.

Algoritmo detalhado: 

3.) Definir a linguagem de programação e encontrar APIS/Bibliotecas que lidam com isto. (Não precisamos reinventar a roda e perder tempo.)

Linguagem escolhida para projeto foi JavaScript.

API/Biblioteca escolhida foi: jquery-qrcode[1].

[1]  jquery.qrcode.js – http://jeromeetienne.github.com/jquery-qrcode/

Outra solução interessante é utilizar a API do google de acordo com o seguinte link: http://code.google.com/apis/chart/infographics/docs/qr_codes.html

Conclusão

O objetivo deste post é criar um guia de referência, para pessoas que gostam de entender o funcionamento.


2 thoughts on “QRCodes (Quick Response code) | Código de barras bidimensional e o seu Algoritmo

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s