Como funciona um código QR

Um guia visual simples para entender os códigos QR: anatomia, deteção, geração e correção de erros.

info O que é um código QR?

Um código QR (Quick Response) é um tipo de código de barras bidimensional inventado em 1994 pela empresa japonesa Denso Wave. Ao contrário de um código de barras tradicional que armazena informações apenas numa direção, o código QR armazena dados horizontal e verticalmente, permitindo-lhe conter muito mais informação num espaço pequeno.

Hoje, ler um código QR faz parte do dia a dia: encontramo-los em restaurantes, cartazes, produtos, cartões de visita e até em criptomoedas. Mas como funciona realmente por dentro?

grid_on Anatomia de um código QR

Antes de compreender como um código QR é lido ou gerado, é útil conhecer as suas partes:

Padrões de posição (Finder Patterns) Os três grandes quadrados nos cantos superior esquerdo, superior direito e inferior esquerdo. Permitem que o scanner detete o código QR independentemente da sua orientação ou do ângulo da câmara.
Padrão de alinhamento (Alignment Pattern) Um quadrado menor no canto inferior direito. Ajuda a corrigir distorções quando o código está numa superfície curva.
Padrões de sincronização (Timing Patterns) Duas linhas de módulos alternados (preto-branco) que ligam os padrões de posição e permitem calcular o tamanho de cada módulo.
Zona de dados O resto da grelha: cada pequeno quadrado preto ou branco representa um bit de informação (1 ou 0).
Zona silenciosa (Quiet Zone) Uma borda branca à volta do código que ajuda o scanner a separá-lo do fundo.

qr_code_scanner Como um código QR é lido

Quando aponta a câmara para um código QR, várias coisas acontecem em milissegundos:

Captura
arrow_forward
Localização
arrow_forward
Perspetiva
arrow_forward
Bits
arrow_forward
Descodificação
1
1. Captura de imagem A câmara captura continuamente frames de vídeo. Cada frame é uma grelha de pixels com valores de brilho.
2
2. Localização de padrões O software procura os três quadrados de posição (Finder Patterns). A sua proporção característica (1:1:3:1:1) torna-os únicos e fáceis de identificar mesmo em ângulos difíceis.
3
3. Correção de perspetiva A partir dos três cantos detetados, o algoritmo calcula uma transformação matemática para endireitar o código mesmo que a câmara esteja inclinada.
4
4. Leitura de módulos Com o código alinhado, o software lê cada módulo e converte-o num bit: preto = 1, branco = 0.
5
5. Descodificação e correção de erros Os bits são agrupados em blocos e aplica-se Reed-Solomon para corrigir possíveis erros. Por fim, os dados são descodificados de acordo com o modo (numérico, alfanumérico, binário ou kanji).

grid_view Como um código QR é gerado

Criar um código QR é o processo inverso de lê-lo:

Entrada
arrow_forward
Codificação
arrow_forward
Reed-Solomon
arrow_forward
Matriz
arrow_forward
Imagem
1
1. Entrada de dados Introduz o texto, URL ou outro conteúdo que quer codificar.
2
2. Codificação binária O software seleciona o modo de codificação mais eficiente e converte os dados para uma sequência de bits.
3
3. Correção de erros São adicionados bits de redundância com Reed-Solomon. Quanto maior o nível escolhido (L, M, Q ou H), mais bits extra são adicionados e mais resistente é o código.
4
4. Construção da matriz A informação é colocada numa grelha seguindo um padrão em espiral, os padrões de posição são adicionados e aplica-se uma máscara para evitar grandes áreas da mesma cor.
5
5. Renderização A grelha final é convertida na imagem que transfere: PNG, SVG, PDF…

shield Correção de erros: por que os QR resistem a danos

O algoritmo Reed-Solomon permite que um código QR seja legível mesmo que até 30% da sua superfície esteja danificada, suja ou coberta. É por isso que pode colocar o logótipo da sua empresa em cima sem que deixe de funcionar, desde que use o nível H e não cubra mais de 25-30%.

Os quatro níveis disponíveis são:

L
7%
Uso digital, ecrãs. Código mais leve e pequeno.
M
15%
Uso geral. Bom equilíbrio tamanho/resistência.
Q
25%
Impressão com possível desgaste ou sujidade.
H
30%
Com logótipo em cima ou ambientes muito adversos.

quiz Perguntas frequentes sobre os códigos QR

Um código QR (Quick Response) é um tipo de código de barras bidimensional inventado em 1994 pela empresa japonesa Denso Wave. Armazena informação horizontal e verticalmente através de módulos pretos e brancos, podendo conter até 7.089 caracteres numéricos ou 4.296 alfanuméricos numa área pequena.
Um código QR codifica dados como um padrão de módulos escuros e claros numa grelha. Quando a câmara o captura, o software deteta os três padrões de posição (os quadrados dos cantos), corrige a perspetiva, lê cada módulo como um bit (preto = 1, branco = 0) e aplica o algoritmo Reed-Solomon para corrigir erros antes de descodificar a informação.
Graças ao algoritmo Reed-Solomon, um código QR pode recuperar a informação mesmo que até 30% da sua superfície esteja danificada, suja ou coberta. Por isso é comum adicionar um logótipo em cima sem que deixe de ser lido corretamente, desde que se use o nível H e não se cubra mais de 25-30%.
Depende do tipo de dado e do nível de correção de erros. O máximo teórico é: 7.089 dígitos numéricos, 4.296 caracteres alfanuméricos, 2.953 bytes binários ou 1.817 caracteres kanji. Para uso prático, mantenha URLs curtos e textos concisos para que o código seja mais denso e fácil de ler em tamanhos pequenos.
Ler é descodificar: a câmara analisa a imagem e extrai a informação codificada. Gerar é o processo inverso: o software toma os seus dados (texto, URL, WiFi…), converte-os em bits, adiciona redundância Reed-Solomon e constrói a grelha de módulos que pode imprimir ou partilhar digitalmente.
Nem sempre. Um código QR pode apontar para um URL malicioso ou desencadear uma ação indesejada (chamada, pagamento, download). Antes de visitar o link, verifique o URL mostrado pelo scanner. O nosso scanner verifica os URLs contra o Google Safe Browsing e o VirusTotal e avisa-o se o destino for perigoso.
É a quantidade de redundância adicionada para que o código permaneça legível mesmo parcialmente danificado. Há quatro níveis: L (7% de tolerância, código mais denso e leve), M (15%, uso geral), Q (25%, para impressão com provável desgaste) e H (30%, ideal para adicionar logótipos em cima). Quanto maior o nível, maior o código.
help_outline

Como funciona um código QR?

Descubra a anatomia de um QR, como é lido, gerado e por que ainda funciona mesmo danificado.

Ler guia gratuito arrow_forward

Grátis para sempre

Sem assinaturas

Nenhuma conta necessária

Sem rastreamento

Nenhum dado compartilhado com terceiros

Os códigos QR nunca expiram

Deteção 100% no navegador

Toda a deteção ocorre diretamente no seu dispositivo via JavaScript. Nenhum fotograma ou imagem sai do seu navegador.

Alertas de links fraudulentos

Os URLs dos QR são verificados contra o Google Safe Browsing e o VirusTotal para o avisar se o destino for perigoso.