O que é o código QR?
QR significa quick response (resposta rápida). É um código de barras de duas dimensões e foi criado em 1994 no Japão pela empresa Denso Wave, uma subsidiária da Toyota, com o propósito de catalogar peças de automóveis. O QR code pode armazenar texto, números, coordenadas, algarismos alfanuméricos, letras do alfabeto japonês e URLs (links para sites).
Comparação com o código de barras
O código de barras armazena informações em barras pretas de várias larguras com números embaixo, tem apenas uma dimensão.
- A dimensão extra permite que o código QR tenha maior capacidade de armazenamento de informações que o código de barras. Por exemplo, um QR code tem capacidade máxima de 7089 números. Enquanto um código de barras pode guardar entre 10 e 43 números, depende do tipo.
- O código de barras precisa ser lido com um scanner que emite uma luz, a informação é lida e transferida para um computador. Enquanto o código QR pode com qualquer aparelho que tenha uma câmera e um aplicativo.
- O QR code tem tolerância a falhas, pode ser escaneado mesmo danificado até um certo ponto. Ao contrário do código de barras, que se torna ilegível com qualquer dano.
Interpretando o desenho
O que estes quadrados e pixels significam? Os três quadrados grandes nos cantos servem para identificar e posicionar o código para o leitor.
O quadrado menor no outro canto tem a finalidade de alinhamento. Com este elemento, o leitor consegue ler o desenho mesmo inclinado.
Alguns tipos de código QR precisam de mais quadrados de alinhamento.
Ao redor deve ter a chamada “zona quieta” de 4 pixels de largura, em amarelo na figura abaixo. É um espaço em branco para o leitor diferenciar o código de uma imagem no fundo.
Dentro do código, ao redor dos três quadrados de posição, deve haver um espaço em branco de um pixel de largura. Ao redor deste espaço, tem informações que mostram a versão e o formato da informação. A versão, em azul na figura acima, indica a capacidade de armazenamento e o grau de correção de erros. O formato, em vermelho na figura acima, tem informações sobre correção de erros e o padrão da máscara.
No desenho acima, têm linhas destacadas em azul claro ligando os quadrados de identificação. São linhas de pixels que alternam entre branco e preto. Representam a temporização (timing), informam as coordenadas e o tamanho de cada conjunto de pixels. No resto do espaço fica o conteúdo da informação codificada.
Máscaras
As máscaras mudam a aparência do código e servem para facilitar a leitura para o scanner. Existem 8 padrões de máscara.
A informação do padrão de máscara (mask pattern) é destacada em verde na figura abaixo.
A máscara é colocada no código QR com uma porta lógica XOR. Aplicando a porta XOR novamente com o mesmo padrão, a máscara é removida.
XOR significa OU-exclusivo e já foi explicado no post sobre circuitos combinacionais.
Correção de erros
É usado o algoritmo Reed-Solomon de correção de erros. Existem 4 níveis de correção.
- L (baixo): 7% dos dados podem ser recuperados.
- M (médio): 15% da informação pode ser recuperada.
- Q (quarto): Permite a leitura se 25% do QR code for danificado.
- H (alto): Correção de 30%.
Com a correção de erros suficientemente alta, é possível colocar desenhos no meio do código sem prejudicar a leitura.
Quanto maior o nível de correção, menor a capacidade de armazenar dados.
Lendo e criando códigos QR
Aplicativos de leitores de código QR podem ser gratuitamente baixados para o celular. Também há sites onde é possível criar seus códigos de resposta rápida gratuitamente.