Corpus de prueba público

Nuestras afirmaciones de compatibilidad de escáneres son tan buenas como la evidencia en la que se basan. Esta página es el corpus, las entradas con las que sometemos a prueba regresiva nuestras familias de codificadores, más el comportamiento de la cámara del teléfono que puedes auditar tú mismo sin creer en nuestra palabra.

Por qué existe esto: la mayoría de las herramientas QR publican una matriz de compatibilidad. La nuestra publica el corpus detrás de la matriz. Si eres responsable de una flota de escáneres, retail, almacén, farmacia, aerolínea, DMV, puedes ejecutar este corpus a través de tus propios lectores y verificar cada afirmación que hacemos.

Descargar corpus.zip JSON + CSV de fixtures + metodología + README. ~4 KB.

Cargando versión…

Cómo usar el corpus

Descarga los fixtures.

Cada vector de prueba está en /test-vectors/fixtures.json. Un objeto JSON por tipo con los campos de entrada y las subcadenas decodificadas esperadas. Obtenido en tiempo real desde este sitio, sin copias obsoletas.

Regenera los QRs.

Toma el mapa de fields de cualquier fixture, introduce los valores en el generador para ese tipo y pulsa Generar. El QR resultante es bit a bit idéntico al que nuestro CI procesa en ida y vuelta.

Escanea con tu propia flota.

Apunta una cámara iPhone, cámara Android, Google Lens, escáner industrial (Zebra, Honeywell, Datalogic) o lector específico de la app (app bancaria, autenticador) al QR generado. Confirma que el texto decodificado contiene cada subcadena expect de ese fixture.

Reporta discrepancias.

Si un escáner de tu flota devuelve una decodificación que no coincide con el fixture, abre un issue. Lo reproduciremos, añadiremos tu escáner a la matriz de compatibilidad pública y (si es un bug del codificador) enviaremos una corrección.

Resultados de escaneo esperados

Se renderiza desde el mismo conjunto de datos que la matriz de compatibilidad y la línea «Se escanea en» de cada página de tipo, así que las tres no pueden contradecirse. El archivo completo de fixtures en /test-vectors/ tiene 33 entradas, una por cada familia de codificadores que sometemos a prueba regresiva; no es una fila por cada tipo de producto, y no afirmamos que lo sea.

TipoEntrada del fixtureiPhone CameraAndroid CameraLector profesional
URLhttps://example.com/testAbre el enlaceA1Abre el enlaceA5DecodificaA8
WiFiWIFI:S:MyNet;T:WPA;P:...;;Se une a la redA1Se une a la redA5Decodifica el payloadA8
WiFi Enterprise (EAP)WPA2-EAP PEAP identity=alice@corpiOS 17+, reportadoUDecodifica; unirse depende del fabricanteUDecodifica el payloadQ
vCardFN=Alice ORG=Acme ...Añadir a ContactosA1Añadir a ContactosA5Decodifica el payloadA8
TOTPotpauth://totp/...?secret=JBSW...La app de autenticación lo leeA9, A10La app de autenticación lo leeA9, A10Decodifica el URIA8
eSIMLPA:1$rsp.example.com$K2-LM...iOS 17.4+ aprovisionaA4Android 13+ aprovisionaUDecodifica el URIQ
Bitcoin (BIP-21)bitcoin:1A1zP1eP...Abre la app de carteraQAbre la app de carteraQDecodifica el URIQ
SEPA (EPC)BCD header + name + IBAN + amountSolo cadena en brutoQSolo cadena en brutoQDecodifica la cadena en brutoQ
Swiss QR-billSPC header + IBAN + address + amountSolo cadena en brutoQSolo cadena en brutoQDecodifica la cadena en brutoQ
Micro QRCompact payloadSin decodificaciónV, USin decodificaciónGLectores industrialesZ
rMQRRectangular payloadSin decodificaciónUSin decodificaciónGFirmware más reciente de Zebra, Scandit y CognexZ
GS1 Digital Linkhttps://id.gs1.org/01/09506000134352Abre la URLQAbre la URLQEl firmware del TPV analiza los AIsQ
AztecArbitrary payloadSin decodificaciónA2Google Lens, algunas variantesA7NativoA8
Data MatrixArbitrary payloadSin decodificaciónA2Google LensA6NativoA8
PDF417AAMVA or arbitrarySin decodificaciónA2Google Lens, irregularA7NativoA8
AAMVA driver license@\n\x1e\rANSI 636014100002DL...iOS 17+, flujo compatible con licenciasA3Solo apps compatibles con licenciasUNativoA8
EAN-13 / UPC-A0012345678905Sin decodificaciónApGoogle LensGTodo TPV de retailA8
Code 128ABC-123Sin decodificaciónApGoogle LensGNativoA8

Cómo leer las marcas

Evidencia

Qué significa "resultado de escaneo esperado"

Notas de metodología

Registro de atestación de flota de escáneres

Cada ejecución manual en un dispositivo, fechada. Se añaden filas cuando adquirimos hardware o un usuario reporta una discrepancia; un resultado nunca cambia en silencio, recibe una fila nueva.

#DeviceOS / appCorpus sliceResultDateNotes
A1iPhone 15 ProiOS 18.3, native CameraAll QR fixturespass2026-04-10
A2iPhone 15 ProiOS 18.3, native CameraAztec, PDF417, Data Matrixfail2026-04-10Ninguno decodifica de forma nativa (esperado, ver /standards/non-qr-2d/)
A3iPhone 15 ProiOS 18.3, native CameraAAMVA PDF417partial2026-04-10El flujo compatible con licencias de iOS 17+ ofrece Añadir a Wallet; no devuelve el PDF417 en bruto
A4iPhone 15 ProiOS 18.3, WalleteSIM LPApass2026-04-12El flujo de añadir eSIM se activa correctamente
A5Pixel 8Android 14, native CameraAll QR fixturespass2026-04-10
A6Pixel 8Android 14, Google LensData Matrixpass2026-04-10
A7Pixel 8Android 14, Google LensAztec, PDF417partial2026-04-10Algunas variantes decodifican; el soporte es irregular
A8Zebra DS8100firmware CAAACS00-002-R06All 2D + 1D fixturespass2026-04-11Lector de imagen industrial, referencia canónica
A9Google Authenticatorv7.0+ (iOS/Android)TOTP, HOTPpass2026-04-12Solo SHA-1, 6 dígitos (ignora los parámetros algorithm/digits según el perfil de facto de Google)
A101Passwordv8 (iOS/Android/macOS)TOTP, HOTPpass2026-04-12Soporte completo del RFC, incl. SHA-256, SHA-512, 8 dígitos

Próximamente

Ver también

Corpus probado por última vez en regresión el 2026-04-18. Dispositivos de escáner verificados: iPhone 15 Pro / iOS 18.3, Pixel 8 / Android 14, Zebra DS8100.