Como o QR Code funciona: a especificação ISO/IEC 18004
O QR Code foi criado em 1994 pela Denso Wave, subsidiária da Toyota, para rastrear peças na linha de montagem — daí o nome, Quick Response. Virou norma internacional e hoje é definido pela ISO/IEC 18004, cuja edição vigente é de 2015. Esta seção explica o que está gravado dentro do símbolo, com os números calculados a partir da própria norma.
Capacidade
A tabela completa: 40 versões × 4 níveis de correção × 3 modos de codificação, e quanto cabe em cada combinação.
Correção de erro
L, M, Q e H: quanto cada nível recupera, quanto custa em espaço e qual escolher em cada situação de impressão.
Modos de codificação
Numérico, alfanumérico e byte: por que escrever em maiúsculas pode fazer o mesmo texto caber num símbolo menor.
A anatomia do símbolo
Um QR Code é uma matriz quadrada de módulos claros e escuros. Parte deles carrega o conteúdo; outra parte existe para o leitor conseguir encontrar, orientar e conferir o símbolo:
- Padrões de localização (finder patterns) — os três quadrados dos cantos, de 7×7 módulos. A proporção 1:1:3:1:1 de claro e escuro que eles produzem em qualquer direção é o que permite ao leitor achar o código em uma foto cheia de outros elementos.
- Separadores — a borda clara de um módulo em volta de cada localizador.
- Padrões de alinhamento — quadrados de 5×5 espalhados pelo símbolo a partir da versão 2. Corrigem a distorção de perspectiva quando a foto é tirada em ângulo.
- Padrões de temporização — a linha e a coluna alternadas que dizem o tamanho de cada módulo.
- Informação de formato — 15 bits, gravados duas vezes, com o nível de
correção e a máscara. São protegidos por um código BCH(15,5) e submetidos a um XOR com a
máscara fixa
101010000010010, para que o campo nunca fique todo claro ou todo escuro. - Informação de versão — só da versão 7 em diante: 18 bits, também duplicados, com BCH(18,6).
- Zona quieta — a margem branca de 4 módulos em volta. É exigência da norma e a causa mais comum de código que não lê.
Do texto ao símbolo, em seis etapas
- Análise do conteúdo e escolha do modo: numérico, alfanumérico ou byte.
- Codificação: indicador de modo (4 bits), contador de caracteres e os bits do
conteúdo, seguidos do terminador e do preenchimento alternado
11101100 00010001. - Correção de erro: os codewords de dados são divididos em blocos e cada bloco
ganha seus codewords Reed-Solomon, calculados no campo de Galois GF(256) com o polinômio
primitivo
0x11D. - Intercalação: os blocos são embaralhados na ordem definida pela norma, para que um dano concentrado atinja pouco de cada bloco.
- Preenchimento da matriz em zigue-zague, de baixo para cima e da direita para a esquerda, pulando a coluna do temporizador.
- Máscara: as oito máscaras são aplicadas e avaliadas por quatro regras de penalidade; vence a de menor pontuação. É o que evita grandes áreas uniformes e sequências que imitam um localizador.
É exatamente esse caminho que o codificador deste site percorre — em JavaScript, dentro do seu navegador. Veja as oito máscaras e as regras de penalidade.
As 40 versões
Cada versão acrescenta 4 módulos ao lado do símbolo: a versão 1 tem 21×21 e a versão 40 tem 177×177. A capacidade cresce junto, mas não de forma linear — parte do ganho é consumida pelos padrões de alinhamento que vão sendo acrescentados. Os valores abaixo são em bytes, no modo byte:
| Versão | Módulos | Codewords | L | M | Q | H |
|---|---|---|---|---|---|---|
| Versão 1 | 21×21 | 26 | 17 | 14 | 11 | 7 |
| Versão 2 | 25×25 | 44 | 32 | 26 | 20 | 14 |
| Versão 3 | 29×29 | 70 | 53 | 42 | 32 | 24 |
| Versão 4 | 33×33 | 100 | 78 | 62 | 46 | 34 |
| Versão 5 | 37×37 | 134 | 106 | 84 | 60 | 44 |
| Versão 6 | 41×41 | 172 | 134 | 106 | 74 | 58 |
| Versão 7 | 45×45 | 196 | 154 | 122 | 86 | 64 |
| Versão 8 | 49×49 | 242 | 192 | 152 | 108 | 84 |
| Versão 9 | 53×53 | 292 | 230 | 180 | 130 | 98 |
| Versão 10 | 57×57 | 346 | 271 | 213 | 151 | 119 |
| Versão 11 | 61×61 | 404 | 321 | 251 | 177 | 137 |
| Versão 12 | 65×65 | 466 | 367 | 287 | 203 | 155 |
| Versão 13 | 69×69 | 532 | 425 | 331 | 241 | 177 |
| Versão 14 | 73×73 | 581 | 458 | 362 | 258 | 194 |
| Versão 15 | 77×77 | 655 | 520 | 412 | 292 | 220 |
| Versão 16 | 81×81 | 733 | 586 | 450 | 322 | 250 |
| Versão 17 | 85×85 | 815 | 644 | 504 | 364 | 280 |
| Versão 18 | 89×89 | 901 | 718 | 560 | 394 | 310 |
| Versão 19 | 93×93 | 991 | 792 | 624 | 442 | 338 |
| Versão 20 | 97×97 | 1.085 | 858 | 666 | 482 | 382 |
| Versão 21 | 101×101 | 1.156 | 929 | 711 | 509 | 403 |
| Versão 22 | 105×105 | 1.258 | 1.003 | 779 | 565 | 439 |
| Versão 23 | 109×109 | 1.364 | 1.091 | 857 | 611 | 461 |
| Versão 24 | 113×113 | 1.474 | 1.171 | 911 | 661 | 511 |
| Versão 25 | 117×117 | 1.588 | 1.273 | 997 | 715 | 535 |
| Versão 26 | 121×121 | 1.706 | 1.367 | 1.059 | 751 | 593 |
| Versão 27 | 125×125 | 1.828 | 1.465 | 1.125 | 805 | 625 |
| Versão 28 | 129×129 | 1.921 | 1.528 | 1.190 | 868 | 658 |
| Versão 29 | 133×133 | 2.051 | 1.628 | 1.264 | 908 | 698 |
| Versão 30 | 137×137 | 2.185 | 1.732 | 1.370 | 982 | 742 |
| Versão 31 | 141×141 | 2.323 | 1.840 | 1.452 | 1.030 | 790 |
| Versão 32 | 145×145 | 2.465 | 1.952 | 1.538 | 1.112 | 842 |
| Versão 33 | 149×149 | 2.611 | 2.068 | 1.628 | 1.168 | 898 |
| Versão 34 | 153×153 | 2.761 | 2.188 | 1.722 | 1.228 | 958 |
| Versão 35 | 157×157 | 2.876 | 2.303 | 1.809 | 1.283 | 983 |
| Versão 36 | 161×161 | 3.034 | 2.431 | 1.911 | 1.351 | 1.051 |
| Versão 37 | 165×165 | 3.196 | 2.563 | 1.989 | 1.423 | 1.093 |
| Versão 38 | 169×169 | 3.362 | 2.699 | 2.099 | 1.499 | 1.139 |
| Versão 39 | 173×173 | 3.532 | 2.809 | 2.213 | 1.579 | 1.219 |
| Versão 40 | 177×177 | 3.706 | 2.953 | 2.331 | 1.663 | 1.273 |
Fonte: ISO/IEC 18004:2015 — QR Code bar code symbology specification e Denso Wave — QR Code standardization. Valores calculados pelo codificador do site a partir dos parâmetros da norma.
Perguntas frequentes
O QR Code é patenteado? Preciso pagar para usar?
Não. A Denso Wave detém a patente original e a marca QR Code, mas declarou que não exerce o direito de patente sobre a especificação padronizada — o uso do formato é livre e sem royalties. É por isso que existem tantos geradores, este incluído.
Qual a diferença entre QR Code e código de barras?
O código de barras comum (EAN-13) é unidimensional e guarda 13 dígitos. O QR Code é bidimensional e chega a 7.089 dígitos ou 2.953 bytes. Além disso tem correção de erro, lê em qualquer orientação e é encontrado na imagem pelos três localizadores — o código de barras precisa de alinhamento e de leitor dedicado.
O que é o Micro QR Code?
Uma variante da mesma norma, com um único localizador e símbolos de 11×11 a 17×17 módulos, para espaços muito pequenos. A capacidade é bem menor (até 35 caracteres numéricos) e o suporte nos leitores de celular é irregular. Este site gera QR Code padrão, que é o universalmente lido.
Existe QR Code colorido?
A norma exige contraste entre módulos escuros e fundo claro, não cor preta. Você pode usar qualquer cor escura sobre fundo claro — o gerador deste site permite escolher. O que não funciona é inverter (claro sobre escuro), usar cores de luminosidade parecida ou aplicar degradê sobre os localizadores.