Los códigos QR (QR Code o Quick Response Code en inglés) son un tipo de código en 2 dimensiones (una matriz) que se desarrolló en Japón en 1994 por Denso Wave para la industria automovilística. La idea principal era tener un código capaz de almacenar más información que un código de barras convencional y que, al mismo tiempo, se pudiera imprimir en espacios pequeños (por ejemplo, una pieza del motor) sin dificultar su interpretación.
Algunos de los usos que actualmente se le están dando a los códigos QR son la codificación de:
- Texto
- URL
- Teléfono
- Mensaje SMS
- Datos de contacto (vCard o MECARD)
- Posición GPS
- Evento de calendario
- Dirección de correo electrónico
- Red WiFi
La estructura fundamental de un código QR (habitualmente de color negro sobre fondo blanco y una zona libre alrededor para facilitar la lectura) se puede dividir en 5 zonas diferenciadas que contienen la siguiente información:
- Versión de código usada
- Formato
- Datos y claves de corrección de errores
- Patrones obligatorios (posición, alineado, timing)
- Zona libre
Las ventajas principales del código QR respecto a los códigos de barra convencionales son las siguientes:
- Gran capacidad de información (un código de barras puede almacenar unos 20 dígitos mientras que un código QR puede almacenar hasta varios cientos de veces más información)
- Tamaño de impresión pequeño (al tener información tanto en vertical como en horizontal se puede codificar la misma información en la décima parte de un código de barras tradicional)
- Codificación de caracteres en Kanji y Kana (JIS Level 1 y Level 2; 1 carácter Kanji o Kana se puede codificar en 13 bits)
- Resistente a daños y suciedad (al llevar claves de corrección de errores se puede recuperar hasta un 30% de bytes según el daño que haya sufrido el código)
- Legible desde cualquier dirección en 360º (gracias a los patrones de detección de dirección situados en 3 de las esquinas del código)
- Concatenación del código (un código QR se puede dividir en códigos QR más pequeños que, al concatenarlos, contienen la misma información que el código original)
Aunque el código QR es un estándar ISO (ISO/IEC18004), su uso no está sujeto a ningún tipo de licencia ya que Denso Wave liberó la especificación del mismo y no ejerce sus derechos de patente. Por este motivo, en la web se pueden encontrar múltiples generadores de códigos QR (habitualmente gratuitos aunque también hay servicios de pago más especializados que permiten almacenar y gestionar los códigos generados, realizar el seguimiento de su uso, incluir personalizaciones, etc.) y librerías (API) para que nosotros mismos podamos realizar una aplicación que sea capaz de generarlos y/o leerlos.
Algunos de los generadores de códigos QR más conocidos son los siguientes:
- goQR.me (Gratuito/Comercial). Perrmite codificar Texto, URL, Teléfono, SMS y vCard mediante la API de QRServer. El resultado se puede descargar en formato PNG o incrustar en una página web. Se puede seleccionar el nivel de corrección de errores, los colores de los módulos y el fondo, el tamaño de la imagen resultante en píxeles y la zona libre alrededor del código
- ZXing (Gratuito). Permite codificar Evento de Calendario, vCard/MECARD, Email, Posición GPS, Teléfono, SMS, Texto, URL y Red WiFi. El resultado se puede descargar en formato PNG o incrustar en una página web. Únicamente se puede seleccionar el nivel de corrección de errores y tres tamaños fijos de la imagen resultante (small, medium, large). A destacar que el tamaño de la zona libre alrededor del código generado es mayor de lo estrictamente necesario
- Delivr (Gratuito/Comercial). Permite codificar URL, Servicios (Android Market, Facebook, iPhone App Store, Twitter, YouTube, etc.), MECARD, Email, SMS, Texto y otros. Se puede seleccionar el nivel de corrección de errores, el tamaño del márgen (0-10 módulos), el tamaño de la imagen (1x-4x) y el color del código. El resultado se puede descargar en formato PNG, EPS y SVG
Algunas de las librerías y API que permiten trabajar con códigos QR son las siguientes:
- API de QRServer: API usada por goQR.me
- API de Google (abandonada desde abril de 2012)
- ZXing: Librería Java para gestionar múltiples códigos 1D/2D incluyendo códigos QR
- QrCode.Net: Librería .Net para gestionar códigos QR
A la hora de trabajar con un código QR se tiene que tener en cuenta los siguientes factores:
- Tamaño del símbolo (desde 21 x 21 hasta 177 x 177 módulos en incrementos de 4 módulos por lado)
- Tipo y cantidad de datos (numérico, alfanumérico, binario y Kanji)
- Nivel de corrección de errores (Low = 7% de bytes recuperados, Medium = 15%, Quality = 25% y High = 30%)
- Concatenación (máximo 16 símbolos para imprimir en un área estrecha)
Dada una versión de código QR, un cierto nivel de corrección de errores y el tipo de información a codificar, queda establecida la capacidad máxima de información que el código QR puede contener. Esto es importante tenerlo en cuenta porque se trata de una limitación a la hora de leer los códigos mediante un teléfono móvil ya que éstos, a diferencia de un escáner industrial, no pueden leer todas las versiones de códigos QR existentes.
De la misma manera, el tamaño de impresión de una versión de código QR (que equivale a X módulos como se ha comentado anteriormente) dependerá del tamaño en milímetros de cada módulo. Como es de suponer, cuanto más grande sea el tamaño del módulo más fácil será su lectura. Por tanto, a la hora de imprimirlo se usará el tamaño de módulo más grande que permita el área de impresión dejando, como mínimo, un espacio equivalente a 4 módulos alrededor del mismo (zona libre).
En Delivr se dan algunas recomendaciones a la hora de imprimir los códigos QR para que se puedan leer por el máximo número de modelos de teléfonos móviles:
- 32 x 32 mm, sin incluir la zona libre, es el mínimo tamaño que garantiza que todos los teléfonos con cámara del mercado puedan leer correctamente el código QR
- 26 x 26 mm, sin incluir la zona libre, cubre el 90% de los teléfonos del mercado
- Los últimos modelos de teléfono con capacidades macro pueden tratar códigos QR más pequeños que 10mm (p.ej. iPhone 4) pero los teléfonos con cámaras de 2 Mpx sin autofocus no
- El contraste entre el fondo y el color de los módulos es importante (tiene que ser un color oscuro sobre fondo claro y, mejor aún, negro sobre blanco)
- 37,5 cm x 37,5 cm es una buena medida para cartelería ya que la mayoría de lectores de códigos QR los pueden leer a una distancia comprendida entre 1,5m y 5,5m
Hay que destacar que la aplicación que se use para leer el código QR juega un papel muy importante en el proceso de obtención de los datos codificados en el código. Esto es debido a que la lectura del código se realiza en dos pasos: a) la cámara de un teléfono móvil se utiliza para obtener una imagen del código y b) el software utiliza diferentes algoritmos para decidir que ciertos puntos de la imagen corresponden a módulos del código. Si los algoritmos son buenos, el programa podrá compensar la falta de nitidez provocada por una mala óptica de la cámara, nuestro pulso a la hora de sujetar el móvil, la falta de luz y contraste en la imagen y usar los datos de corrección de errores para obtener la información que se ha codificado. Algunos de los programas más populares a la hora de leer estos códigos son:
- Android: Barcode Scanner, QR Droid, QR Reader
- iOS: Barcode Reader
Finalmente, es importante comentar que en España también se usa otro tipo de código bidireccional llamado Bidi. Aunque su funcionalidad es similar, los códigos Bidi no son lo mismo que los códigos QR. A diferencia de los códigos QR, los códigos Bidi se generan mediante un algoritmo de código cerrado, privado y no gratuito de la empresa Scanlife. La compañía de telefonía móvil Movistar fue la primera en lanzar este sistema en el año 2008 para hacer publicidad de sus productos (aunque después se han apuntado otras compañías como Vodafone y Orange e incluso fabricantes de coches, bancos, marcas de ropa, etc.).
Aunque a primera vista no hay diferencia entre los dos tipos de código, se puede ver que los Bidi carecen de los 3 cuadrados de posicionamiento en las esquimas que tienen los QR. Por este motivo, los códigos Bidi sólo se leen con las cámaras y aplicaciones específicas de cada marca implantadas en sus propios dispositivos móviles (p.ej. BIDI para Android o para iOS ). Estas aplicaciones pueden no leer o leer parcialmente un código QR ya que están preparadas específicamente para los códigos Bidi. Por esta razón es recomendable comprobar que la aplicación instalada «de serie» en nuestro teléfono móvil sea compatible con los códigos QR.
Como se puede comprobar con una simple búsqueda en Google Images, existe mucha confusión entre los dos tipos de código y se ven códigos QR llamados Bidi y viceversa. Por ejemplo, en la presentación de los Presupuestos Generales del Estado 2012 se indicó inicialmente que el código usado era un Bidi cuando en realidad era un QR. A día de hoy, la página ya está corregida pero aún quedan trazas del gazapo en la URL de la página o en en la prensa.