BrowserTools
Publicidade
Início / Geradores / Leitor de Códigos QR

Leitor de Códigos QR

Lê códigos QR a partir da tua câmara ou de uma imagem carregada, inteiramente no teu navegador.

A carregar Leitor de Códigos QR… Se nada acontecer, ativa o JavaScript.

Os códigos QR codificam URL, cartões de contacto, credenciais de Wi-Fi, informação de pagamento e texto arbitrário num código de barras bidimensional compacto que qualquer câmara de smartphone consegue ler em menos de um segundo. Mas e se precisares de descodificar um código QR a partir de uma captura de ecrã, de um ficheiro de imagem ou de um ecrã secundário, sem tirar o telemóvel? Os navegadores modernos expõem agora a API BarcodeDetector, uma interface nativa que processa os dados de imagem localmente no dispositivo, o que torna possível a leitura de QR totalmente baseada no navegador, sem qualquer carregamento para um servidor nem aplicação de terceiros.

Perguntas frequentes

As imagens lidas ou os fotogramas da câmara são carregados para um servidor?
Não. Toda a descodificação acontece localmente dentro do teu navegador. Quando carregas um ficheiro de imagem, ele é lido diretamente da memória do teu dispositivo usando a API File e passado ao motor de descodificação do navegador. Os fotogramas da câmara são processados no pipeline de gráficos do navegador e nunca saem do teu dispositivo. Nenhum dado é registado ou armazenado.
Como funciona tecnicamente a API BarcodeDetector?
A API BarcodeDetector é uma interface nativa do navegador que aceita uma fonte de imagem, um HTMLImageElement, HTMLCanvasElement, ImageBitmap ou Blob, e devolve uma Promise que se resolve num array de objetos de código de barras detetados, cada um com uma cadeia rawValue e um boundingBox. Internamente delega nas frameworks de análise de imagem do sistema operativo: Vision.framework no macOS/iOS e ML Kit no Android, de modo que a velocidade e a precisão da deteção igualam as da aplicação de câmara nativa.
Que navegadores e formatos de código de barras são suportados?
Os navegadores baseados em Chromium (Chrome, Edge, Opera) em computador e Android suportam o BarcodeDetector e conseguem descodificar códigos QR, Aztec, Code 128, Code 39, Code 93, Codabar, Data Matrix, EAN-8, EAN-13, ITF, PDF417 e UPC-A/E. O Safari 17 no macOS e o iOS 17 acrescentaram suporte. O Firefox não implementa o BarcodeDetector; a ferramenta mostrará um aviso de compatibilidade do navegador e usará uma alternativa em JavaScript.
Que permissão pede o navegador ao usar a câmara?
O navegador mostra um pedido padrão de permissão de câmara na primeira vez que ativas a leitura em direto. Isto é exigido pela especificação `getUserMedia` e não pode ser contornado. Podes revogar a permissão a qualquer momento nas definições do site no teu navegador. A ferramenta solicita apenas vídeo, sem áudio, e para a transmissão da câmara assim que fechas o leitor ou sais dele.
Posso ler um código QR a partir de uma captura de ecrã ou de uma imagem no meu computador?
Sim. Clica no botão Carregar imagem, seleciona qualquer ficheiro PNG, JPEG ou WebP do teu dispositivo, e a ferramenta tentará descodificar todos os códigos de barras na imagem. Isto é particularmente útil para códigos QR recebidos em e-mails ou capturas de ecrã, onde apontar a câmara de um telemóvel a um ecrã é desajeitado.
Porque é que a leitura às vezes falha num código QR válido?
As causas comuns são os artefactos de compressão JPEG que tornam difusos os limites dos módulos, o baixo contraste entre os módulos escuros e o fundo, um código demasiado pequeno no enquadramento da imagem, uma rotação superior a 45 graus em alguns descodificadores, ou danos físicos que ocultam mais do que o nível de correção de erros permite. Tenta abrir a imagem num editor de fotos para aumentar o contraste e a nitidez, e volta a carregá-la.
Em que é que isto difere de simplesmente usar a câmara do meu telemóvel?
A câmara do teu telemóvel é a opção mais fácil para códigos físicos no mundo real. Esta ferramenta é mais rápida para códigos QR digitais, imagens no teu ecrã, em anexos de e-mail, em PDF, onde tirar o telemóvel e apontá-lo ao ecrã é mais lento e menos preciso do que simplesmente carregar o ficheiro. Permite-te também inspecionar o conteúdo de um código QR antes de abrires o URL, o que é uma verificação de segurança útil.
Posso usar isto para verificar um código QR que acabei de gerar?
Sim, e é boa prática. Depois de gerares um código QR, descarrega a imagem e carrega-a aqui para confirmar que descodifica exatamente para o URL ou os dados que pretendias. Isto deteta erros como codificar o protocolo errado (http em vez de https) ou um espaço em branco acidental na entrada que poderia fazer o código ser lido mas redirecionar incorretamente.
É seguro ler um código QR desconhecido com esta ferramenta?
A ferramenta descodifica o conteúdo em bruto e mostra-o como texto antes de tomares qualquer ação. Isto é mais seguro do que ler diretamente com a câmara de um telemóvel, que normalmente abre os URL automaticamente. Podes inspecionar o URL descodificado, verificar se tem domínios ou redirecionamentos suspeitos, e decidir se o visitas, copias ou descartas.
A ferramenta funciona em navegadores móveis?
Sim. No Android, o Chrome suporta o BarcodeDetector nativamente, por isso a leitura baseada em câmara está disponível. No iOS, o Safari 17 ou posterior suporta a API. A via de carregamento de ficheiros funciona em todos os navegadores móveis. Para a leitura em direto com a câmara no telemóvel, apontar a aplicação de câmara predefinida do teu dispositivo a um código físico costuma ser mais conveniente, mas a ferramenta baseada no navegador é útil ao descodificar um código QR visível no mesmo ecrã.

Sobre Leitor de Códigos QR

Os casos de utilização de um leitor de QR baseado no navegador são mais amplos do que podem parecer à primeira vista. Os programadores deparam-se frequentemente com códigos QR em documentação, maquetas de design, fluxos de autenticação e ambientes de teste onde ler com um telemóvel é incómodo. Os profissionais de TI verificam as credenciais de Wi-Fi codificadas em QR antes de implementar sinalética. Os investigadores de segurança inspecionam códigos QR em campanhas de phishing em segurança, descodificando o URL sem clicar nele. Os criadores de conteúdo e os profissionais de marketing descodificam os códigos QR da concorrência para ver para onde redirecionam. Qualquer pessoa que receba uma imagem com um código QR incorporado pode arrastá-la para esta ferramenta e ler o conteúdo instantaneamente.

A ferramenta usa duas vias de descodificação consoante a compatibilidade do navegador. Nos navegadores baseados em Chromium (Chrome 88+, Edge 88+, Opera 74+) e no Safari 17+, usa a API nativa `BarcodeDetector`, que entrega os dados de imagem em bruto ao motor de descodificação integrado do navegador, o mesmo motor que a aplicação de câmara do sistema operativo usa. Nos navegadores que não suportam `BarcodeDetector`, recorre a uma implementação em JavaScript. Em ambos os casos, os dados de imagem são processados inteiramente no teu dispositivo; nada é carregado para qualquer servidor. Para o modo de câmara, a ferramenta usa a API `getUserMedia` para aceder à transmissão da tua webcam, processa os fotogramas localmente e para a transmissão no momento em que sais da página.

Para obteres os melhores resultados ao carregar uma imagem, usa uma versão de alto contraste do código com pelo menos 10 píxeis por módulo (cada quadrado preto ou branco). As imagens JPEG comprimidas podem introduzir artefactos nos limites dos módulos que confundem os descodificadores; os ficheiros PNG são descodificados de forma mais fiável. Se uma leitura falhar, tenta aumentar o brilho e o contraste da imagem em qualquer editor de imagens antes de a carregar. Para a leitura em direto com a câmara, garante uma iluminação uniforme sem reflexos fortes na superfície do código, e mantém a câmara firme a uma distância em que o código inteiro preencha cerca de metade do enquadramento.

Câmaras que leem códigos: como a leitura de códigos de barras no navegador se tornou possível

Durante a maior parte dos 70 anos de história do código de barras, ler um exigia hardware especializado: leitores laser nos supermercados, leitores de mão específicos nos armazéns ou, no mínimo, uma aplicação móvel nativa com acesso direto à câmara. A ideia de que uma página web pudesse descodificar um código de barras em tempo real sem qualquer software instalado teria parecido implausível ainda em 2015. A mudança veio de dois desenvolvimentos que convergiram: a rápida melhoria do desempenho das GPU móveis e o acordo dos fabricantes de navegadores para normalizar o acesso às câmaras dos dispositivos através da API `getUserMedia`, que alcançou suporte generalizado por volta de 2016.

Os primeiros leitores de QR baseados no navegador dependiam inteiramente de bibliotecas de JavaScript que implementavam o algoritmo de descodificação Reed-Solomon por software. Funcionavam, mas eram lentos, consumiam muita CPU e eram propensos a falhar com imagens de baixo contraste ou ligeiramente desfocadas. A melhoria crítica chegou quando a Google propôs a Shape Detection API, mais tarde refinada na API BarcodeDetector, que expõe os mesmos pipelines de análise de imagem acelerados por hardware que as aplicações nativas usam. Ao delegar nas frameworks Vision ou ML Kit do sistema operativo, a velocidade de deteção melhorou em ordens de grandeza e a fiabilidade igualou a das aplicações de câmara nativas.

A API BarcodeDetector foi lançada no Chrome 83 em 2020 e representa uma tendência mais ampla de navegadores que absorvem capacidades que antes exigiam aplicações nativas: acesso ao sistema de ficheiros, Bluetooth, USB, área de transferência e agora a visão por computador. Cada capacidade normalizada reduz a distância entre as aplicações web e as nativas, embora os fabricantes de navegadores discordem sobre até onde estender este acesso. A decisão do Firefox de não implementar o BarcodeDetector reflete um debate filosófico em curso sobre se os navegadores devem sequer expor API de hardware de baixo nível, um debate que o caso de uso da leitura de códigos de barras torna concreto e prático.

Publicidade
Publicidade
Publicidade