GuiaNacho G.11 min de leitura

ISO 18004: O Padrão de QR Code Explicado

ISO 18004 é a especificação que todo QR code segue. Saiba o que ela define: estrutura, modos de codificação, correção de erros e o sistema de versões.

ISO 18004: O Padrão de QR Code Explicado

Este artigo foi escrito pela equipe da QR Nova. Desenvolvemos software de codigos QR, o que pode influenciar nossa perspectiva.

Todo QR code que você já escaneou segue o mesmo padrão. Menu de restaurante, etiqueta de envio, ingresso de show, documento de identidade. Todos eles. A ISO 18004 especifica tudo, desde o tamanho daqueles três quadrados nos cantos até a matemática que permite que um código sobreviva sendo rasgado, sujo ou parcialmente coberto por um adesivo. A maioria dos engenheiros trabalha com QR codes por anos sem abrir a especificação. Este guia cobre o que ela realmente diz, na linguagem simples que você usaria para explicar a um colega numa conversa informal.

Resumo rápido

  • ISO/IEC 18004 é a especificação internacional que define exatamente como todo QR code é estruturado e decodificado.
  • QR codes vêm em 40 versões (tamanhos), de 21x21 a 177x177 módulos.
  • Quatro modos de codificação, numérico, alfanumérico, byte e kanji, otimizam a densidade de dados para diferentes tipos de conteúdo.
  • Quatro níveis de correção de erros (L, M, Q, H) permitem trocar capacidade de dados por resiliência a danos.
  • O padrão exige uma zona silenciosa de pelo menos 4 módulos em todos os lados.
  • A edição atual é ISO/IEC 18004:2024, a quarta edição publicada em agosto de 2024.

O que a ISO 18004 realmente é

Generate your first QR code — free

Comecar

ISO/IEC 18004 é uma publicação conjunta da International Organization for Standardization e da International Electrotechnical Commission. Foi publicada pela primeira vez em 2000, com revisões importantes em 2006, 2015 e, mais recentemente, em agosto de 2024. O título do padrão é "Information technology, Automatic identification and data capture techniques, QR code bar code symbology specification."

Esse título revela o escopo. Cobre especificação de simbologia: as regras físicas e lógicas que definem o que é um QR code, como os dados são codificados e como um leitor os reconstrói. Geradores de QR code, hardware de leitura, aplicações específicas de indústria? Fora do escopo. Outros padrões e guias de implementação tratam disso, todos apontando de volta para a ISO 18004 como base.

A edição de 2024 reconhece quatro membros da família QR code: QR Code Modelo 1 (o original de 1994), QR Code Modelo 2 (que adicionou padrões de alinhamento para melhor confiabilidade em tamanhos grandes), o QR Code padrão (Modelo 2 refinado, o que você vê em todos os lugares hoje), e Micro QR Code (uma variante compacta para etiquetas pequenas). Todos os quatro estão sob a ISO 18004.

A estrutura física de um QR code

Um símbolo QR code é uma grade quadrada de unidades escuras e claras chamadas módulos. Cada módulo é escuro (binário 1) ou claro (binário 0). A grade se divide em duas zonas: padrões de função e a região de codificação. Padrões de função não carregam dados. Seu trabalho é ajudar o leitor a encontrar, orientar e calibrar sua leitura do símbolo. A região de codificação contém os bits de dados reais.

Finder patterns (padrões de localização)

Aqueles três quadrados grandes nos cantos? Finder patterns. Cada um é um quadrado escuro 7x7 envolvendo um quadrado claro 5x5 envolvendo um quadrado escuro 3x3. Os anéis concêntricos produzem uma proporção consistente 1:1:3:1:1 de escuro-para-claro independente da direção de aproximação do leitor. Essa proporção é distinta o suficiente para que um leitor localize os três finder patterns quase instantaneamente, mesmo numa cena visualmente poluída.

Note que o quarto canto não tem finder pattern. Essa assimetria é intencional. Como apenas três cantos carregam o padrão, qualquer rotação de 90 graus produz um arranjo espacial diferente, dando ao decodificador uma forma inequívoca de determinar a orientação.

Separadores

Uma borda de módulos claros com largura de um módulo chamada separador envolve cada finder pattern. Ela isola o finder da região de codificação para que o leitor não confunda módulos de dados próximos com parte do padrão.

Timing patterns (padrões de temporização)

Entre os finder patterns, percorrendo horizontal e verticalmente, estão os timing patterns: módulos alternando entre escuro e claro em linha reta. Começam e terminam nos separadores dos finder patterns. Timing patterns permitem que o leitor calcule as coordenadas exatas da grade de módulos, o que importa mais quando o símbolo está deformado por perspectiva ou impresso numa superfície curva.

Alignment patterns (padrões de alinhamento)

A partir da Versão 2, QR codes incluem alignment patterns: um quadrado escuro 5x5 envolvendo um quadrado claro 3x3 com um único módulo escuro central, posicionado em intervalos regulares pelo símbolo. Um código Versão 1 (21x21 módulos) não precisa de nenhum. Um código Versão 40 (177x177 módulos) tem 46 deles. Fornecem ao leitor pontos de referência extras para corrigir distorções ao longo de uma grande área impressa.

Informação de formato

Duas cópias da faixa de informação de formato ficam adjacentes aos finder patterns. Cada faixa codifica 15 bits: 5 bits de dados (2 para nível de correção de erros, 3 para o número do padrão de máscara) mais 10 bits de correção de erros computados com um código BCH que pode corrigir até 3 erros de bit na própria faixa. Duas cópias significam que a informação de formato sobrevive mesmo se uma for danificada.

O número do padrão de máscara é um de oito padrões predefinidos (0 a 7), aplicado via XOR à região de codificação antes da impressão. A mascaramento quebra grandes regiões uniformes de módulos escuros ou claros para que o leitor consiga manter a calibração de contraste. Sem isso, você teria grandes manchas que confundem decodificadores.

Informação de versão

Para versões 7 e acima, o símbolo também inclui faixas de informação de versão: duas cópias de um campo de 18 bits codificando o número da versão (6 bits de dados) com 12 bits de correção de erros BCH. Versões 1-6 são pequenas o suficiente para que o leitor determine a versão diretamente das dimensões físicas do símbolo.

A zona silenciosa

O padrão exige uma zona silenciosa de pelo menos 4 módulos de cor clara uniforme em todos os quatro lados. Não é decorativa. O leitor usa essa borda em branco para estabelecer sua referência de contraste de fundo para distinguir módulos escuros de claros. Economize na zona silenciosa e você terá um código que escaneia bem na sua mesa mas falha no momento em que é impresso numa etiqueta de embalagem movimentada. É o erro de conformidade mais comum que vejo por aí.

O sistema de versões: tamanhos 1 a 40

As versões de QR code definem o tamanho do símbolo. Versão 1 é 21x21 módulos. Cada aumento adiciona 4 módulos por lado, então Versão 2 é 25x25, Versão 3 é 29x29, até a Versão 40 com 177x177 módulos. A fórmula: (versão x 4) + 17 = módulos por lado.

Versão maior, mais dados, código impresso maior. Na prática, geradores escolhem a menor versão que comporta seus dados no nível de correção de erros escolhido. Uma URL como https://exemplo.com/p/1234 normalmente cai na Versão 3 ou 4 no nível M. Coloque um vCard completo com nome, endereço, telefone e email, e você está olhando para Versão 10 ou superior.

Versão Tamanho (módulos) Numérico (L) Alfanumérico (L) Byte (L)
1 21×21 41 25 17
5 37×37 154 93 64
10 57×57 652 395 271
20 97×97 2.061 1.249 858
40 177×177 7.089 4.296 2.953

Esses números são capacidades máximas no nível de correção de erros L. Níveis de correção mais altos reduzem a capacidade utilizável porque mais módulos são dedicados a codewords de redundância.

Modos de codificação: quatro formas de empacotar dados

Antes de os dados entrarem num QR code, são codificados em bits. A ISO 18004 define quatro modos de codificação, cada um otimizado para um conjunto de caracteres diferente. Sua escolha de modo determina diretamente o tamanho do símbolo resultante.

Modo numérico

Modo numérico codifica apenas dígitos de 0 a 9. Três dígitos cabem em 10 bits, aproximadamente 3,33 bits por caractere. O modo mais compacto de todos. Se seu QR code só vai conter dígitos (um número de série, um ID de cartão fidelidade), é esse que você quer.

Modo alfanumérico

Modo alfanumérico suporta 0-9, A-Z maiúsculas, e nove caracteres especiais: espaço, $, %, *, +, -, ., /, e :. Pares de caracteres codificam em 11 bits (5,5 bits por caractere). Uma dica que vale conhecer: URLs codificadas totalmente em maiúsculas cabem no modo alfanumérico e produzem códigos visivelmente menores que o modo byte. Por isso muitos geradores de QR convertem sua URL para maiúsculas antes de codificar.

Modo byte

Modo byte codifica dados binários arbitrários a 8 bits por caractere. O conjunto de caracteres padrão é ISO/IEC 8859-1 (Latin-1), embora o mecanismo Extended Channel Interpretation permita declarar qualquer codificação. Precisa de letras minúsculas, símbolos especiais ou uma URL longa com query parameters? Modo byte. Menos eficiente, mais flexível.

Modo kanji e codificação de modo misto

Modo kanji é o de nicho. Codifica caracteres Shift JIS de byte duplo a 13 bits cada, construído especificamente para texto japonês. Fora do Japão, você quase nunca vai encontrá-lo.

Vale notar: um único QR code pode misturar modos dentro do mesmo símbolo. Cada segmento de dados recebe um indicador de modo de 4 bits, então um ID de produto numérico pode ficar ao lado de uma URL em modo byte, cada segmento usando sua representação mais eficiente. A maioria das bibliotecas de geradores trata da alternância automaticamente.

Correção de erros: como QR codes sobrevivem a danos

QR codes usam correção de erros Reed-Solomon, um algoritmo bem estudado que permite ao decodificador reconstruir dados mesmo quando parte do símbolo está faltando ou ilegível. O padrão define quatro níveis de correção de erros, identificados pelas letras L, M, Q e H.

Nível Nome Dano Recuperável Caso de Uso Típico
L Baixo ~7% das codewords Ambientes limpos, máxima densidade de dados necessária
M Médio ~15% das codewords Uso geral, a escolha mais comum
Q Quartil ~25% das codewords Etiquetas industriais, códigos com logos sobrepostos
H Alto ~30% das codewords Ambientes severos, superfícies curvas, códigos com marca

A troca é simples: mais correção de erros come sua capacidade de dados. Um código Versão 5 no nível L armazena 154 caracteres numéricos; a mesma versão no nível H armazena apenas 64. Quando você coloca um logo num QR code, cobrindo parte da região de codificação, está gastando seu orçamento de correção de erros. Nível H deixa mais margem para esse tipo de dano deliberado.

Internamente, a implementação Reed-Solomon opera sobre o campo finito GF(256), usando um polinômio gerador cujo grau depende de quantas codewords de correção de erros são necessárias. Pegue um código Versão 1 no nível M: 16 codewords de dados mais 10 codewords de correção de erros, 26 no total. Mude para nível H e o equilíbrio se inclina fortemente para correção de erros.

Posicionamento de dados e a região de codificação

Uma vez que os dados são codificados e as codewords de correção de erros computadas, o fluxo de bits resultante é posicionado na região de codificação seguindo um caminho específico. Os dados vão em colunas de 2 módulos de largura, começando no canto inferior direito, subindo, depois deslocando para a esquerda e serpenteando para baixo. O zigue-zague continua por todo o símbolo, pulando padrões de temporização e padrões de função pelo caminho.

Então um dos oito padrões de máscara é aplicado via XOR à região de codificação. O codificador testa todos os oito, pontua cada um usando regras de penalidade do padrão, e escolhe a máscara que produz a distribuição mais equilibrada de módulos escuros e claros. Escreve o número da máscara vencedora na faixa de informação de formato para que o decodificador saiba como revertê-la.

O que o padrão não cobre

A ISO 18004 é uma especificação de simbologia, não uma especificação de aplicação. Define como um símbolo QR code é construído e decodificado. Não define:

  • Quais dados você deve colocar num QR code, ou qual formato esses dados devem seguir (vCard, URL, schema de deep link, são decisões da camada de aplicação)
  • Tamanho mínimo de impressão física (embora a ISO 15415 e padrões relacionados cubram classificação de qualidade de impressão)
  • Regras de customização visual (cantos arredondados, cores, logos embutidos)
  • Operação dinâmica vs. estática (se o QR code redireciona por um encurtador de URL está inteiramente fora do escopo do padrão)
  • Como aplicações de leitura interpretam ou agem sobre o conteúdo decodificado

Essa fronteira importa mais do que você imagina. Quando um responsável por conformidade pergunta se um QR code é "conforme à ISO," quer dizer: o símbolo está de acordo com os requisitos estruturais e de codificação da ISO 18004? Isso é respondível e verificável. O que acontece depois do escaneamento é uma questão diferente, regida por especificações diferentes.

A edição 2024: o que mudou

ISO/IEC 18004:2024 é a quarta edição, substituindo a versão de 2015. O núcleo permaneceu estável: sistema de versões, estrutura de módulos, modos de codificação, níveis de correção de erros, tudo inalterado. O que a revisão de 2024 tocou foram eficiência de codificação, procedimentos de correção de erros mais precisos e o recurso de structured append.

Structured append permite dividir um único fluxo de dados em até 16 símbolos QR code. Cada um escaneia independentemente; o decodificador remonta as peças em ordem. Útil quando seus dados excedem o que um único símbolo pode armazenar num tamanho imprimível. A edição de 2024 refinou como essa remontagem é sinalizada e verificada.

Por que engenheiros devem saber disso

Se você constrói qualquer coisa que gera, lê ou valida QR codes (PDV de varejo, leitores de depósito, plataformas de marketing, emissão de ingressos), conhecer a ISO 18004 leva a melhores decisões em todos os níveis.

Nível de correção de erros não é uma decisão cosmética. Afeta diretamente a confiabilidade de escaneamento no seu ambiente de implantação. Seleção de versão determina tamanho físico e velocidade de decodificação. Modo de codificação determina capacidade de payload. Conformidade da zona silenciosa determina se seus códigos realmente funcionam em tamanhos pequenos de impressão. Todas essas são escolhas no nível da especificação com consequências reais.

Ferramentas como o gerador de QR code da QR Nova cuidam desses parâmetros para você, mas conhecer o padrão subjacente significa que você pode auditar o resultado, definir restrições informadas e diagnosticar falhas de escaneamento com precisão em vez de palpites.

Conclusão

A ISO 18004 é a razão pela qual um QR code impresso em Tóquio, escaneado por uma câmera fabricada na Alemanha, é decodificado corretamente por software escrito na Califórnia. Ela fixa cada elemento estrutural (finder patterns, timing patterns, alignment patterns, informação de formato, informação de versão, zona silenciosa) e cada camada lógica (modos de codificação, correção de erros, padrões de máscara, posicionamento de dados). Leitura densa na forma publicada, mas a engenharia por baixo é genuinamente elegante.

As conclusões práticas: use o modo de codificação certo para seu tipo de dados, escolha correção de erros baseada nas condições físicas onde o código vai estar, respeite a zona silenciosa de 4 módulos, e deixe a versão se definir sozinha com base no tamanho do conteúdo. Acerte esses quatro pontos e seus códigos vão escanear de forma confiável em qualquer leitor compatível.

Perguntas frequentes

O que é ISO 18004 e quem a publica?

ISO/IEC 18004 é o padrão internacional que define a especificação da simbologia do QR code. É publicado conjuntamente pela International Organization for Standardization (ISO) e pela International Electrotechnical Commission (IEC). A edição atual é a quarta, publicada em agosto de 2024.

Qual é a diferença entre QR Code Modelo 1, Modelo 2 e QR Code padrão?

Modelo 1 é a especificação original de 1994. Modelo 2 adicionou padrões de alinhamento para ajudar leitores a navegar símbolos maiores com mais confiabilidade. O QR code padrão moderno (o que todos usam hoje) é baseado no Modelo 2 com refinamentos adicionais. Micro QR Code é uma variante compacta regida pelo mesmo padrão, otimizada para etiquetas físicas pequenas.

Quantos caracteres um QR code pode armazenar?

Depende da versão e do nível de correção de erros. Um código Versão 40 no nível de correção de erros L pode armazenar até 7.089 dígitos numéricos, 4.296 caracteres alfanuméricos ou 2.953 bytes de dados binários. Um código Versão 1 armazena apenas 41 caracteres numéricos. A maioria dos QR codes reais usa versões entre 1 e 10.

O que os quatro níveis de correção de erros significam na prática?

Nível L recupera até 7% das codewords danificadas, M recupera 15%, Q recupera 25% e H recupera 30%. Níveis mais altos tornam o código fisicamente maior porque mais do símbolo é dedicado à redundância em vez de dados. Nível M é a escolha mais comum para uso geral; nível H é usado quando códigos serão impressos em superfícies curvas ou em ambientes severos.

O que é uma zona silenciosa e qual largura ela precisa ter?

A zona silenciosa é a borda branca em branco ao redor do símbolo QR code. A ISO 18004 exige que ela tenha pelo menos 4 módulos de largura em todos os lados. Violar esse requisito é uma das razões mais comuns pelas quais um QR code falha ao escanear de forma confiável, porque os leitores usam o contraste da borda da zona silenciosa para localizar o símbolo.

A ISO 18004 cobre a aparência do QR code, cores, logos, cantos arredondados?

Não. O padrão define a codificação de dados, posicionamento de módulos, correção de erros e tolerâncias de medição, não estilização visual. Adicionar um logo, arredondar cantos ou usar cores diferentes de preto-no-branco é possível, mas consome seu orçamento de correção de erros. O padrão especifica requisitos mínimos de qualidade de impressão (classificação ISO 15415) para garantir a escaneabilidade.

O que mudou na ISO/IEC 18004:2024 em relação à edição de 2015?

A quarta edição de 2024 otimizou a eficiência de codificação, melhorou os procedimentos de correção de erros e refinou a funcionalidade de structured append que permite dividir dados entre múltiplos símbolos QR code. A simbologia central, sistema de versões, estrutura de módulos, modos de codificação, permaneceu estável.

Generate your first QR code — free

Comecar