Dos dados ao padrão
Criar um QR Code começa pela escolha de um modo de codificação adequado aos dados: numérico, alfanumérico, byte ou kanji. O codificador converte os dados em bits, divide-os em palavras-código de 8 bits e acrescenta palavras-código de correção de erros Reed–Solomon no nível escolhido. Em seguida, escolhe a menor versão em que tudo cabe.
As palavras-código são dispostas na grade num caminho em zigue-zague que evita os padrões fixos. Por fim, o codificador aplica uma das oito máscaras para quebrar grandes áreas em branco ou formas confusas, e registra a máscara e o nível de correção de erros na informação de formato.
- Escolher o modo de codificação
- Codificar os dados e acrescentar as palavras-código de correção de erros
- Escolher a versão (tamanho)
- Posicionar os padrões de localização, sincronização e alinhamento
- Preencher os módulos de dados
- Aplicar a melhor das oito máscaras e gravar a informação de formato
Da imagem da câmera aos dados
A decodificação faz os mesmos passos no sentido inverso. O leitor encontra os três padrões de localização, cuja proporção 1:1:3:1:1 entre escuro e claro se destaca na maioria das imagens, e os usa junto com os padrões de sincronização e alinhamento para mapear a grade. Ele lê a informação de formato, remove a máscara e coleta as palavras-código.
A decodificação Reed–Solomon então repara as palavras-código lidas errado, até o limite do nível de correção de erros. Se o dano for grande demais, o código simplesmente não é lido, em vez de devolver dados errados, e é por isso que os QR Codes raramente produzem resultados embaralhados.
Por que tamanho e contraste importam
Cada etapa depende de a câmera distinguir os módulos escuros dos claros. Módulos pequenos, pouco contraste, reflexo, desfoque ou falta de zona de silêncio deixam mais módulos em dúvida, e a correção de erros só consegue absorver até certo ponto. Manter os dados curtos, o contraste forte e a margem livre deixa o trabalho do decodificador o mais fácil possível.