Como este foi lido
- Símbolo
- Versão
- Correção de erro
- Máscara
- Palavras de código reparadas
- Escrito como
- Conjunto de caracteres declarado
- Parte de um conjunto
- Linhas de leitura que concordaram
- Caracteres
- Encontrado com
Abrir o index.html direto de uma pasta bloqueia os módulos de JavaScript, então não vai acontecer nada quando você escolher a imagem que vai ser lida. Sirva a pasta por http:
powershell -ExecutionPolicy Bypass -File serve.ps1
Depois abra http://localhost:8080/.
Aponte a câmera, ou solte aqui uma foto. A leitura acontece aqui, e em nenhum outro lugar.
Ler um código é aritmética sobre pixels, e os pixels já estão aqui. Achar o símbolo, corrigir o ângulo, desfazer a máscara, reparar o dano com Reed-Solomon e ler os bits de volta acontece tudo em cerca de duas mil linhas de JavaScript nesta página, que você pode ler. A câmera é a mesma promessa, não uma exceção a ela: um quadro chega como pixels nesta aba, é examinado e some. Nada é gravado, nada fica guardado, e esta página não tem função de rede de espécie alguma para mandar coisa nenhuma.
Verificação ao vivo: verificando…
Offline: verificando…
Você não precisa confiar na nossa palavra. Abra as ferramentas do desenvolvedor, deixe a aba “Rede” à vista e leia um código com a câmera ligada. Nenhuma requisição leva um quadro nem um caractere do que estava escrito. Ou então desligue a internet e leia o código assim mesmo.
fetch, XMLHttpRequest ou sendBeacon para ver quais dados recebem. A Content-Security-Policy limita destinos, inclusive hosts de plataforma permitidos; não afirma ausência de destinos de rede nem prova todos os conteúdos.@, um nome escrito num alfabeto cujas letras têm a forma das nossas, um redirecionamento — são apontados onde aparecem. Confira você mesmo. Nada do que está acima precisa ser aceito na fé. Esta página é gerada a partir dos modelos e da configuração do repositório por um script de compilação que você pode ler e rodar por conta própria, e o resultado vai para a branch dist. Ou seja, dá para comparar o que é servido com o que uma compilação das fontes produz:
github.com/A-Box-of-Tools/website
Os primeiros arquivos que valem a leitura são config/site.toml para a Content-Security-Policy, src/binarize.js e src/detect.js para achar um símbolo dentro de uma fotografia — o limiar, os padrões de localização e a correção de perspectiva —, src/qr-decode.js para ler de volta, src/reed-solomon.js para reparar o que foi lido errado, src/linear.js para os de barra e src/camera.js, que é cada linha desta página que encosta numa câmera.
Se o software de segurança da sua empresa avisar sobre um envio. Um aviso ao escolher um arquivo não prova que ele foi enviado. Em uma operação local, confira os endereços e os dados das solicitações na aba Rede e compare com o código desta página. Buscas opcionais e compartilhamentos deliberados têm explicações próprias. Sua equipe de TI pode fazer a mesma verificação.
Uma fotografia, um print, ou a câmera. Escolha o que escolher, a imagem é lida aqui, nesta página, no seu computador — nada é enviado, e um quadro da câmera é examinado e jogado fora, não gravado.
Você também pode colar uma imagem direto com Ctrl+V — um print de um código que já está na tela é o caminho mais rápido.
Acender a luz Só algumas câmeras têm, e só alguns navegadores deixam uma página pedir. Onde não é oferecida, não existe.
A luz da câmera é aqui o indicador honesto: fica acesa enquanto chegam quadros e apaga no instante em que você para. Nada do que existe entre esses dois pontos é escrito em disco, e não há na Content-Security-Policy desta página nenhum endereço para onde uma imagem pudesse ir.
Mostrado, nunca aberto. Um código impresso é um endereço que ninguém consegue ler, que é exatamente o que faz valer a pena para alguém colar um adesivo por cima — então o texto inteiro está aqui para você olhar, com o host onde você realmente cairia numa linha só dele.
# Leitor de QR Code e código de barras — ler um QR Code de uma imagem ou pela câmera Aponte a câmera, ou solte aqui uma foto. A leitura acontece aqui, e em nenhum outro lugar. > Leia um QR Code de uma foto, de um print ou pela câmera, e veja exatamente para onde o link leva antes de abrir. EAN, UPC, Code 128, Code 39 e ITF também. Nada é enviado. Esta é uma ferramenta interativa de navegador em https://abox.tools/pt/ler-qr-code/. Os arquivos são processados no dispositivo que executa esse navegador. Compartilhamento deliberado e funções opcionais de rede são explicados na página. A seguir está sua explicação escrita; abra o endereço para usá-la. ## Seus as imagens e os códigos que estão nelas são **processados no navegador**. Sem envio para processamento. Ler um código é aritmética sobre pixels, e os pixels já estão aqui. Achar o símbolo, corrigir o ângulo, desfazer a máscara, reparar o dano com Reed-Solomon e ler os bits de volta acontece tudo em cerca de duas mil linhas de JavaScript nesta página, que você pode ler. **A câmera é a mesma promessa, não uma exceção a ela:** um quadro chega como pixels nesta aba, é examinado e some. Nada é gravado, nada fica guardado, e esta página não tem função de rede de espécie alguma para mandar coisa nenhuma. - ✗ Nada é enviado - ✗ Sem conta - ✗ Nada é gravado - ✓ Funciona offline - ✓ Código aberto ## Como ler um QR Code sem enviar a imagem 1. **Dê a imagem para ela.** Solte uma foto ou um print na caixa, cole uma direto, ou aperte o botão da câmera. Várias de uma vez pode: cada uma é lida por conta própria e cada uma tem a sua resposta. Um print de um código que já está na sua tela é o caminho mais rápido e o mais confiável, porque ali não entra lente, nem ângulo, nem luz. 2. **Ponha o símbolo inteiro no quadro, margem incluída.** O branco em volta de um código faz parte do código: é assim que um leitor sabe onde o símbolo termina. Uma foto cortada rente à borda dos quadradinhos é de longe o motivo mais comum de um código não ser lido. Encher mais ou menos metade do quadro com o código está bom; mais perto do que isso e os cantos ficam de fora. 3. **Leia o endereço antes de decidir qualquer coisa.** O motivo de ler um código num cartaz, num parquímetro ou numa carta é descobrir para onde ele leva, e é justamente isso que a câmera do celular não deixa você fazer de verdade. Aqui o host fica numa linha só dele. Se não for um nome que você esperava, você já conseguiu o que veio buscar e não sobra nada para abrir. 4. **Leve os avisos a sério, principalmente os discretos.** Um endereço `http://` puro, um nome num alfabeto que não é o que parece, um encurtador de link, ou qualquer coisa antes de um `@` no endereço: cada um é apontado onde aparece. Nenhum deles prova nada sozinho. Todos valem dez segundos antes de você ir. 5. **Se não ler, mude a luz antes de mudar qualquer outra coisa.** Quase toda falha é problema de limiar: um reflexo atravessando o meio, uma sombra sobre um canto, ou uma tela fotografada num ângulo que pega a luz de fundo. Mude de posição para o brilho não cair no código, ou acenda a luz da câmera. Se ainda assim não der, tire uma foto reta e de frente e solte essa — uma imagem parada recebe uma busca muito mais minuciosa do que um quadro ao vivo consegue receber. 6. **Se a resposta parecer estranha, olhe a imagem amostrada.** Abra “como este foi lido” e olhe a gradezinha. É o que esta página achou que o código era, redesenhado a partir dos módulos que ela amostrou. Um leitor que leu um símbolo errado e o reparou até virar algo plausível mostra isso ali, e em nenhum outro lugar. ## A versão longa [Como criar um código QR e provar que ele escaneia](https://abox.tools/pt/guias/criar-um-codigo-qr-e-provar-que-escaneia/): Gere o código e depois verifique com o leitor do mesmo site: a carga exata, o link real, no tamanho de impressão e a partir de uma foto, antes da tiragem. Tudo no navegador, nada enviado. ## Também na caixa - [Hash e checksum](https://abox.tools/pt/verificar-checksum/): Confira um download contra o número que quem publicou divulgou, sem mandar o arquivo para ninguém. - [Gerador de senha e frase secreta](https://abox.tools/pt/gerador-de-senha/): Gerada aqui, pelo seu próprio navegador, e não enviada para lugar nenhum. Nada é guardado e não existe histórico. - [Formatador de JSON](https://abox.tools/pt/formatar-json/): JSON, XML, HTML, CSS e YAML, formatados ou convertidos. Nada é colado no servidor de ninguém. - [Conversor de YAML para JSON](https://abox.tools/pt/converter-yaml-para-json/): Os dois sentidos, e ele diz o que cada um custa. Nada disso é colado no servidor de outra pessoa. ## Perguntas ### A imagem é enviada para algum lugar? Não, e nem o que é lido dela. A imagem é decodificada num canvas desta página e lida ali, por JavaScript servido deste site. Esta ferramenta não tem função de rede de espécie alguma — nunca busca nada e nunca manda nada — e a `Content-Security-Policy` da página nomeia todo endereço que ela pode contatar, e nenhum deles é nosso. A prova mais simples é desligar a internet: ela continua funcionando. ### A câmera grava alguma coisa? Não. Um quadro da câmera chega como pixels nesta aba, é desenhado num canvas, é examinado e é sobrescrito pelo próximo cerca de um décimo de segundo depois. Nada é escrito em disco e nada fica guardado. O fluxo para assim que você aperta parar, quando a aba vai para segundo plano e quando você sai da página — e a luz da sua câmera é o indicador em que confiar, porque nenhuma página consegue apagá-la. ### Por que ela me mostra o link em vez de abrir? Porque essa é a parte útil. Um QR Code é um endereço que você não consegue ler, e é justamente por isso que um adesivo sobre o código de um parquímetro funciona: quando você descobre para onde ele ia, já está lá. Aqui o texto é mostrado inteiro, o host sai numa linha só dele, e abrir é um botão separado que você aperta depois de ler. É um clique a mais, e é o clique de que esse formato sempre precisou. ### O que ela consegue ler? QR Codes em todas as versões, da 1 à 40, nos quatro níveis de correção de erro, em modo numérico, alfanumérico, byte e kanji, informando os conjuntos de caracteres ECI e os símbolos de um conjunto encadeado em vez de descartar em silêncio. Do lado das barras: EAN-13, EAN-8, UPC-A, UPC-E, ITF-14, Interleaved 2 of 5, Code 128 e Code 39. Não lê Data Matrix, PDF417, Aztec nem MaxiCode. ### Ela não lê o meu código. O que está errado? Nove em cada dez vezes é uma de três coisas. A margem branca foi cortada, e um leitor usa ela para saber onde o símbolo acaba. Tem um reflexo ou uma sombra sobre parte do código, então nenhum limiar separa os quadradinhos escuros dos claros. Ou o código está tão pequeno no quadro que os módulos dele não passam de um ou dois pixels. Mude a luz, encha mais ou menos metade do quadro, e tire a foto de frente em vez de enviesada. ### Ela lê um código danificado ou coberto em parte? Às vezes. Reed-Solomon restaura palavras de código danificadas dentro da capacidade do símbolo. Os cerca de 30% de H se referem ao total de palavras de código, não a módulos arbitrários nem à área; danos nos padrões de localização podem impedir a detecção. O contador do resultado mostra os reparos realizados. [A DENSO explica os níveis](https://www.qrcode.com/en/about/error_correction.html). ### Por que ela diz que não sabe para onde um link do `bit.ly` leva? Porque descobrir seria perguntar ao `bit.ly`, e isso é uma requisição de rede. Todo o resto do que esta página afirma se apoia em não existir aqui nenhum código que contate coisa alguma, e abrir uma exceção caladinho valeria menos do que a resposta. Então o encurtador é apontado e o que ele esconde fica honestamente desconhecido. Se você quiser resolver, cole num lugar que aceite perguntar. ### É seguro ler um QR Code? Ler é seguro. Obedecer é o risco, e é um risco real: código colado por cima do verdadeiro em parquímetro, em mesa de restaurante e em aviso de entrega já é comum o bastante para ter nome. O que faz isso funcionar é que ninguém consegue ler um código olhando para ele. Ler sem abrir — que é o que esta página faz — tira essa vantagem inteira, e os dez segundos que custa olhar o host são a defesa toda. ### O que é a gradezinha embaixo de cada resultado? Os módulos que esta página amostrou de verdade da sua imagem, redesenhados a um quadradinho por módulo. Ela está aí para a leitura poder ser conferida no olho em vez de acreditada: se aquela grade parece o código que você fotografou, a resposta acima saiu dos pixels certos. Quase nenhum leitor te mostra isso, e é a diferença entre uma ferramenta que dá para conferir e uma em que você tem que acreditar. ### Ela lê vários códigos numa imagem só? Um por imagem, por enquanto. Solte várias imagens de uma vez e cada uma é lida por conta própria, e a câmera vai lendo código atrás de código enquanto você move, guardando cada um novo que ainda não viu. Uma única foto com uma folha cheia de códigos é caso de recortar, ou de apontar a câmera para um de cada vez. ### Por que ela chama o meu código de barras de outro nome? Porque um código de barras não carrega o próprio nome. UPC-A é um EAN-13 cujo primeiro dígito é zero, ITF-14 é Interleaved 2 of 5 com catorze dígitos e um dígito verificador válido, e o Code 128 no modo numérico não se parece com mais nada. O que esta página informa é o que as barras dizem mais o que o dígito verificador confirma, que é tudo o que o próprio símbolo sabe. ### Funciona offline? Sim. Carregue a página uma vez, depois desligue a internet e ela continua funcionando, câmera inclusive. É também o jeito mais simples de provar que nada é enviado: um leitor que mandasse a sua imagem para fora para ser decodificada pararia no instante em que você tirasse da tomada. ## Como dá para conferir a promessa de privacidade - **A imagem nunca é enviada, e a câmera não é exceção.** Uma foto que você solta aqui é decodificada num canvas desta página e lida ali. Um quadro da câmera é a mesma coisa chegando trinta vezes por segundo: é desenhado nesse canvas, examinado e sobrescrito pelo seguinte. Nenhum é gravado, nenhum fica guardado, e a luz da câmera apagando quando você aperta parar é tudo o que existe. - **Aqui não tem nada que busque nada.** Texto e links decodificados aparecem localmente e nunca abrem sozinhos. Links curtos não são resolvidos, pois isso contataria o destino. Confira o código e chamadas a `fetch`, `XMLHttpRequest` ou `sendBeacon` para ver quais dados recebem. A `Content-Security-Policy` limita destinos, inclusive hosts de plataforma permitidos; não afirma ausência de destinos de rede nem prova todos os conteúdos. - **Ela mostra o endereço. Nunca abre.** Um QR Code impresso é um endereço que ninguém consegue ler, e é exatamente isso que faz valer a pena para alguém colar um adesivo por cima. Aqui nada é aberto. O texto inteiro é mostrado para você olhar, o host onde você realmente cairia sai numa linha só dele, e os truques que fazem um endereço parecer outro — um nome de usuário antes de um `@`, um nome escrito num alfabeto cujas letras têm a forma das nossas, um redirecionamento — são apontados onde aparecem. - **Ela também mostra o que amostrou.** Embaixo de cada resultado de QR Code tem uma imagem dos módulos que esta página leu de verdade da sua fotografia. Se aquilo parece o código que você leu, a resposta acima está de pé; se parece chuvisco, não está. Um leitor que te dá um texto e mais nada não pode ser conferido assim. - **O que o Google carrega, e o que não recebe.** Os scripts de anúncio e de medição vêm do Google, e o botão de doação vem do Buy Me a Coffee. Nenhum deles recebe uma imagem, um quadro, nem nada lido dali. Cada linha que transforma pixels em texto é servida desta mesma origem e está no repositório. - **Funciona offline.** Desligue a rede e a ferramenta continua a mesma, câmera inclusive, porque nunca houve um passo de rede nela. É a prova mais simples de todas. **Confira você mesmo.** Nada do que está acima precisa ser aceito na fé. Esta página é gerada a partir dos modelos e da configuração do repositório por um script de compilação que você pode ler e rodar por conta própria, e o resultado vai para a branch `dist`. Ou seja, dá para comparar o que é servido com o que uma compilação das fontes produz: https://github.com/A-Box-of-Tools/website Os primeiros arquivos que valem a leitura são `config/site.toml` para a Content-Security-Policy, `src/binarize.js` e `src/detect.js` para achar um símbolo dentro de uma fotografia — o limiar, os padrões de localização e a correção de perspectiva —, `src/qr-decode.js` para ler de volta, `src/reed-solomon.js` para reparar o que foi lido errado, `src/linear.js` para os de barra e `src/camera.js`, que é cada linha desta página que encosta numa câmera.
http:// puro, um nome num alfabeto que não é o que parece, um encurtador de link, ou qualquer coisa antes de um @ no endereço: cada um é apontado onde aparece. Nenhum deles prova nada sozinho. Todos valem dez segundos antes de você ir. Como criar um código QR e provar que ele escaneia Gere o código e depois verifique com o leitor do mesmo site: a carga exata, o link real, no tamanho de impressão e a partir de uma foto, antes da tiragem. Tudo no navegador, nada enviado.
Não, e nem o que é lido dela. A imagem é decodificada num canvas desta página e lida ali, por JavaScript servido deste site. Esta ferramenta não tem função de rede de espécie alguma — nunca busca nada e nunca manda nada — e a Content-Security-Policy da página nomeia todo endereço que ela pode contatar, e nenhum deles é nosso. A prova mais simples é desligar a internet: ela continua funcionando.
Não. Um quadro da câmera chega como pixels nesta aba, é desenhado num canvas, é examinado e é sobrescrito pelo próximo cerca de um décimo de segundo depois. Nada é escrito em disco e nada fica guardado. O fluxo para assim que você aperta parar, quando a aba vai para segundo plano e quando você sai da página — e a luz da sua câmera é o indicador em que confiar, porque nenhuma página consegue apagá-la.
Porque essa é a parte útil. Um QR Code é um endereço que você não consegue ler, e é justamente por isso que um adesivo sobre o código de um parquímetro funciona: quando você descobre para onde ele ia, já está lá. Aqui o texto é mostrado inteiro, o host sai numa linha só dele, e abrir é um botão separado que você aperta depois de ler. É um clique a mais, e é o clique de que esse formato sempre precisou.
QR Codes em todas as versões, da 1 à 40, nos quatro níveis de correção de erro, em modo numérico, alfanumérico, byte e kanji, informando os conjuntos de caracteres ECI e os símbolos de um conjunto encadeado em vez de descartar em silêncio. Do lado das barras: EAN-13, EAN-8, UPC-A, UPC-E, ITF-14, Interleaved 2 of 5, Code 128 e Code 39. Não lê Data Matrix, PDF417, Aztec nem MaxiCode.
Nove em cada dez vezes é uma de três coisas. A margem branca foi cortada, e um leitor usa ela para saber onde o símbolo acaba. Tem um reflexo ou uma sombra sobre parte do código, então nenhum limiar separa os quadradinhos escuros dos claros. Ou o código está tão pequeno no quadro que os módulos dele não passam de um ou dois pixels. Mude a luz, encha mais ou menos metade do quadro, e tire a foto de frente em vez de enviesada.
Às vezes. Reed-Solomon restaura palavras de código danificadas dentro da capacidade do símbolo. Os cerca de 30% de H se referem ao total de palavras de código, não a módulos arbitrários nem à área; danos nos padrões de localização podem impedir a detecção. O contador do resultado mostra os reparos realizados. A DENSO explica os níveis.
bit.ly leva? Porque descobrir seria perguntar ao bit.ly, e isso é uma requisição de rede. Todo o resto do que esta página afirma se apoia em não existir aqui nenhum código que contate coisa alguma, e abrir uma exceção caladinho valeria menos do que a resposta. Então o encurtador é apontado e o que ele esconde fica honestamente desconhecido. Se você quiser resolver, cole num lugar que aceite perguntar.
Ler é seguro. Obedecer é o risco, e é um risco real: código colado por cima do verdadeiro em parquímetro, em mesa de restaurante e em aviso de entrega já é comum o bastante para ter nome. O que faz isso funcionar é que ninguém consegue ler um código olhando para ele. Ler sem abrir — que é o que esta página faz — tira essa vantagem inteira, e os dez segundos que custa olhar o host são a defesa toda.
Os módulos que esta página amostrou de verdade da sua imagem, redesenhados a um quadradinho por módulo. Ela está aí para a leitura poder ser conferida no olho em vez de acreditada: se aquela grade parece o código que você fotografou, a resposta acima saiu dos pixels certos. Quase nenhum leitor te mostra isso, e é a diferença entre uma ferramenta que dá para conferir e uma em que você tem que acreditar.
Um por imagem, por enquanto. Solte várias imagens de uma vez e cada uma é lida por conta própria, e a câmera vai lendo código atrás de código enquanto você move, guardando cada um novo que ainda não viu. Uma única foto com uma folha cheia de códigos é caso de recortar, ou de apontar a câmera para um de cada vez.
Porque um código de barras não carrega o próprio nome. UPC-A é um EAN-13 cujo primeiro dígito é zero, ITF-14 é Interleaved 2 of 5 com catorze dígitos e um dígito verificador válido, e o Code 128 no modo numérico não se parece com mais nada. O que esta página informa é o que as barras dizem mais o que o dígito verificador confirma, que é tudo o que o próprio símbolo sabe.
Sim. Carregue a página uma vez, depois desligue a internet e ela continua funcionando, câmera inclusive. É também o jeito mais simples de provar que nada é enviado: um leitor que mandasse a sua imagem para fora para ser decodificada pararia no instante em que você tirasse da tomada.
Resolveu o que você precisava?
O que deu errado?
Obrigado — isso ajuda.
Só a resposta é enviada, e só quando você aperta um botão. Nunca o seu arquivo, nem o nome dele, nem nada a respeito.