Os códigos

Con todo o tema da pandemia os códigos QR están cada vez máis presentes na vida diaria. Dende as cartas “contact-less” ata os certificados de vacinación, cada vez é mais necesario saber manexarse con esta tecnoloxía. En realidade, o uso que se lle da agora mesmo é bastante simple xa que só se usan como unha especie de acurtadores de direccións URL. Nos dous exemplos anteriores, tanto nas cartas dos locais como nos certificados de vacinación, o contido dos códigos QR é unha simple dirección electrónica, unha URL. Porén, os códigos QR poden conter moita máis información. O maior cantidade de datos que se pode colocar nestes códigos é 2953 bytes, algo que dá para moito máis que unha ligazón.

Desta forma, empecei a darlle voltas a que se podería meter en realidade nun destes códigos. Obviamente, non fun ao primeiro ao que se lle ocorreu, nin serei o último. Quizais o exemplo que máis me chamou a atención foi este no cal se introduciu un xogo completo (aínda que moi básico) nun QR, sen ningún tipo de trampa. O bo dos executables e que se poden facer moi moi pequenos, pero cos datos en “cru” non pasa o mesmo.

Perspectiva

2953 bytes pode parecer moito, pero non o é. Practicamente calquera arquivo que teñas no móbil ou no ordenador ocupa máis ca iso. De feito este texto ata o punto onde agora les, codificado, e sen datos extra (nin css nin nada) xa case ocupa iso. Desta forma pódese ver que os códigos QR aínda que cómodos non son un medio para transmitir gran cantidade de información senón para actuar como intermediarios. Isto vese claro se observamos a especificación dos códigos, xa que ofrecen diversos niveis de redundancia. Isto permite, ata certo punto, a corrección de erros. Desta forma, se unha parte do código falta, esta mal impresa ou calquera cousa, o contido segue sendo accesible.

Que se pode meter nun QR?

Pois aparte do común, URLs, algo amplamente soportado é texto. A pesar disto, o tamaño de texto que se pode meter non é moi grande. Pode ser aceptable por exemplo para texto pequeno do estilo de poemas, cancións ou relatos curtos. Aquí un exemplo coa letra de Around the World de Daft Punk.

A letra de Around the World de Daft Punk

Compresión

Moitos dos datos cos que tratamos a diario pódense comprimir aínda que moitas veces non é necesario ou é simplemente negativo. Por exemplo, estiven experimentado con compresión de audio (cancións) para que puideran coller nun código QR. Sobra dicir (xa solo polo que puxen antes) que foi un fracaso total, ou colles un fragmento desprezable (i.e. < 1 segundo) ou o comprimes ata que non sona a nada. Porén o texto, é máis fácil de comprimir. Por exemplo, o libro de Rosalía, Cantares Gallegos, ocupa aproximadamente en formato PDF uns 670KB. Isto baixa ata 115KB se o convertemos a .txt, texto plano. Este arquivo pódese comprimir máis, ata uns 35KB se empregamos a compresión bzip2. Aínda así quedamos mooooi lonxe dos ~2KB que permite usar un QR e, no proceso, perdemos a capacidade de que un lector “normal” de códigos QR o poida ler.

Libros en QR

Se acabo de dicir que non colle nada nun QR, como vai coller un libro? Efectivamente, un libro non colle nun QR, pero en varios xa cambia o conto. Obviamente é un resultado menos chulo pero é curioso igual. Concretamente o libro de antes, Cantares Gallegos, colle en 36 códigos QR diferentes (optimizando ao máximo o espazo).

Cantares Gallegos de Rosalia de Castro

O malo deste códigos tan grandes e que poden ser dificiles de escanear, polo seu tamaño, pola resolución da pantalla/papel, etc. Isto xa se podia apreciar no da canción de Daft Punk de antes, aínda que sexa un só. É dicir, non é perfecto, pero tecnicamente a información está aí. Curiosamente o peso da imaxe anterior é de 232KB, algo mais do dobre que o arquivo de texto do que partimos, pero a pesar disto, é notablemente inferior ao do PDF orixinal (670KB). Así que tecnicamente estamos a comprimir a información. En realidade, a única compresión que realizamos e que se podería imprimir cantares enteiro nunha soa folla de papel. Sendo sinceiros, tamén se podería facer o mesmo con letra pequeniña!

Como?

Facer todo isto á man, paso a paso, é un traballo insufrible pero todo se pode automatizar. Para pasar os libros de pdf á txt pódese utilizar calquera conversor tanto online como local. A parte difícil é cortar os arquivos, xa en texto, no tamaño adecuado, codificalos e facer o collage final. Para todo isto creei un pequeno script de bash que permite facelo todo de golpe.

Outros exemplos

Con libros máis densos, os códigos QR dispárense de forma dramática. Por exemplo, Sempre en Galiza, en formato .txt pesa 1.1 Mb. Isto resulta nun total de 455!! códigos QR, o cal deixa a imaxe final nos 2.5Mb, máis do dobre.

Sempre en Galiza de Castelao

Non toda a prosa é tan “explosiva”, a Esmorga, resulta en tan “só” 57 códigos. Así, pasamos de 164 KB de texto a 370 de imaxe.

A Esmorga de Blanco Amor

Comprimir aínda máis?

Mentres que sería posible comprimir as imaxes cos códigos QR, eu creo que non é recomendable. Debido ao tamaño dos códigos que se manexan, xa pode resultar difícil escanealos perfectamente, xa que dependendo da pantalla/papel, do lector e do pulso de que nos lea poden dar errores ou lecturas incorrectas. Comprimir as imaxes só aumentaría estes ratios e, ademais, podería acabar levando a que se perdera información, xa que cambiar un pixel de negro a branco podería resultar nun código QR ilexible.