Cómo se leyó este
- Símbolo
- Versión
- Corrección de errores
- Máscara
- Palabras de código reparadas
- Escrito como
- Juego de caracteres declarado
- Parte de un conjunto
- Líneas de barrido que coincidieron
- Caracteres
- Encontrado con
Abrir index.html directamente desde una carpeta bloquea los módulos de JavaScript, así que no pasará nada al elegir la imagen que se va a leer. En vez de eso, sirve la carpeta por http:
powershell -ExecutionPolicy Bypass -File serve.ps1
Abre después http://localhost:8080/.
Apúntale con la cámara o suelta una imagen. Se lee aquí, y en ningún otro sitio.
Leer un código es aritmética sobre píxeles, y los píxeles ya están aquí. Encontrar el símbolo, corregir el ángulo, deshacer la máscara, reparar los daños con Reed-Solomon y volver a leer los bits ocurre todo en unas dos mil líneas de JavaScript en esta página que puedes leer. La cámara es la misma promesa, no una excepción: un fotograma llega como píxeles a esta pestaña, se examina y desaparece. No se graba nada, no se guarda nada, y esta página no tiene ninguna función de red con la que enviarlo.
Comprobación en directo: comprobando…
Sin conexión: comprobando…
No hace falta que nos creas: abre las DevTools, mira la pestaña de red y escanea un código con la cámara encendida. Ni una sola petición lleva un fotograma ni un carácter de lo que decía. O desconéctate de internet y lee el código igualmente.
fetch, XMLHttpRequest o sendBeacon para ver qué datos reciben. La Content-Security-Policy limita destinos, incluidos hosts de plataforma permitidos; no afirma que no haya destinos de red ni demuestra todas las cargas.@, un nombre escrito en un alfabeto cuyas letras tienen nuestra forma, una redirección — se nombran donde aparecen. Compruébalo tú. Nada de lo anterior hay que aceptarlo por fe. Esta página se genera a partir de las plantillas y la configuración del repositorio, con un script de compilación que puedes leer y ejecutar por tu cuenta, y el resultado se publica en la rama dist. Así puedes comparar lo que se sirve con lo que sale de compilar las fuentes:
github.com/A-Box-of-Tools/website
Los archivos por los que conviene empezar son config/site.toml, donde está la Content-Security-Policy, src/binarize.js y src/detect.js para encontrar un símbolo dentro de una fotografía — el umbral, los patrones de búsqueda y la corrección de la perspectiva —, src/qr-decode.js para volver a leerlo, src/reed-solomon.js para reparar lo que se leyó mal, src/linear.js para los de rayas y src/camera.js, que es cada línea de esta página que toca una cámara.
Si el software de seguridad de tu empresa avisa de una subida. Una advertencia al elegir un archivo no demuestra que se haya enviado. En una operación local, examina las direcciones y los datos de las solicitudes en la pestaña Red y compáralos con el código de esta página. Las descargas opcionales y los envíos deliberados tienen sus propias explicaciones. Tu equipo de TI puede hacer la misma comprobación.
Una fotografía, una captura de pantalla o la cámara. Elijas lo que elijas, la imagen se lee aquí, en esta página, en tu máquina — no se sube nada, y un fotograma de la cámara se examina y se tira, no se graba.
También puedes pegar una imagen directamente con Ctrl+V — una captura de un código que ya está en pantalla es la vía más rápida.
Encender la luz Solo algunas cámaras tienen una, y solo algunos navegadores dejan que una página la pida. Donde no se ofrece, no la hay.
La luz de la cámara es aquí el indicador honesto: está encendida mientras llegan fotogramas y apagada en cuanto paras. Nada de lo que hay entre esos dos puntos se escribe en disco, y en la Content-Security-Policy de esta página no hay ninguna dirección a la que pudiera enviarse una imagen.
Se enseña, nunca se abre. Un código impreso es una dirección que nadie puede leer, que es justo lo que hace que a alguien le compense pegar una pegatina encima — así que la cadena entera está aquí para mirarla, con el host al que llegarías de verdad sacado a su propia línea.
# Lector de QR y códigos de barras — escanea un código QR desde una imagen o con la cámara Apúntale con la cámara o suelta una imagen. Se lee aquí, y en ningún otro sitio. > Lee un código QR desde una foto, una captura o tu cámara y mira exactamente adónde lleva el enlace antes de abrirlo. También EAN, UPC, Code 128, Code 39 e ITF. No se sube nada. Esta es una herramienta interactiva de navegador en https://abox.tools/es/escanear-codigo-qr/. Los archivos se procesan en el dispositivo donde se ejecuta ese navegador. La página explica las funciones opcionales de red y los envíos deliberados. Lo que sigue es su explicación escrita; abre la dirección para usarla. ## Tus imágenes y los códigos que hay en ellas se **procesan en tu navegador**. No se suben para procesarlos. Leer un código es aritmética sobre píxeles, y los píxeles ya están aquí. Encontrar el símbolo, corregir el ángulo, deshacer la máscara, reparar los daños con Reed-Solomon y volver a leer los bits ocurre todo en unas dos mil líneas de JavaScript en esta página que puedes leer. **La cámara es la misma promesa, no una excepción:** un fotograma llega como píxeles a esta pestaña, se examina y desaparece. No se graba nada, no se guarda nada, y esta página no tiene ninguna función de red con la que enviarlo. - ✗ Sin subir nada - ✗ Sin cuenta - ✗ No se graba nada - ✓ Funciona sin conexión - ✓ Código abierto ## Cómo leer un código QR sin subir la imagen 1. **Dale la imagen.** Suelta una foto o una captura sobre la caja, pega una directamente o pulsa el botón de la cámara. Varias a la vez está bien: cada una se lee por su cuenta y cada una tiene su respuesta. Una captura de un código que ya está en tu pantalla es la vía más rápida y la más fiable, porque ahí no hay lente, ni ángulo, ni luz de por medio. 2. **Que entre el símbolo entero, con su margen.** El espacio blanco alrededor de un código forma parte del código: es como un lector sabe dónde acaba el símbolo. Una foto recortada hasta el borde de los cuadros es, con diferencia, el motivo más común de que uno no se lea. Llenar más o menos la mitad del encuadre con el código está bien; más cerca y las esquinas se quedan fuera. 3. **Lee la dirección antes de decidir nada.** El sentido de escanear un código en un cartel, en un parquímetro o en una carta es averiguar adónde lleva, y eso es justo lo que la cámara del móvil no te deja hacer de verdad. Aquí el host va en su propia línea. Si no es un nombre que esperabas, ya tienes lo que venías a buscar y no queda nada que abrir. 4. **Toma en serio los avisos, sobre todo los discretos.** Una dirección `http://` a secas, un nombre en un alfabeto que no es el que parece, un acortador de enlaces, o cualquier cosa delante de una `@` en la dirección: cada uno se nombra donde aparece. Ninguno demuestra nada por sí solo. Todos merecen diez segundos antes de ir. 5. **Si no lo lee, cambia la luz antes que ninguna otra cosa.** Casi todos los fallos son un problema de umbral: un reflejo cruzando el centro, una sombra sobre una esquina, o una pantalla fotografiada en un ángulo que recoge la retroiluminación. Muévete para que el brillo no caiga sobre el código, o enciende la luz de la cámara. Si aun así no, haz una foto plana y de frente y suelta esa: una imagen fija recibe una búsqueda mucho más a fondo de la que puede recibir un fotograma en vivo. 6. **Si la respuesta te extraña, mira la imagen muestreada.** Abre «cómo se leyó este» y fíjate en la cuadrícula pequeña. Es lo que esta página creyó que era el código, redibujado a partir de los módulos que muestreó. Un lector que leyó mal un símbolo y lo reparó hasta convertirlo en algo plausible lo enseña ahí, y en ningún otro sitio. ## La versión larga [Cómo crear un código QR y demostrar que escanea](https://abox.tools/es/guias/crear-un-codigo-qr-y-comprobar-que-escanea/): Genera el código y verifícalo después con el lector del mismo sitio: la carga exacta, el enlace real, a tamaño de imprenta y desde una foto, antes de la tirada. Todo en el navegador, nada subido. ## También en la caja - [Hash y suma de verificación](https://abox.tools/es/calcular-checksum/): Comprueba una descarga contra el número que publicó quien la distribuye, sin enviársela a nadie. - [Generador de contraseñas y frases de contraseña](https://abox.tools/es/generador-de-contrasenas/): Se crean aquí, en tu propio navegador, y no se envían a ninguna parte. No se guarda nada y no hay historial. - [Formateador de JSON](https://abox.tools/es/formatear-json/): JSON, XML, HTML, CSS y YAML, formateados o convertidos. Nada se pega en el servidor de nadie. - [Conversor de YAML a JSON](https://abox.tools/es/convertir-yaml-a-json/): Los dos sentidos, y te dice lo que cuesta cada uno. Nada de esto se pega en el servidor de otro. ## Preguntas ### ¿Se sube la imagen a algún sitio? No, ni tampoco nada de lo que se lee en ella. La imagen se descodifica sobre un lienzo de esta página y se lee ahí, con JavaScript servido desde este sitio. Esta herramienta no tiene ninguna función de red — nunca descarga nada y nunca envía nada — y la `Content-Security-Policy` de la página nombra todas las direcciones que puede contactar, y ninguna es nuestra. La prueba más sencilla es desconectarte de internet: sigue funcionando. ### ¿La cámara graba algo? No. Un fotograma llega como píxeles a esta pestaña, se dibuja sobre un lienzo, se examina y lo sobrescribe el siguiente una décima de segundo después. No se escribe nada en disco y no se guarda nada. El flujo se para en cuanto pulsas parar, cuando la pestaña pasa a segundo plano y cuando abandonas la página — y la luz de tu cámara es el indicador del que fiarte, porque ninguna página puede apagarla. ### ¿Por qué me enseña el enlace en vez de abrirlo? Porque esa es la parte útil. Un código QR es una dirección que no puedes leer, y por eso funciona una pegatina sobre el código de un parquímetro: cuando sabes adónde iba, ya estás allí. Aquí la cadena se imprime entera, el host se saca a su propia línea, y abrirlo es un botón aparte que pulsas después de leerlo. Es un clic de más, y es el clic que este formato ha necesitado siempre. ### ¿Qué sabe leer? Códigos QR de todas las versiones, de la 1 a la 40, en los cuatro niveles de corrección de errores, en modo numérico, alfanumérico, de bytes y kanji, informando de los conjuntos de caracteres ECI y de los símbolos de un juego encadenado en lugar de descartarlos en silencio. Del lado de las rayas: EAN-13, EAN-8, UPC-A, UPC-E, ITF-14, Interleaved 2 of 5, Code 128 y Code 39. No lee Data Matrix, PDF417, Aztec ni MaxiCode. ### No me lee el código. ¿Qué pasa? Nueve de cada diez veces es una de tres cosas. El margen blanco está recortado, y un lector lo usa para saber dónde acaba el símbolo. Hay un reflejo o una sombra sobre parte del código, así que ningún umbral separa los cuadros oscuros de los claros. O el código es tan pequeño en el encuadre que sus módulos no llegan a dos píxeles. Cambia la luz, llena más o menos la mitad del encuadre y haz la foto de frente y no de lado. ### ¿Puede leer un código dañado o tapado en parte? A veces. Reed-Solomon restaura palabras de código dañadas dentro de la capacidad del símbolo. El 30 % aproximado de H se refiere al total de palabras de código, no a módulos arbitrarios ni a superficie; dañar los patrones de posición puede impedir la detección. El contador del resultado muestra las reparaciones realizadas. [DENSO explica los niveles](https://www.qrcode.com/en/about/error_correction.html). ### ¿Por qué dice que no puede saber adónde lleva un enlace de `bit.ly`? Porque averiguarlo sería preguntarle a `bit.ly`, y eso es una petición de red. Todo lo demás que afirma esta página se apoya en que aquí no hay código que contacte con nada, y hacer una excepción a la callada valdría menos que la respuesta. Así que se nombra el acortador y lo que esconde se deja honestamente sin saber. Si quieres resolverlo, pégalo en algo que sí esté dispuesto a preguntar. ### ¿Es seguro escanear un código QR? Escanearlo es seguro. Hacerle caso es el riesgo, y es real: los códigos pegados encima del bueno en parquímetros, en mesas de restaurante y en avisos de paquetería son ya bastante comunes como para tener nombre. Lo que los hace funcionar es que nadie puede leer un código mirándolo. Leerlo sin abrirlo — que es lo que hace esta página — elimina esa ventaja por completo, y los diez segundos que cuesta mirar el host son toda la defensa. ### ¿Qué es la cuadrícula pequeña de debajo de cada resultado? Los módulos que esta página muestreó de verdad en tu imagen, redibujados a un cuadrado por módulo. Está ahí para que la lectura se pueda comprobar con la vista en lugar de creérsela: si esa cuadrícula se parece al código que fotografiaste, la respuesta de arriba salió de los píxeles correctos. Casi ningún lector te enseña esto, y es la diferencia entre una herramienta que puedes comprobar y una que tienes que creer. ### ¿Lee varios códigos en una misma imagen? Uno por imagen, de momento. Suelta varias imágenes a la vez y cada una se lee por su cuenta, y la cámara va leyendo código tras código mientras la mueves, quedándose con cada uno nuevo que no haya visto ya. Una sola fotografía con una hoja llena de códigos es un trabajo para recortarla, o para apuntar la cámara a uno cada vez. ### ¿Por qué llama a mi código de barras algo distinto de lo que pedí? Porque un código de barras no lleva su propio nombre encima. UPC-A es un EAN-13 cuyo primer dígito es un cero, ITF-14 es Interleaved 2 of 5 con catorce dígitos y un dígito de control válido, y Code 128 en su modo numérico no se parece a nada más. Lo que informa esta página es lo que dicen las barras más lo que confirma el dígito de control, que es todo lo que el propio símbolo sabe. ### ¿Funciona sin conexión? Sí. Carga la página una vez, desconéctate de internet y sigue funcionando, cámara incluida. Es también la forma más sencilla de probar que no se sube nada: un lector que enviara tu imagen fuera para descodificarla se pararía en el momento en que desenchufas. ## Cómo se comprueba la promesa de privacidad - **La imagen no se sube nunca, y la cámara no es una excepción.** Una foto que sueltas aquí se descodifica sobre un lienzo de esta página y se lee ahí. Un fotograma de la cámara es lo mismo llegando treinta veces por segundo: se dibuja en ese lienzo, se examina y lo sobrescribe el siguiente. No se graba ninguno, no se guarda ninguno, y que la luz de la cámara se apague cuando pulsas parar es todo lo que hay. - **Aquí no hay nada que descargue nada.** Texto y enlaces se muestran localmente y nunca se abren solos. No se resuelven enlaces cortos porque eso contactaría al destino. Revisa el código y las llamadas a `fetch`, `XMLHttpRequest` o `sendBeacon` para ver qué datos reciben. La `Content-Security-Policy` limita destinos, incluidos hosts de plataforma permitidos; no afirma que no haya destinos de red ni demuestra todas las cargas. - **Te enseña la dirección. Nunca la abre.** Un código QR impreso es una dirección que nadie puede leer, y eso es justo lo que hace que a alguien le compense pegar una pegatina encima. Aquí no se abre nada. La cadena entera se imprime para que la mires, el host al que llegarías de verdad se saca aparte, y los trucos que hacen que una dirección parezca otra — un nombre de usuario delante de una `@`, un nombre escrito en un alfabeto cuyas letras tienen nuestra forma, una redirección — se nombran donde aparecen. - **También te enseña lo que muestreó.** Debajo de cada resultado de QR hay una imagen de los módulos que esta página leyó realmente de tu fotografía. Si se parece al código que escaneaste, la respuesta de arriba es sólida; si parece ruido, no lo es. Ningún lector que te dé una cadena y nada más se puede comprobar así. - **Qué carga Google y qué no se le da.** Los scripts de anuncios y de medición vienen de Google, y el botón de donación de Buy Me a Coffee. A ninguno se le da una imagen, ni un fotograma, ni nada leído de ellos. Cada línea que convierte píxeles en una cadena se sirve desde este mismo origen y está en el repositorio. - **Funciona sin conexión.** Desconéctate de la red y la herramienta sigue igual, cámara incluida, porque nunca hubo en ella un paso por la red. Es la prueba más sencilla de todas. **Compruébalo tú.** Nada de lo anterior hay que aceptarlo por fe. Esta página se genera a partir de las plantillas y la configuración del repositorio, con un script de compilación que puedes leer y ejecutar por tu cuenta, y el resultado se publica en la rama `dist`. Así puedes comparar lo que se sirve con lo que sale de compilar las fuentes: https://github.com/A-Box-of-Tools/website Los archivos por los que conviene empezar son `config/site.toml`, donde está la Content-Security-Policy, `src/binarize.js` y `src/detect.js` para encontrar un símbolo dentro de una fotografía — el umbral, los patrones de búsqueda y la corrección de la perspectiva —, `src/qr-decode.js` para volver a leerlo, `src/reed-solomon.js` para reparar lo que se leyó mal, `src/linear.js` para los de rayas y `src/camera.js`, que es cada línea de esta página que toca una cámara.
http:// a secas, un nombre en un alfabeto que no es el que parece, un acortador de enlaces, o cualquier cosa delante de una @ en la dirección: cada uno se nombra donde aparece. Ninguno demuestra nada por sí solo. Todos merecen diez segundos antes de ir. Cómo crear un código QR y demostrar que escanea Genera el código y verifícalo después con el lector del mismo sitio: la carga exacta, el enlace real, a tamaño de imprenta y desde una foto, antes de la tirada. Todo en el navegador, nada subido.
No, ni tampoco nada de lo que se lee en ella. La imagen se descodifica sobre un lienzo de esta página y se lee ahí, con JavaScript servido desde este sitio. Esta herramienta no tiene ninguna función de red — nunca descarga nada y nunca envía nada — y la Content-Security-Policy de la página nombra todas las direcciones que puede contactar, y ninguna es nuestra. La prueba más sencilla es desconectarte de internet: sigue funcionando.
No. Un fotograma llega como píxeles a esta pestaña, se dibuja sobre un lienzo, se examina y lo sobrescribe el siguiente una décima de segundo después. No se escribe nada en disco y no se guarda nada. El flujo se para en cuanto pulsas parar, cuando la pestaña pasa a segundo plano y cuando abandonas la página — y la luz de tu cámara es el indicador del que fiarte, porque ninguna página puede apagarla.
Porque esa es la parte útil. Un código QR es una dirección que no puedes leer, y por eso funciona una pegatina sobre el código de un parquímetro: cuando sabes adónde iba, ya estás allí. Aquí la cadena se imprime entera, el host se saca a su propia línea, y abrirlo es un botón aparte que pulsas después de leerlo. Es un clic de más, y es el clic que este formato ha necesitado siempre.
Códigos QR de todas las versiones, de la 1 a la 40, en los cuatro niveles de corrección de errores, en modo numérico, alfanumérico, de bytes y kanji, informando de los conjuntos de caracteres ECI y de los símbolos de un juego encadenado en lugar de descartarlos en silencio. Del lado de las rayas: EAN-13, EAN-8, UPC-A, UPC-E, ITF-14, Interleaved 2 of 5, Code 128 y Code 39. No lee Data Matrix, PDF417, Aztec ni MaxiCode.
Nueve de cada diez veces es una de tres cosas. El margen blanco está recortado, y un lector lo usa para saber dónde acaba el símbolo. Hay un reflejo o una sombra sobre parte del código, así que ningún umbral separa los cuadros oscuros de los claros. O el código es tan pequeño en el encuadre que sus módulos no llegan a dos píxeles. Cambia la luz, llena más o menos la mitad del encuadre y haz la foto de frente y no de lado.
A veces. Reed-Solomon restaura palabras de código dañadas dentro de la capacidad del símbolo. El 30 % aproximado de H se refiere al total de palabras de código, no a módulos arbitrarios ni a superficie; dañar los patrones de posición puede impedir la detección. El contador del resultado muestra las reparaciones realizadas. DENSO explica los niveles.
bit.ly? Porque averiguarlo sería preguntarle a bit.ly, y eso es una petición de red. Todo lo demás que afirma esta página se apoya en que aquí no hay código que contacte con nada, y hacer una excepción a la callada valdría menos que la respuesta. Así que se nombra el acortador y lo que esconde se deja honestamente sin saber. Si quieres resolverlo, pégalo en algo que sí esté dispuesto a preguntar.
Escanearlo es seguro. Hacerle caso es el riesgo, y es real: los códigos pegados encima del bueno en parquímetros, en mesas de restaurante y en avisos de paquetería son ya bastante comunes como para tener nombre. Lo que los hace funcionar es que nadie puede leer un código mirándolo. Leerlo sin abrirlo — que es lo que hace esta página — elimina esa ventaja por completo, y los diez segundos que cuesta mirar el host son toda la defensa.
Los módulos que esta página muestreó de verdad en tu imagen, redibujados a un cuadrado por módulo. Está ahí para que la lectura se pueda comprobar con la vista en lugar de creérsela: si esa cuadrícula se parece al código que fotografiaste, la respuesta de arriba salió de los píxeles correctos. Casi ningún lector te enseña esto, y es la diferencia entre una herramienta que puedes comprobar y una que tienes que creer.
Uno por imagen, de momento. Suelta varias imágenes a la vez y cada una se lee por su cuenta, y la cámara va leyendo código tras código mientras la mueves, quedándose con cada uno nuevo que no haya visto ya. Una sola fotografía con una hoja llena de códigos es un trabajo para recortarla, o para apuntar la cámara a uno cada vez.
Porque un código de barras no lleva su propio nombre encima. UPC-A es un EAN-13 cuyo primer dígito es un cero, ITF-14 es Interleaved 2 of 5 con catorce dígitos y un dígito de control válido, y Code 128 en su modo numérico no se parece a nada más. Lo que informa esta página es lo que dicen las barras más lo que confirma el dígito de control, que es todo lo que el propio símbolo sabe.
Sí. Carga la página una vez, desconéctate de internet y sigue funcionando, cámara incluida. Es también la forma más sencilla de probar que no se sube nada: un lector que enviara tu imagen fuera para descodificarla se pararía en el momento en que desenchufas.
¿Te ha servido?
¿Qué ha fallado?
Gracias — nos sirve.
Solo se envía la respuesta, y solo cuando pulsas un botón. Nunca tu archivo, ni su nombre, ni nada sobre él.