Blog

O mito dos 30% de correção de erro: por que o nível H pode piorar seu QR code

Nos dois posts anteriores desta série a conclusão foi a mesma por dois caminhos diferentes: o que decide se um QR code impresso vai ser lido não é o tamanho do código, é o tamanho do módulo — o ladrilho preto ou branco individual. E a durabilidade de um código colado vale o menor dos seus elos, não a média.

Este texto é sobre a configuração que quase todo mundo mexe achando que está comprando robustez, e que em etiqueta pequena costuma estar vendendo.

Resposta curta: os quatro níveis de correção de erro recuperam codewords de dado, não área de imagem suja. Subir o nível ocupa espaço, e espaço pode empurrar o código para a versão seguinte — mais módulos no mesmo tamanho impresso, cada um menor. Q é quase sempre a escolha certa; H só quando há logo no centro ou quando sobra espaço na etiqueta.

O que os 30% realmente significam

A especificação define quatro níveis de correção de erro, cada um reservando uma fração dos codewords do símbolo para reconstrução:

Nível Recuperação Uso típico
L 7% ambiente limpo, código lido uma vez
M 15% padrão da maioria dos geradores
Q 25% externo, industrial, etiqueta que vai envelhecer
H 30% logo no centro, ou espaço sobrando

A palavra que carrega o mal-entendido é recuperação. O algoritmo de Reed-Solomon opera sobre codewords — blocos de 8 bits de dado — e o percentual diz quantos desses blocos podem estar corrompidos e ainda assim serem reconstruídos. Não é uma promessa de que o código lê com 30% da sua área coberta, riscada ou apagada, e não é uma licença para cobrir 30% da imagem com um logo.

A diferença entre as duas leituras aparece na prática assim: dano espalhado — poeira uniforme, desbotamento parcial, um risco fino atravessando o símbolo — é exatamente o que a correção de erro foi feita para absorver, e ela absorve bem. Dano concentrado num lugar errado derruba a leitura com muito menos que 7%.

Onde nenhum nível de correção ajuda

Um QR code não é uma grade uniforme de dado. Parte dele é estrutura, e a estrutura não é protegida por correção de erro nenhuma — porque ela não é dado, é a referência que permite encontrar e amostrar a grade:

  • Os três olhos dos cantos (padrões de localização). São o que diz ao decodificador onde o símbolo está e qual é a sua orientação. Cobrir um deles não é perder 5% de dado; é o decodificador não chegar a procurar dado.
  • Os padrões de tempo, as duas linhas alternadas que ligam os olhos. São a régua que define onde cada módulo começa e termina.
  • A zona de silêncio, os quatro módulos de margem livre em volta. É o que delimita onde o símbolo acaba.

Por isso um logo mal posicionado quebra um código nível H enquanto poeira generalizada não quebra um nível M. O percentual na configuração descreve tolerância a dano distribuído. O mundo físico raramente distribui dano de forma educada — um respingo de tinta, uma etiqueta descascando de um canto, um adesivo colado por cima atingem regiões específicas, e o canto é o lugar onde a etiqueta descola primeiro.

O contrassenso: subir o nível encolhe o módulo

Aqui está a parte que praticamente nenhum gerador de QR code avisa.

Redundância ocupa espaço. Se o dado mais a redundância não couberem na grade atual, o código sobe de versão — a v2 tem 25×25 módulos, a v3 tem 29×29, a v4 tem 33×33, e assim por diante. Num tamanho físico fixo, mais módulos significa cada módulo menor.

O exemplo concreto, com um endereço curto de 29 caracteres em modo alfanumérico, impresso com 30 mm de lado:

Nível Versão Grade Tamanho do módulo Recupera
M v2 25 × 25 1,20 mm 15%
Q v2 25 × 25 1,20 mm 25%
H v3 29 × 29 1,03 mm 30%

Leia as duas últimas linhas juntas, porque elas são o post inteiro:

  • De M para Q, a melhoria é de graça. O endereço ainda cabe na v2, a grade não muda, o módulo não encolhe, e a recuperação sobe de 15% para 25%. Não há trade-off nenhum — quem ficou em M só não olhou.
  • De Q para H, você paga. O símbolo vai para a v3, e no mesmo espaço impresso o módulo cai de 1,20 mm para 1,03 mm: 14% menor, para ganhar 5 pontos percentuais de recuperação de dado que, na prática, vão ser gastos em dano espalhado que o Q já absorvia.

E esses 14% saem justamente da reserva que faz o código durar. A regra 10:1 embute entre 1,5× e 2× de folga sobre o limite físico da câmera, e essa folga é o orçamento que a poeira, o desbotamento e os riscos vão consumir ao longo dos anos. Subir para H numa etiqueta pequena gasta um sétimo desse orçamento no dia da instalação, em troca de uma linha melhor na planilha.

A regra não é “use Q” — é “olhe a fronteira”

O exemplo acima é generoso por coincidência: aquele endereço específico cai exatamente no limite de capacidade da v2 em nível Q. Endereços de outros comprimentos caem em outros lugares, e a conclusão muda com eles.

O que generaliza não é o nível, é o método: antes de escolher, descubra em que versão o seu endereço cai em cada nível. A tabela de capacidade por versão é pública, e qualquer gerador decente mostra a versão resultante. Três resultados possíveis:

  1. Subir de nível não muda a versão. Suba — é ganho puro, e acontece com mais frequência do que se imagina.
  2. Subir de nível muda a versão, e a etiqueta já está no tamanho mínimo. Não suba. Você está trocando robustez real por robustez nominal.
  3. Subir de nível muda a versão, mas sobra espaço na etiqueta. Suba o nível e aumente o código, mantendo o tamanho de módulo. Aí os dois ganhos são reais.

Há um jeito barato de melhorar sua posição nessa tabela antes de mexer no nível: encurtar o endereço. Cada caractere economizado empurra o código na direção de uma versão menor, e módulo maior no mesmo espaço. Um endereço com ?utm_source= pendurado pode custar duas versões inteiras — e parâmetros de campanha num código que vai ficar cinco anos numa parede não fazem sentido de qualquer forma.

A exceção legítima: logo no centro

Existe um caso em que H é a resposta certa, e é o caso para o qual o nível H foi pensado: quando um logo cobre módulos de dado no meio do código. Aí não há dano imaginário — há dado realmente ausente, e é a correção de erro que o reconstrói.

Mesmo aí, os 30% não são o número de trabalho. O limite prático é cerca de 20% da área, porque a diferença entre os dois percentuais é a margem que vai absorver poeira, riscos e ganho de tinta pelos anos seguintes. Um logo dimensionado no limite teórico é um código que lê na bancada e falha na parede depois do primeiro inverno.

As regras que sobrevivem ao uso real: logo centralizado, quadrado ou circular, com uma pequena borda da cor de fundo ao redor dele, nunca encostando nos três olhos dos cantos nem nos padrões de alinhamento. É exatamente por isso que o nosso gerador de QR code com logo fixa o nível H sempre que renderiza: naquele contexto específico, o logo no meio torna H obrigatório, não opcional.

Como decidir, em quatro linhas

  1. Encurte o endereço primeiro. É o ajuste que melhora tudo de uma vez e não custa nada.
  2. Comece em Q, não em M e não em H.
  3. Confira a versão resultante. Se Q e H caem na mesma versão, use H. Se H sobe de versão e a etiqueta está no tamanho mínimo, fique em Q.
  4. Logo no centro? H, com o logo ocupando no máximo 20% da área e longe dos cantos.

O elo que a configuração não alcança

Resolvido o nível de correção, resolvido o tamanho de módulo, resolvido o material — a etiqueta vai aguentar. Nós não imprimimos etiqueta: isso vem da gráfica de sempre, e a página sobre etiqueta de patrimônio diz o que pedir a ela.

O que sobra é a pergunta que nenhuma configuração do gerador responde: o que carrega na tela de quem escaneou. Um código nível Q, com módulo de 1,20 mm, em poliéster com sobrelaminado, que abre um PDF de 40 páginas num Drive que ninguém sabe quem administra, falhou — só que falhou depois da câmera, onde nenhuma norma mede.

Perguntas frequentes

O nível H de correção de erro deixa o QR code mais resistente?

Nem sempre, e frequentemente o contrário. O nível H reserva 30% dos codewords para recuperação, mas essa redundância ocupa espaço e pode empurrar o código para a versão seguinte — uma grade maior de módulos menores. Num tamanho de impressão fixo, você troca 5 pontos percentuais de recuperação de dado por módulos até 14% menores, e tamanho de módulo é o que decide se a câmera de um celular consegue ler. Em etiqueta pequena, H costuma ser uma piora.

Qual nível de correção de erro usar num QR code impresso?

Q (25%) é o ponto ideal para uso externo e industrial. Suba para H apenas em dois casos: quando houver um logo no centro do código, ou quando o aumento de versão não custar tamanho de módulo porque sobra espaço na etiqueta. Antes de decidir, confira onde o seu endereço cai na tabela de capacidade: dependendo do número de caracteres, subir de M para Q não muda a versão e sai de graça.

Dá para cobrir 30% do QR code com um logo?

Não. Os 30% do nível H são a fração de codewords recuperáveis, não uma licença para cobrir 30% da imagem. O limite prático de trabalho é cerca de 20% da área, porque a margem restante é o que vai absorver poeira, riscos e ganho de tinta ao longo dos anos. E nenhum percentual salva um logo que encoste nos três olhos dos cantos ou no padrão de tempo: essas regiões não têm correção de erro nenhuma.