# Codi QR

El codi QR (sigla provinent de l'anglès Quick Response, és a dir resposta ràpida) és un sistema per a emmagatzemar informació que consta d'una matriu de punts quadrada destinada a ser llegida per un dispositiu intel·ligent, sovint un telèfon mòbil.
El codi QR és una evolució del codi de barres cap a dues dimensions (2D), comparable amb altres codis 2D, com Data Matrix i Aztec Code (quadrats), PDF417 (rectangles) o MaxiCode (hexàgons).
Un codi QR pot contenir dades de qualsevol format informàtic que càpiguen al seu espai. Molts codis QR contenen adreces web (URL). Altres exemples d'ús són sistemes de pagament, bitllets d'entrada o certificats administratius.
Un codi QR pot recuperar dades danyades, fins a un cert grau.

## Origen

El codi QR va ser inventat al Japó per a controlar processos de producció en la indústria automotriu. La patent japonesa és de l'any 1994, presentada per les empreses Denso i Toyota amb noms de 5 inventors. La patent europea és del 1995, presentada per Denso amb els mateixos 5 inventors. Com a primer inventor sempre figura Masahiro Hara. És el protagonista de l'invent segons Densowave, l'empresa propietària de la marca QR Code.

## Funcionament

A diferència de codis de barres anteriors, dissenyats per ser mecànicament escanejat per un estret feix de llum, el codi QR està dissenyat per ser captat amb una càmera. Les tres peces distintives a les cantonades permeten detectar ràpidament el codi dins de la imatge. Els punts petits es converteixen en bits informàtics de dades o de codi de correcció d'errors. Un processador els interpreta i els converteix en informació.

## Lectors de codis QR

Excepte en certs contexts professionals, els codis QR se solen llegir amb un smartphone o una tauleta tàctil. El programari per a interpretar els codis QR pot estar inclòs en el sistema operatiu. En tot cas es poden descarregar aplicacions lectors de codis QR. Poden incloure lectors de més tipus de codis de matriu i de codis de barres.
Punts a considerar sobre la qualitat d'un lector de codis QR:
* la integració amb altres aplicacions, per exemple si s'activa automàticament amb la càmera o si es pot abrir des del visualitzador de fotos o del navegador;
* la capacitat de processament d'imatge, per a extraure el codi del seu entorn i reconèixer la graella d'elements clars i foscos;
* el procediment per a reconstruir informació de codis danyats;
* el procediment per a interpretar caràcters inusuals, per exemple en "Zürich" que algun lector llegeix com a "Z黵ich";
* els mecanismes de seguretat.
La seguretat és rellevant en relació amb els codis QR que contenen adreces web. La usuaria ha de poder veure l'adreça i dar el seu consentiment (amb un clic), abans que el lector carregui res del contingut de la pàgina.
Quant a la reconstrucció de codis danyats, hi pot haver danys en les pautes fixes (com les tres pautes de posició), en la informació de format o en la zona principal que conté les dades (junts amb els seus codis de correcció). Als errors en la informació de format, no tots els lectors reaccionen igual de bé. La imatge permet comprovar-ho.
* Codi QR on falten mòduls negres en tres tipus de zones. Hi ha lectors que ho saben llegir i d'altres que no, fins que no s'afegeixin dos mòduls negres per a la correcció d'errors de la informació de format: en la 9a fila de dalt, en la 7a i 1a columna de la dreta

## Aplicacions

Un codi QR és un mitjà que porta un missatge. No és factible enumerar totes les seves aplicacions, com tampoc ho seria per les aplicacions d'un missatge SMS o d'un tauler d'anuncis.

### Ús històric i actual

Inicialment els codis QR es van fer servir per a registrar reposicions en l'àrea de fabricació de vehicles. D'ahí s'han extés a altres usos industrials.
La inclusió de programari que llegeix codis QR en els telèfons mòbils ha permès nous usos orientats al consumidor.
L'any 2010, els codis QR per a adreces web encara eren una opció entre d'altres. Per exemple, en 21 pàgines d'una publicació japonesa hi ha 23 adreces web impreses com a text, però només 4 codis QR.
Durant els anys 2010, els codis QR esdevingueren un mitjà de pagament quotidià, almenys a la Xina.
A l'inici dels anys 2020, els codis QR són una manera habitual d'imprimir adreces web. Amb la pandèmia de COVID-19, s'han introduït passos sanitaris amb codis QR.

### Ús comercial

Els codis QR amb adreces web són els més comuns en la vida quotidiana. L'adreça web final que es vol mostrar a la clienta pot estar codificada literalment al codi QR, o el codi QR pot contenir una adressa intermèdia que redirigeix a l'adreça final. La redirecció permet l'ús d'adreces abreuades en el codi QR i la redirecció pot ser canviada cap a una adreça final nova sense que calgui canviar el codi QR. Aquesta opció és comercialitzada com a "codi QR dinàmic", però el codi QR en si és estàtic.
Per a targetes de visita es poden usar codis QR amb dades de contacte, per exemple en format vCard. A diferència de les adreces web, que solen estar escrit en un format que evita lletres especials (fora dels 26 lletres d'A a Z), amb les targetes de presentació pot ser important d'escriure el codi QR de tal manera que qualsevol programa lector interpreti correctament els caràcters menys comuns, per exemple Quintí Roßmann, 豊田市.
Els codis QR també són utilitzats en controls d'accés, per exemple a recintes esportius o culturals, i per a bitllets de transport.

### Facturar i pagar

A Europa l'any 2012, el European Payments Council ha introduït un estàndard de pagament amb codi QR. Almenys cinc països s'hi van apuntar.
A la Xina, durant els anys 2010 el pagament amb codi QR va créixer molt, amb aplicacions com Ali Pay i WeChat Pay, i ja es podia veure tot arreu al carrer.
Més recentment a Europa, una normativa fiscal a Portugal anunciava l'introducció obligatòria de codis QR en factures a partir de l'1 de gener 2021, que finalment es va posposar a l'1 de gener 2022. A Suïssa, amb la introducció del Swiss QR-bill els formularis bancaris de pagament en papel seran obsolets el 30 de setembre 2022.

### Ús administratiu

A l'Unió Europea, l'ús administratiu de codis QR s'havia massificat amb els certificats mèdics per la Pandèmia de COVID-19 a l'inici dels anys 2020: per a viatges internacionals, sobre tot amb avió; segons el país, fins i tot pel accés a locals comercials no essencials.

### Ús artístic

Ja l'any 2007, els codis QR són un element principal d'un vídeo musical per a Integral, una cançó orwelliana de l'excitosa banda Pet Shop Boys.
Per l'any 2008 hi ha mencions d'obres d' art urbà amb codis QR. Però aquestes obres primerenques són escassament documentades (per exemple, a Espanya, de La Pluma Eléctri*k amb contingut "no entiendo nada") o en realitat no són codis QR (ceràmiques Data Matrix d' Invader a Varanasi i Brussel·les).
Els codis QR en l'art urbà permeten connectar l'art mural amb altres mitjans artístics, per exemple amb música en una adreça web escrita al codi QR (QRadio de Sweza, Berlin 2011). També poden servir per a reproduir virtualment obres d'art urbà desaparegudes (Graffyard de Sweza, Berlin 2012) o per a fer una donació a l'artista (Pascal "PBOY" Boyard, Paris 2018).
En galeries i museus d'art, es poden trobar codis QR al costat de les obres artístiques, per a enllaçar informació sobre elles, per exemple en forma d'audioguia. En quant a codis QR dins de l'obra d'art mateixa, fa molts anys que s'usen (Douglas Coupland, 2012) i segueixen estant presents en creacions més recents (Massimo Rossetti, 2020).

## Riscos

Codis QR poden contenir adreces web (URI) fraudulents.
Des del punt de vista tècnic, el risc és el mateix que pel mateix contingut fraudulent en altres mitjans. Però des del punt de vista de la usuària, no és el mateix, per exemple, rebre un email "Important social security information" amb un enllaç "passportlab.xyz", que trobar-se un codi QR amb aquesta adreça en un parquímetre on està buscant una manera de pagar pel estacionament del vehicle. Pel ull humà, el codi QR és només un caos de píxels, sense indicis coneguts que ens facin sospitar a primera vista. Cal un process d'aprenentatge per a inteoritzar que un codi QR pot ser fraudulent. En quant a lectors de codis QR, és important que no obrin adreces web automàticament, sinó que només les mostrin i esperin un clic per a obrir-les.

## Especificacions tècniques
### Normes

L'estàndard japonès per als codis QR, JIS X 0510, ha estat publicat el 1999. Després s'ha fet una norma internacional ISO. Té tres edicions: ISO/IEC 18004:2000, ISO/IEC 18004:2006 i ISO/IEC 18004:2015.
El codi QR és codi obert i els seus drets de patent (propietat de Denso Wave) no són exercits.

### Terminologia

S'anomena mòdul cadascú dels quadradets que codifiquen les dades d'un codi QR. Aquest nom per la unitat gràfica d'informació mínima té el seu origen en els codis de barres, precursors del codi QR.
Amb els codis QR, la paraula versió no es refereix a un històrial d' actualitzacions, sinó a codis amb mides diferents. N'hi ha 40:
versió 1 amb 21×21 mòduls,
versió 2 amb 25×25 mòduls,
versió 3 amb 29×29 mòduls
(... +4 mòduls ...)
versió 40 amb 177×177 mòduls
La versió no és sinònim de mida, perquè cada versió requereix unes especificacions tècniques pròpies: amb el pas a una versió major, no només hi ha un increment en el nombre de mòduls, sinó també poden canviar altres paràmetres.

### Modes de codificació

El contingut del codi QR es pot codificar de quatre maneres:
* mode numèric — permet només digits, 0123456789
* mode alfanumèric — permet 45 caràcters diferents: les 26 lletres majúscules de A a Z, els 10 digits de 0 a 9, l'espai i els 8 símbols $ % * + – . / :
* mode binari — permet qualsevol contingut
* mode kanji — en aquest mode les lletres japoneses kanji ocupen menys mòduls que en mode binari. Però aquest mode no s'usa en cap dels tres llocs webs japonesos amb generadors de codis QR consultats per a la revisió d'aquest article l'any 2022. Només s'usa en un quart generador consultat, que forma part d'una aplicació de lector QR.
Els modes numèric i alfanumèric són més compactes que el mode binari. Per exemple, el codi QR de versió 1 i nivell de correcció "M" en la foto del bitllet de cremallera pot contenir números fins a 34 digits en mode numèric, però només podria contenir 20 digits en mode alfanumèric o 14 digits en mode binari.
El text codificat es pot dividir en seccions amb modes diferents. Per exemple, un generador de codis QR codifica el text
en una secció amb capçalera "binari, llargada 29" seguida d'una altra secció amb capçalera "alfanumèric, llargada 7".

### Nivells de correcció d'errors

La correcció d'errors permet restaurar les dades d'una part danyada del codi o pot ser aprofitat per a tapar una part de les dades amb una imatge. Matemàticament fa servir un algorisme Reed-Solomon. Existeixen quatre nivells de correcció d'errors.
| Nivell de codificació | Percentatge de dades que es poden restaurar |
| L (low) | 7% |
| M (medium) | 15% |
| Q (quartile) | 25% |
| H (high) | 30% |

### Capacitat de dades

El codi QR màxim, versió 40, té 177×177 ≈ 30mil mòduls. Una petita part d'aquests mòduls són per a estructures fixes i informacions estructurals. Una part més gran són per a la zona de correcció d'errors. La mida d'aquesta part depèn del nivell de correcció d'errors. La part restant, majoritària, queda per a la codificació pròpia de les dades. Amb el nivell de correcció d'errors més baix, "L", la capacitat màxima dels diferents modes és:
* Binari, 2.953 bytes ≈ 24mil bits
* Alfanumèric, 4.296 caràcters
* Numèric, 7.089 digits
* Kanji, 1.817 caràcters

## Exemples de codis QR
### Mostres de diferents versions

* Versió 1 (21×21), nivell "H". Contingut: "Ver1"
* Versió 2 (25×25), nivell "H". Contingut: "Version 2"
* Versió 3 (29×29), nivell "H". Contingut: "Version 3 QR code"
* Versió 10 (57×57), nivell "L". Contingut experimental "fw3DUUUUUUUU(...)UUUUUUUU" de 270 caràcters. Es veu l'àrea de dades amb el text repetitiu a la dreta, l'àrea de correcció d'errors a l'esquerra i la informació de versió. L'inici no repetitiu de les dades (capçalera tècnica + "fw3D") és visible com a 3 distorsions al primer parell de columnes a la dreta i 3 distorsions més al parell de columnes següent. Comptant grups de 2×4 mòduls, es pot percebre l'entrellaçament del primer bloc (capçalera+"fw3D"+"UUU...") amb 3 altres blocs ("...UUU...").
* Versió 40 (177×177), nivell "H". Conté un text de 1.264 caràcters. Vegi explicació.
Totes les cinc mostres de la galeria d'imatges són en mode binari. El contingut de la mostra de versió 40 parla del màxim de lletres en mode alfanumèric amb nivell "L", no del seu màxim propi.

### Certificat Covid digital de la Unió Europea

El codi QR fictici a la imatge és de 73×73 mòduls (versió 14), té el nivell de correcció d'errors "L" i conté lletres minúscules.
En un codi real arbitrari de l'any 2022 es veu la mateixa versió 14 (73×73 mòduls), però amb nivell d'errors "M" i amb mode de codificació alfanumèric. El text codificat està format només per lletres majúscules, digits i alguns dels símbols permesos en el mode QR alfanumèric, és a dir alguns de $ % * + – . / : i espai.
Amb la codificació QR alfanumèrica, cada caràcter ocupa només 5,5 bits, perquè usa grups de 11 bits per a cada grup de 2 caràcters entre 45 caràcters permesos. 45×45=2025 possibles combinacions ocupen quasi tota l'amplada de banda de 11 bits, 2^11=2048.

### Codi QR "Spain Travel Health"

En un codi real arbitrari de l'any 2022 es compten 61×61 mòduls (versió 11) i s'identifica el nivell d'errors "L" i el mode de codificació binari. El text codificat està format només pels símbols usades típicament en codificacions Base64 (26 majúscules, 26 minúscules, 10 digits, "+", "/") i "-", o sigui 65 caràcters diferents.
Amb el mode QR binari, cada caràcter ocupa 8 bits. 65 caràcters possibles, ≈2^6, aprofiten només uns ¾ de l'amplada de banda de 8 bits, 2^8=256.

### Generadors QR en línia - Exemples propis

Al web hi ha moltes pàgines amb generadors QR en línia. Es poden usar per a generar codis QR per a usos pràctics. També es poden usar per a fer experiments que ajuden a entendre els codis QR.
Alguns generadors només permeten certs formats de dades, com ara adreces web o targetes de visita. Per a crear exemples experimentals és convenient usar un generador que permeti l'entrada directa d'un text qualsevol.
Alguns generadors en línia permeten triar el nivell de correcció d'errors. Si no, utilitzen un nivell fix — per exemple el "L", que dona els codis més petits. Per a trobar la màscara òptima (vegi a sota, descodificació, pas 1), diferents generadors usen algorismes amb resultats diferents. Algun generador salta aquest pas i posa sempre la mateixa màscara. Això en principi pot dificultar la captura ràpida del codi amb una càmera.
La codificació d'escriptura japonesa pot ser més compacta en generadors japonesos.
Un experiment que es pot fer, és entrar texts cada vegada més llargs i observar com el codi QR creix en salts de 4 mòduls. O entrar un text de moltíssimes lletres "w" minúscules repetides (sense espais) i veure la diferència entre la zona de dades a la dreta i la zona de correcció d'errors a l'esquerra.

### Adreces web (URL)

En l'aplicació mòbil "Viquipèdia", des de la página inicial, l'opció "comparteix" (i després "copia al porta-retalls") dona aquest URL:
https://ca.wikipedia.org/wiki/Portada?wprov=sfla1
Un cert generador de codis QR en línia, que sempre posa el nivell de correcció d'errors "L", converteix aquest URL en un codi QR de versió 3 (29×29 mòduls). Si reduïm l'URL a la seva part essencial, sense el paràmetre final, l'URL mena al mateix lloc web que l'URL anterior:
https://ca.wikipedia.org/wiki/Portada
Aquest URL genera un codi QR de versió 3 igualment. Fer més curta un URL, no sempre resulta en un codi QR més petit. Això és degut al fet que la mida d'un codi QR només pot canviar en salts de 4. Tallar algunes lletres no sempre és suficient pel salt cap a una versió menor.
Dins del domini de la Viquipèdia en català, la portada és la página que surt per defecte. Per tant, arribem a la mateixa pàgina si reduïm l'URL a
https://ca.wikipedia.org
Aquest URL genera un codi QR de versió 2 (25×25 mòduls), més petit.
El mateix URL escrit tot en majúscules genera un codi QR més petit encara, de versió 1 (19×19 mòduls), perquè un contingut sense minúscules es pot codificar en mode alfanumèric, més compacte que el mode binari necessari pels exemples anteriors. Encara que aquest codi QR en majúscules funcioni (perquè es tracta de l'URL d'un domini), escriure un URL tot en majúscules no és bona pràctica.

## Llegir un codi QR (Descodificació)

* Zones d'un codi QR. Representació exacta. Pautes d'alineació (4.2) a partir de versió 2, info de versió (1) a partir de versió 7.
* Informació de format: nivell de correcció d'errors i màscara. Les màscares comencen matemàticament a dalt a l'esquerra, amb el mòdul de primera columna i fila, que en les fórmules seria columna 0 i fila 0. La màscara amb codi 001 es repeteix cada 6 columnes i cada 4 files. Les altres cada 6 columnes i files.
* Ordenació dels mòduls de manera bustrofedon
* 2 blocs entrellaçats en un codi QR de versió 3 amb correcció d'errors "H". En un codi QR hi pot haver d'un bloc sol fins a 81 blocs entrellaçades. El nombre depèn de la versió i el nivell de correcció d'errors.

### Passos

La lectura d'un codi QR es fa en una sèrie de passos.
* En la imatge capturada per la càmera, extraure el codi QR del seu entorn i transformar-lo en una graella plana, quadrada i girada a una orientació estàndard. Per això serveixen les estructures fixes del QR, per exemple aquelles a tres de les quatre cantonades.
* Obtenir la versió. S'obté comptant els mòduls i a partir de la versió 7 està codificada en zones no emmascarades del codi QR. De la versió depèn el nombre i les posicions exactes de les pautes d'alineació.
* Obtenir el nivell de correcció d'errors. Junt amb la versió, defineix en quants blocs entrellaçades, i de quina llargada, estàn distribuïdes les dades i la informació de correcció d'errors.
* Obtenir la màscara. Defineix en quins mòduls s'han de invertir els colors.
* Obtenir el nombre i les llargades dels blocs de dades entrellaçades. Per exemple, per a la versió 10 amb nivell "L" són 4 blocs en grups de 8 mòduls (bytes) amb 68 bytes als 2 primers blocs i 69 als últims. La cadena de dades comença amb 8 mòduls (1 a 8), salta 24 mòduls (dels altres 3 blocs), continua amb 8 mòduls (33 a 40), en salta uns altres 24, etc. fins al final del primer bloc. Llavors continua amb el segon bloc: mòduls 9 a 16, mòduls 41 a 48, etc.
* Interpretar la primera capçalera (i eventualment uns indicadors de format especials que la precedeixen). Comença amb el mode de codificació: numèric (0001), alfanumèric (0010), binari (0100) o kanji (1000).
* Interpretar el camp de llargada. Aquest camp de la capçalera indica quants caràcters o bytes hi ha fins al final del text (o fins a la capçalera següent). El camp de llargada té entre 8 i 16 mòduls en funció de la versió i el mode de codificació.
* Descodificar el text. En mode numèric, es divideix en grups de 10 mòduls que codifiquen grups de 3 digits. En mode alfanumèric, es divideix en grups de 11 mòduls que codifiquen grups de 2 caràcters. En mode kanji, es divideix en grups de 13 mòduls que codifiquen 1 caràcter segons un estàndard japonès. En mode binari venen en grups de 8 mòduls (bytes), per exemple amb codificació UTF-8.
* Interpretar la zona de correcció d'errors.

### Colors i forma dels mòduls (pas 1)

La manera més comuna de dibuixar els mòduls d'un codi QR és 1 = quadrat negre, 0 = quadrat blanc. Es poden escollir altres colors i formes. No és necessari que els mòduls omplin completament la seva cel·la de la matriu quadrada. Això permet, per exemple, mòduls en forma de cercle o de cor. És possible invertir els colors de tot el codi QR, 1 = clar, 0 = fosc. Ni tots els mòduls foscos ni tots els clars han de ser necessàriament tots del mateix color.
Molts codis QR amb colors i formes alternatius segeixen objectius artístics i comercials no de tot compatibles amb els objectius tècnics de l'estàndard ISO per a generar un codi QR. Aquest estàndard conté un algorisme per a obtenir un equilibri entre el nombre de mòduls foscos i clars (vegi "Màscares i captura d'imatge") i conté instruccions per a medir que hagi prou contraste entre fosc i clar.

### Pautes fixes (pas 1)

La primera imatge d'aquesta secció il·lustra en blanc i negre tres tipus de pautes fixes:
* A tres cantonades hi ha pautes de posició (quadrats concèntrics de 7×7 mòduls) amb separadors blanc en forma de ele (8×8 mòduls en total).
* Dues pautes en línia "zebra", dites pautes de temporització.
* Pautes de 5×5 mòduls en forma de quadrats concèntrics, dites pautes d'alineació
A més, hi ha un "mòdul fosc" que sempre té el valor binari 1 i no té cap funció. És a baix a l'esquerra, sobre els 7 mòduls de format.
Les pautes de posició ajuden a trobar un codi QR dins d'una imatge. Fan que el codi sigui ràpid, tal com diu el seu nom Quick Response.
Les pautes de temporització ajuden a establir les coordenades físiques del mòduls.
Les pautes d'alineació apareixen a partir de la versió 2. Permeten avaluar la imatge del codi per parts. Els centres de les pautes d'alineació formen una quadrícula de 2×2 fins a 7×7 punts, si afegim un mòdul de cada de les 3 pautes de posició. Sempre són simètriques respecte a la mateixa diagonal que les pautes de posició. Les centres de les pautes d'alineació més a prop dels quatre costats del codi QR sempre en tenen la mateixa distància que les pautes de temporització. El nombre de pautes d'alineació creix amb les versions 7, 14, 21, 28 i 35, o sigui cada set versions. En aquelles versions on les pautes d'alineació formen quadrícules de 5×5 o 7×7, la pauta del mig no es troba exactament al centre en la majoria dels casos. Per exemple, la versió 21 (101×101 mòduls) té les pautes d'alineació en la 7a, 29a, 51a, 73a i 95a columna i fila, i la versió 22 (105×105 mòduls) en la 7a, 27a, 51a, 75a i 99a. Que hagi un retrocés, com entre aquestes versions de la posició 29 a la 27, no és un cas únic.

### Màscares i captura d'imatge (pas 1)

En el procés de generar un codi QR, després de calcular la codificació de les dades i de la correcció d'errors, s'ha de triar una màscara. Una màscara és una selecció de mòduls que inverteixen el seu color original (vegi pas 4). Per la zona de dades i correccions existeixen 8 màscares possibles. Tenen pautes repetitives, per exemple d'escaquer. Un algorisme comprova les efectes de cadascuna de les 8 màscares i escull aquella que obté el millor resultat segons una fórmula d'avaluació. Aquesta fórmula dona punts de penalització per a:
* pautes lineals 1011101, perquè es poden confondre amb una pauta de posició;
* massa mòduls junts del mateix color en una línia o en una àrea;
* el grau de desequilibri entre el nombre total de mòduls blancs i mòduls negres.
El motiu d'evitar aquests tres punts, és facilitar la ràpida captura òptica del codi QR. Però no hi ha l'opció de deixar el codi sense màscara.

### Informació de versió (pas 2)

Les 40 versions del codi QR tenen entre 21×21 i 177×177 mòduls. La versió N té 17+4×N mòduls al quadrat.
La informació explícita del nombre de la versió apareix a partir de la versió 7, vol dir a partir de les versions prou grans per a tenir les pautas d'alineació en una quadrícula 3×3. Ocupa dos blocs de 3×6 mòduls, simètriques respecte a la diagonal, indicades en la primera imatge d'aquesta secció.
En el bloc a dalt a la dreta, la direcció de lectura és de dreta a esquerra en cada fila i de baix a dalt. Els 6 mòduls de les dues files més a baix contenen el nombre de versió en format binari. Els altres 12 mòduls contenen la correcció d'errors per a aquests 6 mòduls.

### Informació de format (passos 3 i 4)

Les zones amb la informació de format estan colorades en vermell en diferents imatges d'aquest article. Inclouen mòduls a dalt a l'esquerra que formen una ele a la 9a fila i la 9a columna, al costat de la zona blanca de separació. Són 15 mòduls, saltant el mòdul inicial de cada línia de temporització. Es compten del marge esquerra (1r mòdul), passant per la diagonal (8é) fins al marge superior (15é). Aquests 15 mòduls tenen una copia partida entre 7 mòduls a baix a l'esquerra i 8 mòduls a dalt a la dreta. Els 15 mòduls contenen:
* mòdul 1 i 2 = codi del nivell de correcció d'errors;
* mòdul 3 a 5 = codi de màscara;
* 10 mòduls restants = correcció d'errors pels 5 mòduls d'informació.
Cada exemplar dels 15 mòduls d'informació de format porta la mateixa màscara fixa "101010000010010", vol dir "10" pel nivell de correcció i "101" pel codi de màscara.
Les taules mostren la informació de format, sense màscara ("cru") i amb màscara ("visible").
Codis de nivell de correcció d'errors :
| visible | cru | nivell |
| 11 | 01 | "L" low 7% |
| 10 | 00 | "M" medium 15%. |
| 01 | 11 | "Q" quartile 25% |
| 00 | 10 | "H" high 30% |
Codis de màscara :
| cru | visible | mascara | negre:blanc |
| 000 | 101 | alternant (1×1) | 1:1 |
| 001 | 100 | ratlles | 1:1 |
| 010 | 111 | columnes | 1:2 |
| 011 | 110 | diagonals | 1:2 |
| 100 | 001 | alternant 3×2 | 1:1 |
| 101 | 000 | complex, amb simetria diagonal | 15:21 |
| 110 | 011 | complex, amb simetria diagonal | 23:13 |
| 111 | 010 | complex, amb simetria diagonal | 1:1 |
Una imatge d'aquest article mostra les 8 màscares segons el seu codi visible. La taula les ordena segons el seu codi cru.
La màscara s'aplica a la zona de dades (capçaleres incloses) i de correcció d'errors, no a les pautes fixes ni a la informació de format o versió. La màscara es repeteix periòdicament, començant a la cantonada de dalt a l'esquerra. On la màscara té un mòdul negre, el mòdul original canvia de color. On té un mòdul blanc, no canvia.

### Correcció d'errors BCH (passos 2, 3 i 4)

La correcció d'errors per la informació de versió i la informació de format usa l'algorisme BCH (Bose–Chaudhuri–Hocquenghem), que és un control de redundància cíclica. En el cas de la informació de format, el polinomi generador és $g(x)=x^{10}+x^{8}+x^{5}+x^{4}+x^{2}+x+1$. En la Viquipèdia en anglès, s'explica exactament aquest cas en l'artice sobre codis BCH.
El programari per a escriure o llegir codis QR pot usar taules on es troben els codis BCH calculades per a tots els possibles valors de la informació de format i de versió.

### Ubicació de les dades (pas 5)

Els mòduls de dades es compten començant amb el mòdul situat a la cantonada de baix a la dreta. El compte segueix en un doble ziga-zaga per parells de columnes. Les columnes centrals de l'esquema següent mostren la numeració dels primers 26 mòduls de dades. En un codi QR de versió 1, la posició dels mòduls 25 i 26 d'aquest esquema ja estaria ocupat per informació de format. Per tant, els mòduls de dades 25 i 26 es trobarien en el pròxim parell de columnes a l'esquerra. La lectura dels mòduls de dades salta i esquiva les pautes geomètriques fixes i les informacions de format i versió. Les imatges d'aquest article indiquen com funciona això al detall.
Les columnes exteriors de l'esquema mostren la seqüència per a llegir els bytes i bits si les dades del QR estan distribuïdes en dos blocs entrellaçades. L1 és el nombre de bytes del primer bloc.
El nombre de blocs puja amb la versió del codi QR i amb el seu nivell de correcció d'errors. Amb el nivell "L", hi ha un sol bloc fins a la versió 5 i 25 blocs a la versió 40. Amb el nivell "H", hi ha un sol bloc fins a la versió 2 i 81 blocs a la versió 40. Cada bloc conté un nombre sencer de bytes. Si, per exemple, 274 bytes es divideixen entre 4 blocs, els 2 primers blocs tenen 68 bytes i els 2 blocs restants tenen 69 bytes. Sempre quan no sigui possible dividir en blocs de llargada igual, els últims blocs tenen 1 byte més que els altres.
Per a les 40 versions i 4 nivells de correcció d'errors, l'especificació tècnica del codi QR conté una taula de 40×4=160 línies que indica el nombre i les llargadues dels blocs de dades i dels blocs de correcció d'errors. Aquesta taula es pot obtenir per via d'enginyeria inversa amb un generador de codis QR i continguts experimentals com l'exemple "fw3DUUUUUUUU(...)UUUUUUUU" de 270 caràcters. Aquest exemple mostra que en un codi QR de versió 10 i de nivell "L" les dades estàn dividides en 4 blocs entrellaçades. Si afegim un 271r caràcter, encara dona un codi de nivell 10. Amb 272 caràcters ja dona un codi de nivell 11. Això vol dir que en un codi de versió 10 amb nivell "L" caben 271 caracters d'un byte, més la capçalera de 2 bytes i mig. Vol dir que 274 bytes sencers en total, dividits en 4 blocs de 68+68+69+69 bytes. L'exemple "Catalanes...", descodificat més avall, confirma que els blocs tenen 68 i 69 caràcters.

### Capçalera - codificació (pas 6)

Cada codi QR conté al menys una capçalera amb un camp de mode de codificació seguit d'un camp de llargada. Els possibles valors d'aquest tipus de camp de mode són:
Indicadors de mode :
| Valor | Interpretació | Exemple |
| 0001 | numèric | números de sèrie o de producte; bitllets de transport |
| 0010 | alfanumèric | certificat Covid de la Unió Europa |
| 0100 | binari (també dit "byte") | molts codis QR comercials |
| 1000 | kanji | |
A l'inici del codi QR, abans de la primera capçalera, poden ocórrer els següents elements, sols o combinats:
* 1110 = codi ECI (Extended Channel Interpretation) indica quina taula de codis usar. Per exemple "1110" seguit de "00011010" = 26(decimal) significa codificació UTF-8.
* 0011 = indica que el contingut està repartit entre varis codis QR.
* 0101 = control FNC1 en primera posició.
* 1001 = control FNC1 en segona posició.
Algun generador sempre posa codi ECI si l'usuaria escull la codificació UTF-8. Les últimes tres opcions es podrien buscar en aplicacions industrials o logístics.

### Capçalera - llargada (pas 7)

Indica el nombre de bytes si el mode és binari. En els altres modes indica el nombre de caràcters. Taula de nombre de mòduls en el camp de llargada.
| Codificació | Ver. 1–9 | 10–26 | 27–40 |
| Numèric | 10 | 12 | 14 |
| Alfanumèric | 9 | 11 | 13 |
| Binari | 8 | 16 | 16 |
| Kanji | 8 | 10 | 12 |

### Dades - codificació (pas 8)

En mode numèric, el text es divideix en grups de 3 digits que són tractats com nombres decimals entre 000 i 999 i convertits en nombres binaris de 10 bits. Del camp de llargada es pot deduir quants dígits queden a l'últim grup. Aquests es codifiquen amb el mínim nombre necessari de mòduls: 4, 7 o 10.
En mode alfanumèric, el text es divideix en grups de 2 caràcters. A cada grup s'aplica la fórmula seguent i el resultat es transforma en un nombre binari d'11 bits. Si queda un caràcter sense parella al final, es codifica en 6 mòduls.
Per exemple
Codis per a caràcters alfanumèrics :
| Codi | Caràcter | Codi | Caràcter | Codi | Caràcter | Codi | Caràcter | Codi | Caràcter |
| 00 | 0 | 09 | 9 | 18 | I | 27 | R | 36 | [espai] |
| 01 | 1 | 10 | A | 19 | J | 28 | S | 37 | $ |
| 02 | 2 | 11 | B | 20 | K | 29 | T | 38 | % |
| 03 | 3 | 12 | C | 21 | L | 30 | U | 39 | * |
| 04 | 4 | 13 | D | 22 | M | 31 | V | 40 | + |
| 05 | 5 | 14 | E | 23 | N | 32 | W | 41 | – |
| 06 | 6 | 15 | F | 24 | O | 33 | X | 42 | . |
| 07 | 7 | 16 | G | 25 | P | 34 | Y | 43 | / |
| 08 | 8 | 17 | H | 26 | Q | 35 | Z | 44 | : |
En mode binari, segons l'estàndard s'ha d'usar la taula de codis Shift-JIS o usar un codi ECI per a indicar una altra taula. En la pràctica, molts escanejadors de codis QR interpreten codis UTF-8 correctament sense que calgui cap ECI. Pels caràcters que solen aparèixer en URLs, la diferència entre Shift-JIS i UTF-8 no és rellevant, ni tampoc la diferència amb la taula de codis Latin-1. Les lletres llatins especials com "ç" "á" "ü" no existeixen en Shift-JIS i els seus codis Latin-1 es poden confondre amb altres taules de codis. Per això, la millor solució és codificar-les amb UTF-8. És fàcil trobar pàgines web per a generar codis QR on aquesta solució s'aplica automàticament. En acabar de generar un codi QR amb lletres especials, és recomanable comprovar que surtin correctament amb diferents lectors.
La taula següent indica com el mode QR kanji reordena 43 blocs de la taula de codi Shift-JIS i les codifica amb 13 bits per caràcter.
| Bloc | 512×16 codis | Shift-JIS hexadecimal | QR Kanji hexadecimal | QR Kanji binari |
| 1 | 12×16 | 8140 -81FF | 0000-00BF | 0000000000000-.... |
| 2 | 12×16 | 8240-82FF | 00C0-017F | |
| 3 | 12×16 | 8340-83FF | 0180-023F | |
| 30 | 12×16 | 9E40-9EFF | 15C0-167F | |
| 31 | 12×16 | 9F40-9FFF | 1680-173F | |
| 32 | 12×16 | E040 -E0FF | 1740-17FF | |
| 33 | 12×16 | E140-E1FF | 1800-18BF | |
| 42 | 12×16 | EA40-EAFF | 1EC0-1F7F | |
| 43 | 8×16 | EB40-EBBF | 1F80-1FFF | ...-1111111111111 |
Els quatre primers blocs inclouen caràcters japonesos kana i majúscules i minúscules llatines bàsiques (no "á", "ç" "Ü", ...), gregues i russes. La resta són principalment caràcters japonesos kanji, més de 6000, vol dir molt més que el nombre de kanjis al currículum d'educació obligatòria del Japó, els 2136 jōyō kanji. Els codis Shift-JIS d'EBC0 fins a FFFF queden fora del codi QR kanji. Contenen menys de 3000 kanji (possiblement menys importants).

### Correcció d'errors (pas 9)

[Quan aquest article parla de llegir un codi QR presentat en una imatge, sempre es tracta de la lectura directa amb la imatge (descarregada) i el lector al mateix dispositiu. No, per exemple, de dirigir la càmera d'un telèfon mòbil amb un lector de codis QR cap a la pantalla d'un ordenador on es visualitza aquest article i les seves imatges. Els resultats poden millorar si hi ha una càmera entremig.]
* Codi QR (versió 2-M) amb contingut "QRRedundantRobust" per a la comparació amb els altres 3 imatges d'aquest grup.
* Codi QR (versió 2-M) encara llegible amb 40 bits danyats en 8 bytes.
* Codi QR (versió 2-M) fet il·legible per 9 bits danyats en 9 bytes.
* Codi QR (versió 2-M) encara llegible amb 8 bits danyats en 8 bytes.
Per a la correcció d'errors, els mòduls s'organitzen en bytes (grups de 8), independentment de la codificació del contingut (per exemple el mode alfanumèric amb grups de 11 mòduls). En els codis de versió 2, per exemple, caben 44 bytes de mòduls. Els bytes poden ser de dades o de correcció. Per exemple, per la versió 2 amb el nivell de correcció "M", 16 dels 44 bytes són de correcció i 28 queden per a les dades. Gràcies als 16 bytes de correcció, el codi encara és llegible quan 8 dels seus 44 bytes estàn danyats. En general (excepte els formats més senzills), per a poder corregir danys en N bytes, el codi QR té 2N bytes de correcció. En l'exemple, 8 bytes de 44 són més de 15%, el mínim exigit pel nivell "M".
Aquí una primera galeria de quatre imatges mostra que el límit de la correcció depèn del nombre de bytes danyats, no del nombre de bits danyats. Les observacions fetes en aquestes imatges estàn validades per tots els tres lectors provades.
Una pàgina web explica detalladament com construir un codi de correcció d'errors per a un exemple hello world en un codi QR de versió 1 i nivell de correcció "M". Vol dir un codi QR amb 26 bytes, dels quals 16 són per a les dades i 10 per a la correcció. Construeix un polinomi de missatge amb 16 termes, que té els 16 bytes (vistos com a 16 nombres) com a coefficients, i construeix un polinomi generador amb 10 termes. La divisió del polinomi de missatge pel polinomi generador deixa una resta que és un polinomi també de 10 termes. Els seus coefficients són els 10 bytes de correcció. La base matemàtica d'aquests càlculs s'explica en l'article de Viquipèdia sobre Reed-Solomon, més detallat en la versió anglesa.
En les versions més grans, la divisió dels bytes en blocs simplifica el càlcul de la correcció. Llavors, per a fer il·legible un codi QR per a la majoria de lectors, és suficient que en un sol bloc el nombre de bytes danyats superi el nivell de correcció. Els blocs de bytes estàn entrellaçades. Així és més probable que un dany en una àrea del codi es distribueixi sobre varis blocs sense superar el nivell d'error d'un sol bloc.
La segona galeria de quatre imatges explica la relació entre danys i blocs pel mateix codi QR que es veu trencat en la foto de la introducció de l'article. Té dos blocs de 35 bytes amb 18 bytes de correcció en cada bloc i 17 bytes de dades. Vol dir que en total hi ha 2×17=34 bytes de dades i que el codi pot aguantar danys en 18/2=9 bytes de cada bloc. Les observacions en aquestes imatges estan validades per dos lectors dels tres provades.
* Codi QR, versió 3-Q, encara llegible amb danys en 9 bytes de cada bloc. Contingut = http://en.m.wikipedia.org
* Mateix codi QR, versió 3-Q, fet il·legible pel dany en 10 bytes d'1 bloc.
* Mateix codi QR, versió 3-Q, danyat per 10 bits vermells de 10 bytes en 1 bloc. Llegible si l'escanejador interpreta vermell com blanc.
* Mateix codi QR, versió 3-Q, fet il·legible pel dany en 10 bits de 10 bytes d'1 bloc.
El tercer lector no sap llegir el codi QR en la primera imatge de la segona galeria, però sí sap llegir el mateix codi QR en una captura de pantalla on aquesta imatge només ocupa una part. Inesperadament sap llegir el codi QR en la segona imatge de la mateixa galeria i, si formen part d'una captura de pantalla, també els codis QR de la tercera i quarta imatge.
Sap llegir tots els quatre imatges de la tercera galeria. Ja no les pot llegir si es talla la part superior o inferior de la imatge, que només conté marges negres o elements típics d'una captura de pantalla de telèfon mòbil. Els codis QR de la tercera galeria tenen 16 bytes danyades en el primer bloc i 15 en el segon.
Les dues primeres imatges de la tercera galeria es basen en el mateix codi QR que les imatges de la segona galeria. El contingut d'aquest codi, de 25 caràcters, junt amb els 12 bits de la capçalera no omple tots els 34 bytes de dades del codi. Deixa 7 bytes sense usar.
El contingut de les dues últimes imatges de la tercera galeria té 7 caràcters més i no deixa bytes buides. Aquestes dues últimes imatges demostren que els bytes buides no són la raó pel fet inesperat que un lector sàpiga llegir codis tant danyats.
Els altres dos lectors provades no saben llegir cap codi de la tercera galeria.
* Codi QR de versió 3-Q danyat en 16+15 bytes. Llegible amb certs programes. Contingut = http://en.m.wikipedia.org
* Mateix codi QR de versió 3-Q danyat en 16+15 bytes. Llegible amb certs programes.
* Codi QR de versió 3-Q danyat en 16+15 bytes. Llegible amb certs programes. Contingut = https://en.wikipedia.org/wiki/QR
* Mateix codi QR de versió 3-Q danyat en 16+15 bytes. Llegible amb certs programes.

## Exemples de Descodificació

Amb aquests exemples es practiquen els passos 2 a 8 de la secció anterior. El pas 1 és trivial pel ull humà. El pas 9 seria el més complex pel cervell humà.
Emprant un cert generador QR, els 7 textos següents donen codis amb màscares relativament fàcils pel càlcul mental (codis de màscara 111, 101 i 100).
Per a coincidir amb els valors de la taula aquí sota, els exemples s'han d'introduir al generador sense afegir cap control de final de línia. En l'exemple "Catalanes...", s'ha d'enganxar sense els marcadors informàtics de format de lletra. El format negret o cursiu en algunes lletres d'aquest exemple és només per a facilitar la comprensió de la llargada dels bloc de dades.
Per a entendre en detall la descodificació d'aquests exemples, s'ha de saber transformar nombres binaris en nombres hexadecimals i decimals i s'ha de saber usar una taula de codis. Altres coneixements necessaris, específics de codis QR, s'han proveït més a dalt.
| Exemple | pop² | 01714 | POP | 🐙² = Pop al quadrat | fw3DUUU... | Catalanes... | Catalanes... | PIPI...CACA... | PIPI...CACA... |
| Mida | 21×21 | 21×21 | 21×21 | 25×25 | info versió 001010=8+2 | 57×57 | | 41×41 | |
| Versió | 1 | 1 | 1 | 2 | 10 | 10 | | 6 | |
| Nivell (visible) | 11 | 11 | 11 | 11 | 11 | 11 | | 11 | |
| Nivell | L | L | L | L | L | L | | L | |
| Màscara (visible) | 101 | 101 | 111 | 101 | 100 | 111 | | 111 | |
| Màscara | alternant | alternant | columnes | alternant | ratlles | columnes | | columnes | |
| Bloc | ———————— | ———————— | ———————— | ———————— | ———————— | Bloc 1 | Bloc 1 (acumulat) | Bloc 1 | Bloc 2 |
| Mòduls | 1~4 | 1~4 | 1~4 | 1~4 | 1~4 | 1~8 | 1~4 | 1~4 | |
| Visible | 1101 | 1000 | 0010 | 1101 | 1000 | 0100 0000 | | 0111 | |
| Cru | 0100 | 0001 | 0010 | 0100 | 0100 | 0100 0000 | 0100 | 0010 | |
| Mode | binari | numèric | alfanumèric | binari | binari | | binari | alfanumèric | |
| Mòduls | 5~12 | 5~14 | 5~13 | 5~12 | 5~8 + 33~40 + 65~68 | 33~40 | 5~8 + 33~40 + 65~68 | 5~8 + 17~21 | |
| Visible | 1001 1100 | 1001 1000 11 | 0000 0001 1 | 1000 1110 | | 0000 1111 | | 0000 1101 0 | |
| Cru | 0000 0101 | 0000 0001 01 | 0000 0001 1 | 0001 0111 | | 0000 1111 | 0000 0000 1111 1010 | 0101 1000 0 | |
| Llargada | 5 | 5 | 3 | 23 | 256+14=270 | | 250 | 176 | |
| Mòduls | 13~20 | 15~24 | 14~24 | 13~20 | 5~32 | 65~72 | | 22~24 + 33~40 | 25~32 + 41~43 |
| Visible | 1110 1001 | 01 1000 1000 | 100 0111 1101 | 0110 1001 | 1100 1001 1001... | 1010 0100 | | 001 0010 0010 | 0001 0001 100 |
| Cru | 0111 0000 | 00 0001 0001 | 100 0111 1101 | 1111 0000 | 0000 0101 0101... | 1010 0100 | | 100 0111 0111 | 0100 0100 110 |
| Formula | 70(hex) | 16+1=17 | 1149=45*25+24 | F0(hex)≥80(hex) | 0 5 555...(hex) | | | 1143=45×25+18 | 550=45×12+10 |
| Resultat | "p" | "017" | "PO" | UTF-8 "1111"=4byte | 0×1024 | | | "PI" | "CA" |
| Mòduls | 21~28 | 25~31(llargada!) | 25~30(llargada!) | 21~28 | 33~64 | 97~104 | 69~72 + 97~100 | 49~56 + 65~67 | 44~48 + 57~62 |
| Visible | 1111 1001 | 0111 101 | 1100 11 | 0000 0110 | 1101 1100 1001... | 1001 1100 | | 1101 1011 111 | 1 1101 1100 11 |
| Cru | 0110 1111 | 0001 110 | 0110 01 | 1001 1111 | 0001 0000 0101... | 0011 0110 | 0100 0011 | 1000 1110 111 | 0 1000 1001 10 |
| Formula | 6F(hex) | 8+4+2=14 | 25 | (F0) 9F (xx xx) | 1 0 555...(hex) | | 43(hex) | 1143=45×25+18 | 550=45×12+10 |
| Resultat | "o" | "14" | "P" | | 1×256+0×16 | | "C" | "PI" | "CA" |
| | | | | | | Bloc 2 | Bloc 3 |
| Mòduls | 29~36 | 32~35 | 31~34 | 29~36 | 65~96 | 9~12 | 17~20 |
| Visible | 0001 0110 | | | 0000 0110 | 0010 1010 1001... | 0011 | 1110 |
| Cru | 0111 0000 | 0000 | 0000 | 1001 0000 | 1110 0110 0101... | 0011 | 1110 |
| Formula | 70(hex) | | | (F0 9F) 90 (xx) | E 6 555...(hex) | 3(hex) | E(hex) |
| Resultat | "p" | terminador | terminador | | (8+4+2)×1=14 | (pot ser mitja "s") | (pot ser mitja "N") |
| Mòduls | 37~44 | 36~40 | 35~40 | 37~44 | 97~128 | 13~16 + 41~44 | 21~24 + 49~52 |
| Visible | 1010 0100 | | | 1111 1111 | 0101 0100 0110... | 0100 0010 | 0100 1110 |
| Cru | 1100 0010 | 00000 | 000000 | 1001 1001 | 0110 0111 0101... | 0100 0010 | 0100 1110 |
| Formula | C2(hex)≥80(hex) | | | F0 9F 90 99 (UTF-8) | 6 7 555...(hex) | 42(hex) | 4E(hex) |
| Resultat | UTF-8 "11"=2byte | (omplir byte) | (omplir byte) | "🐙" | | "B" | "N" |
| Mòduls | 45~52 | 41... | 41... | 45~52 | 129~160 | 45~48 + 73~76 | 53~56 + 81~84 |
| Visible | 1101 1011 | | | 1010 0100 | 0100 0000 0110... | 0100 1000 | 0100 0100 |
| Cru | 1011 0010 | 11101100 00010001 ... | 11101100 00010001 ... | 1100 0010 | 0111 0011 0101... | 0100 0010 | 0100 0100 |
| Formula | C2 B2 (UTF-8) | EC11EC11...(hex) | EC11EC11...(hex) | C2(hex)≥80(hex) | 7 3 555...(hex) | 42(hex) | 44(hex) |
| Resultat | "²" | (omplir codi) | (omplir codi) | UTF-8 "11"=2byte | 6677(hex)="fw" 3..3(hex)=3 | "B" | "D" |

### Exemples amb lletres japoneses

Saber descodificar manualment un codi QR concret permet analitzar en quin mode i amb quina taula de codificació està escrit aquest codi. L'estàndard per als codis QR inclou el mode kanji com una particular manera de codificar lletres japoneses amb només 13 mòduls per caràcter. En el mode binari, l'estàndard ISO de l'any 2000 diu que la taula de codificació és la japonesa Shift-JIS (o només el seu primer bloc, de 8 bits), no l'internacional UTF-8, ni la oesteuropea Latin-1. Amb Shift-JIS, els caràcters japonesos ocupen 2 bytes (16 mòduls) i alguns només 1 byte (8 mòduls). Amb UTF-8, els caràcters japonesos ocupen 3 bytes (24 mòduls). Les 2×26 lletres llatins bàsics, els digits i els símbols occidentals més comuns (puntuació, etc.) ocupen 1 byte, tant en Shift-JIS, com en UTF-8 i en Latin-1.
És el contingut del codi QR blanc i blau de la foto. Són 77 caracters: 37 "llatins" + 12 japonesos + 28 "llatins" en aquest ordre. Els espais del contingut real estàn representats aquí pel símbol "␣" i les noves línies per "␍␊".
El codi QR està completament en mode binari i el nombre de mòduls es compon així:
* 12 bits capçalera + 37*8 llatí + 12*16 japonès (Shift-JIS) + 28*8 llatí = 12 bits + (77+12) bytes. Espai necessari 91 bytes, versió mínima 4.
Una opció més curta seria inserir una capçalera interior (+13 mòduls) per a posar "MEBKM:TITLE:" en alfanumèric (-30), una altra capçalera (+12) per a posar "探そうモビで専門学校探し" en mode kanji (-36) i una tercera (+12) per a continuar en mode binari. L'espai necessari serien només 88 bytes, però la versió mínima seria la 4 igualment.
Els 32 caràcters kanji d'aquest exemple repeteixen 16 vegades la paraula 日本 (=Japó).
Amb un generador que podem considerar "europeu" (el seu lloc web és bilingüe anglès alemany) el codi generat per a aquest exemple mida 37×37 (versió 5) i és de nivell "L". El contingut, amb màscara 111, es pot desxifrar manualment de la mateixa manera com s'ha mostrat amb detall pels exemples anteriors no japonesos. El resultat, expressat en nombres hexadecimals, és:
* 4(=mode binari) 60(=llargada 96) E697A5(="日") E69CAC(="本") E697A5(="日") ...
La traducció del hexadecimal als caràcters correspon a l'estàndard UTF-8. La llargada 96 són 3 bytes per cadascú dels 32 caràcters, 24 mòduls per caràcter.
Dos generadors japonesos de codis QR generen pel mateix exemple un codi QR de mida 33×33 (versió 4) i nivell de correcció d'errors "L". El seu contingut és:
* 4(= mode binari) 40(= llargada 64) 93FA(="日") 967B(="本") 93FA(="日") ...
La traducció del hexadecimal als caràcters correspon a l'estàndard Shift-JIS. La llargada 64 són 2 bytes per cadascú dels 32 caràcters, 16 mòduls per caràcter.
Per un exemple amb 13 repeticions de "日本", els mateixos generadors QR japonesos escriuen un codi de mida 29×29 (versió 3).
En mode QR kanji, cada caràcter ocuparia només 13 mòduls en lloc de 16. Així l'exemple de 16 vegades "日本" es reduiria de la versió 4 cap a la versió 3.
Un tercer generador japonès tampoc usa el mode kanji per a aquest exemple, sinó el mode binari amb taula de codis UTF-8, igual que el generador europeu.
Un quart generador genera per a aquest exemple un codi QR de versió 4 amb nivell de correcció "M" i mode QR kanji. El contingut del primer dels seus dos blocs entrellaçades és:
* 1000₂(=mode kanji) 00100000₂(=llargada 32) 0111000111010₂=0E3A$_{16}$=3642$_{10}$=18*(12*16)+186 0111111111011₂=0FFB$_{16}$=4089$_{10}$=21*(12*16)+59 ...
Els codis Shift-JIS s'obtenen aplicant les transformacions mostrades en la taula de QR kanji inclòs a dalt, a la secció sobre el pas 8 de descodificació:
18$_{10}$=12$_{16}$, 186$_{10}$=BA$_{16}$, 12BA$_{16}$+8140$_{16}$=93FA$_{16}$="日" en Shift-JIS.
21$_{10}$=15$_{16}$, 59$_{10}$=3B$_{16}$, 153B$_{16}$+8140$_{16}$=967B$_{16}$="本" en Shift-JIS.
"Mirar a Internet" en xinès. Com molts caràcters xinesos, aquests quatre existeixen també en japonès.
Per a escriure aquesta frase en un codi QR, un generador europeu i un japonès usen el mode binari amb UTF-8:
* 4(= mode binari) 0C(= llargada 12) E59CA8(="在") E7BD91(="网") E4B88A(="上") E79C8B(="看").
Dos altres generadors japonesos usen el mode binari amb Shift-JIS:
* 4(= mode binari) 08(= llargada 8) 8DDD(="在") E3A4(="网") 8FE3(="上") 8AC5(="看").
Un altre genererador genera per a aquest exemple un codi QR en mode kanji:
* 8(= mode kanji) 04(= llargada 4) 099D(="在") 19E4(="网") 0B23(="上") 0745(="看").
En aquest cas de mode kanji, els nombres hexadecimals de quatre dígits, sempre començades en "0" o "1", s'escriuen al codi QR amb només 13 mòduls.

### Exemples de codificació ambigua

[Quan aquest article parla de llegir un codi QR presentat en una imatge, sempre es tracta de la lectura directa amb la imatge (descarregada) i el lector al mateix dispositiu. No, per exemple, de dirigir la càmera d'un telèfon amb un lector de codis QR cap a la pantalla d'un ordenador on es visualitza aquest article i les seves imatges. Els resultats poden millorar si hi ha una càmera entremig.]
L'ambigüitat és un problema genèric en les comunicacions informàtiques. Es coneix amb el nom japonès de mojibake. Un punt específic aquí és que l'estàndard pels codis QR preveu una codificació concreta, la japonesa Shift-JIS, però ara (2022) la UTF-8 és la codificació globalmelment dominant — inclòs pel japonès. Un altre punt específic és que pel mateix codi QR i el mateix lector, la interpretació pot variar segons com s'ha capturat la imatge.
Aquestes paraules apareixen en un codi QR original amb el format d'aplicació vCard. En una foto (retallada) del codi QR, tres lectors llegeixen correctament "esquí". Però en una captura de pantalla de la mateixa foto, només dos lectors llegeixen "esquí" i el tercer lector llegeix "esqu铆" (però ja no en la versió 2.5.4 d'aquest lector). En aquest codi la "í" està codificada com a C3AD (al 7è i 8è byte del segon de cinc blocs). La comparació amb la taula de codi GB18030, l'estàndard xinès, explica la lletra xinesa triada en la mala interpretació:
* UTF-8: C3AD="í"
* GB18030: C3AD="铆"
"Max Mostra i fills, Zurich", en alemany. Paraules que es troben codificat en mode binari amb UTF-8 en exemples varis de Swiss QR-Bill. Hi ha mòbils de la marca xinesa Xiaomi on el llector QR que vé amb l'instal·lació inicial llegeix "S鰄ne" i "Z黵ich" perquè substitueix "öh" i "ür" amb caràcters xinesos.
La comparació amb la taula de codi GB18030, l'estàndard xinès, no dona una explicació concluent:
* UTF-8: C3B6+68="ö"+"h", C3BC+72="ü"+"r".
* GB18030: C3B6+68="枚"+"h", C3BC+72="眉"+"r".
* GB18030: F668="鰄", FC72="黵".
Si els codis Swiss QR-Bill només són per a lectors homologats pels bancs i caixes suïssos, l'ambigüitat es pot controlar. Però les mateixes paraules podrien trobar-se en codis QR amb dades de contacte que haurien de ser llegible amb qualsevol lector.
És un dels exemples anteriors, tret el primer caràcter. Codificat amb generadors japonesos com a codi QR amb mode binari Shift-JIS, dos lectors ho llegeixen correctament "网上看", però un altre lector llegeix "㤏��". L'explicació és que els 3 grups de 2 bytes s'interpreten com a 2 grups de 3 bytes:
* Shift-JIS: E3A4(="网") 8FE3(="上") 8AC5(="看")
* UTF-8: E3A48F(="㤏") E38AC5 (un codi possible en UTF-8, però no assignat a cap caràcter).
Canviant l'última lletra per una delta grega, "网上Δ", s'obté un exemple completament ambigu, encara que gens realista:
* Shift-JIS: E3A4(="网") 8FE3(="上") 83A2(="Δ")
* UTF-8: E3A48F(="㤏") E383A2(="モ")
Llavors els tres llectors llegeixen "㤏モ".
"ﾎﾃﾙ" és "hotel" en japonès, escrit amb lletres katakana de mitja amplada. En amplada completa seria "ホテル". En Shift-JIS, els katakana de mitja amplada es codifiquen amb només un byte per caràcter.
* Shift-JIS: CE(="ﾎ") C3(="ﾃ") D9(="ﾙ")
* Latin-1: CE(="Î") C3(="Ã") D9(="Ù")
* UTF-8: C38E(="Î") C383(="Ã") C399(="Ù")
Si està escrit en un codi QR en mode binari amb Shift-JIS, un lector llegeix aquest exemple "ÎÃÙWiki" i els altres dos llegeixen "ﾎﾃﾙWiki".
En l'exemple següent, la lectura de "ﾎﾃﾙ" depèn de més factors.
Aquest és un exemple japonès real de l'any 2009. ("␍␊" és una nova línia a l'original.) Si en el codi QR tot està escrit en mode binari Shift-JIS, els tres llectors llegeixen "...ﾎﾃﾙ...", inclòs el lector que llegia "ÎÃÙ" en l'exemple anterior.
En el codi QR imprès original, la codificació anava per segments: mode binari llargada 25, més mode alfanumèric llargada 12 per a "MEBKM:TITLE:", més mode kanji llargada 2 per a "筑波", més mode binari Shift-JIS llargada 34 per a la resta "ﾎﾃﾙ;URL:http\://tsukubahotel.jp/;;".
Amb aquesta codificació, un lector torna a legir "ÎÃÙ", un altre llegeix sempre "ﾎﾃﾙ" i un lector llegeix o "ÎÃÙ" o "ﾎﾃﾙ", dependent de la imatge del mateix codi completament idèntic. Aquí es mostren les dues imatges corresponents, junts amb una tercerara on una versió colorada del mateix codi QR dona pistes per a veure com el contingut està codificat en quatre segments amb tres modes de codificació diferent.
* Foto d'un codi QR en una pantalla, mal interpretat com a "...筑波ÎÃÙ..." pel mateix lector (TeaCapps 2.7.4-L) que llegeix correctament com a "...筑波ﾎﾃﾙ..." una captura de pantalla d'aquesta foto.
* Captura de pantalla d'una foto d'un codi QR en una (altra) pantalla, interpretat correctament com a "...筑波ﾎﾃﾙ..." pel mateix lector (TeaCapps 2.7.4-L) que mal interpreta com a "...筑波ÎÃÙ..." la foto original.
* Codi QR amb pistes de color per a descodificar manualment un contingut amb 4 capçaleres (gris) en dos blocs entrellaçades (verd/vermell i blau/groc) considerant una màscara (groc pàl·lid)

## Escriure un codi QR

Per a cada pas en la descodifició d'un codi QR, hi ha un pas corresponent en la creació d'un codi QR.
Un pas adicional és el tractament d'espai no usat. Els últims passos pels exemples de descodificació "01714" i "POP" mostren que després de les dades ve un terminador "0000" (prescindible si no queda espai) i que els bytes sencers no usats s'omplen alternant amb els valors (en hexadecimal) EC i 11. Qualsevol altre mòdul no usat es posat a "0".
Tres passos en la creació d'un codi QR fan servir una lògica força diferent del pas corresponent de descodificació: les másqueres (ja comentades en aquest sentit pel pas 1 de descodificació), el codi de correcció d'errors i l'elecció del mode de codificació.
En els exemples de descodificació amb lletres japonesos s'ha comentat com el mateix contingut cap en una versió de QR més petita segons el mode de codificació escollit (o varis modes, per segments). Els exemples de descodificació mostren que en mode binari pot haver-hi ambigüitats de taula de codificació. Un prefixe ECI (Extended Channel Intetpretation) evita aquestes ambigüitats. En la pràctica, tot allò no sol ser relevant si l'únic contingut del codi QR és una adreça web.

## Micro QR Code, iQR, SQRC, Frame QR

* Exemple d'etiqueta Micro QR que conté la paraula "Example".
* Exemple d'un codi iQR
* Exemple d'un Frame QR. Per llegir-ho — amb un lector específic — pot ser necessari tallar la imatge perquè no es vegin dos codis a la vegada (el del forat buit i el del forat ple).
Al lloc web de Denso Wave, empresa inventora del codi QR i propietària de la marca QR Code, hi ha una presentació de cinc tipus de codis QR: el codi QR regular —objecte principal d'aquest article — el Micro QR Code, l'iQR, l'SQRC i el Frame QR.
El Micro QR Code, és un codi quadrat, pensat per a espais petits. Té només una pauta de posició en lloc dels tres d'un codi QR regular. Pot tenir 11, 13, 15 o 17 mòduls al quadrat. El Micro QR Code més gran coneix quatre modes de codificació i tres nivells de correcció d'errors. El contingut màxim són 35 digits, en mode numèric amb nivell "L".
L'iQR també gasta menys espai en pautes fixes que un codi QR regular. Pot ser quadrat o rectangular, amb mides entre 9×9 i 422×422 mòduls. Té un cinquè nivell de correcció d'errors, "S", de 50%.
L'SQCR, Secure QR Code (codi QR segur) té la mateixa estructura visible que el codi QR regular. La diferència està en el contingut. Una part del contingut pot ser públic, però la resta està xifrada i només pot ser llegida per a usuàries que tenen la clau corresponent.
El Frame QR (codi QR marc) permet deixar a l'interior un forat sense mòduls (en forma de rectangle, triangle, estrella…), que pot ser omplert amb una imatge comercial o un holograma de seguretat, per exemple. No s'ha de confondre amb codis QR on una imatge oculta mòduls d'un codi QR, aprofitant la capacitat de correcció d'errors.
Amb un lector arbitrari es poden llegir codis QR regulars i la part pública d'un codi SQRC, però no els altres tres tipus de codis QR. Amb un llector recomanat per Denso Wave es poden llegir, a més, codis Micro QR Code i Frame QR.

## Referències

* ↑ TERMCAT, CENTRE DE TERMINOLOGIA. Terminologia bàsica dels dispositius mòbils (en línia). 3a ed., 2020 [Consulta: 7 maig 2022].
* 1 2 3 4 DENSO WAVE. «History of QR Code» (en anglès). [Consulta: 14 maig 2022].
* ↑ «patent JP2938338B2» (en anglès i japonès). Patents Google. [Consulta: 14 maig 2022].
* 1 2 «patent EP0672994(A1) (pàgina 1)» (en anglès). European Patent Office (Espacenet). [Consulta: 14 maig 2022].
* ↑ DENSO WAVE. «FAQ - QR Code's intellectual property right» (en anglès). [Consulta: 14 maig 2022].
* ↑ «Scanners» (en anglès). Zebra. [Consulta: 29 maig 2022].
* ↑ EVRYTHNG. «QR Capabilities in iOS 11» (en anglès). [Consulta: 8 maig 2022].
* 1 2 3 4 5 6 7 8 9 10 "QR Scanner: Barcode Scanner", Simple Design Ltd., Illes Verges Britàniques, versió 2.4.9.GP
* 1 2 3 4 5 6 7 8 9 "Lector QR i codi de barres (en català)", TeaCapps GmbH, Alemanya, versió 2.7.4-L
* 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 "QRQR - QR Code® Reader", arara.com, Japó, versió 3.0.23 del 20 d'abril 2022. És una aplicació lector i generador de codis QR "amb tecnologies de DENSO WAVE INC.". De la mateixa marca que el lloc web QRQR però amb altres resultats en el generador de codis QR: sempre posa el nivell de correcció "M", sap usar mode QR kanji i sap codificar el contingut en segments amb modes diferents.
* 1 2 (en japonès) JR時刻表 (horaris Japan Railways). Kotsu Shimbunsha, 6/2010. Els codis QR són en pàgines d'anuncis hotelers i notícies ferroviaris abans del miler de pàgines d'horaris.
* ↑ «Acheter des QR Codes statiques ou dynamiques» (en francès). codesabarres.fr. [Consulta: 22 maig 2022].
* ↑ European Payments Council. «EPC069-12 v2.1 Quick Response Code - Guidelines to Enable the Data Capture for the Initiation of a SCT.pdf» (en anglès), 09-02-2012. [Consulta: 22 maig 2022].
* ↑ «scan2pay» (en anglès). [Consulta: 22 maig 2022].
* ↑ «“无现金时代”的主角——移动支付 " (El protagonista de "l'era sense efectiu" - el pagament mòbil)» (en xinés). chiculture.org.hk, Academy of Chinese Studies. [Consulta: 22 maig 2022].
* ↑ Autoridade Tributária e Aduaneira. «Código QR» (en portugués), 29-10-2020. [Consulta: 22 maig 2022].
* ↑ «Portugal – Introduction of single document code (ATCUD) in invoices postponed to 1.01.2022» (en anglés). belim.pt. [Consulta: 22 maig 2022].
* ↑ «New Prospects for Invoicing. Thanks to QR-Bill and eBill» (en anglès). SIX Group. [Consulta: 19 maig 2022].
* ↑ «Videoschaltkonferenz der Bundeskanzlerin mit den Regierungschefinnen und Regierungschefs der Länder am 2. Dezember 2021 (punt 7)» (en alemany). bundesregierung.de, 02-12-2021. [Consulta: 22 maig 2022].
* ↑ T. Ricket. «The Pet Shop Boys embed QR codes in latest Orwellian video» (en anglès), 10-08-2007. [Consulta: 6 maig 2022].
* ↑ "Invader". «Ceràmiques de codis 2D de l'artista Invader» (en anglès). [Consulta: 9 maig 2022].
* 1 2 zdf.kultur. «SWEZA - Kunst und QR» (en alemany). Arxivat de l'original el 2022-04-05. [Consulta: 9 maig 2022].
* ↑ Gautam Garg. «Attention street artists: Here is how to make money from your work» (en anglès), 21-05-2018. [Consulta: 9 maig 2022].
* ↑ Ajuntament de Barcelona. «Museu Picasso - Visites guiades - Audioguies». [Consulta: 9 maig 2022].
* ↑ Roxanne Hathway-Baxter. «Douglas Coupland on the 21st century state of mind» (en anglès), 01-02-2012. [Consulta: 9 maig 2022].
* ↑ Gianluca Marziani. «Nuovo format per il Covidocene» (en italià). [Consulta: 9 maig 2022].
* ↑ Shoshana Wodinsky. «Scammers Are Using QR Codes to Plunder Parking Meter Payments» (en anglès). Gizmodo, 12-01-2022. [Consulta: 22 maig 2022].
* 1 2 DENSO WAVE. «QR Code Standardization» (en anglès). [Consulta: 7 maig 2022].
* 1 2 3 4 5 6 7 8 9 10 International standard ISO/IEC 18004: Information technology -- automatic identification and data capture techniques -- bar code symbology -- QR code. Geneva: International Organization for Standardization, 15 de juny 2000.
* ↑ «ISO/IEC 18004:2006, lloc web AENOR» (en castellà). International Standards Organization. [Consulta: 18 abril 2022].
* ↑ «ISO/IEC 18004:2015, lloc web ISO» (en anglès). International Standards Organization. [Consulta: 17 abril 2022].
* ↑ «Code 128 character and symbol width space efficiency» (en anglès). Honeywell International Inc.. Arxivat de l'original el 2022-08-15. [Consulta: 28 maig 2022]. "'overhead' is 25 modules for Start character, check digit, and stop character" (el valor correcte és 35)
* 1 2 3 4 5 6 7 Dos generadors trobats entre els primers resultats d'una cerca en japonès amb el cercador Google: https://qr.quel.jp/text.php (en japonès) Generador fàcil de usar sense saber japonès ni usar traductor. https://www.cman.jp/QRcode/ (en japonès). Generador amb opció d'escollir el nivell de correcció d'error, etc. El botó vermell "自由入力" és per a contingut propi (text). No es veu cap diferència entre els resultats d'aquests dos generadors si el segon es parametritza com el primer (nivell "L" = レベルL). Segons el contingut, fan codis en mode númeric, alfanumèric o binari, però mai en mode kanji.
* 1 2 3 https://m.qrqrq.com/ (en japonès) Lloc web amb un generador de codis QR, de la mateixa marca que l'aplicació QRQR però amb resultats diferents en el generador: sempre posa el nivell de correcció "M" i el mode binari amb taula de codis UTF-8, mai el mode númeric, alfanumèric o kanji.
* 1 2 Thonky. «QR Tutorial, Error Correction» (en anglès). [Consulta: 25 abril 2022].
* 1 2 3 4 5 https://www.the-qrcode-generator.com/ (bilingüe anglès alemany). Generador de codis QR sencill i directe. Utilitzat en aquest article per a generar els exemples de descodificació no japonesos. Escollit per les seves característiques tècniques (correcció d'errors "L", algorisme de màscara).
* 1 2 https://www.thonky.com/qrcode/?advopt=1 (en anglès). Generador no comercial que permet escollir paràmetres tècnics, inclòs la màscara. El camp d'entrada no s'adapta bé a pantalles petits. El número del mask pattern és sense la máscara 101. Per exemple, la màscara amb codi de format de tres mòduls negres (111), és 010 sense emmascarar, doncs Mask pattern = 2.
* ↑ Bill Casselman. «How to Read QR Symbols Without Your Mobile Telephone» (en anglès). American Mathematical Society. [Consulta: 25 abril 2022].
* ↑ Thonky. «Format and Version String Tables» (en anglès). [Consulta: 14 maig 2022].
* ↑ https://commons.wikimedia.org/wiki/File:Z80-Tianjin_-Beijing.jpg Imatge Wikimedia d'un bitllet de tren xinès
* 1 2 3 4 5 6 7 8 Unicode Consortium. «Taula Shift-JIS». International Components for Unicode. [Consulta: 27 abril 2022].
* 1 2 3 4 5 6 7 8 9 10 Unicode Consortium. «Taula UTF-8». International Components for Unicode. [Consulta: 27 abril 2022].
* ↑ «网 Japanese» (en anglès). Wictionary.
* ↑ «Distribution of Character Encodings among websites that use .jp» (en anglès). w3techs.com. [Consulta: 3 gener 2022].
* 1 2 Imatge de codi QR vCard en Wikimedia. Captura de pantalla d'una imatge del mateix codi QR, també en Wikmedia. (No s'integra al text de l'article per a allunyar l'efecte de publicitat gratuïta)
* ↑ «GB18030: The Chinese standard» (en anglès). IBM, 03-05-2022. [Consulta: 29 maig 2022].
* 1 2 Unicode Consortium. «Taula GB18030». International Components for Unicode. [Consulta: 22 maig 2022].
* ↑ «The QR-Bill — The Evolution of Payment Slips» (en anglès). SIX Group. [Consulta: 19 maig 2022].
* ↑ Unicode Consortium. «Taula Latin-1». International Components for Unicode. [Consulta: 22 maig 2022].
* ↑ "Thonky". «QR Tutorial» (en anglès). [Consulta: 27 abril 2022].
* ↑ «Types of QR Code» (en anglès). Denso Wave. [Consulta: 22 maig 2022].

## Notes

* ↑ La "w" té el codi hexadecimal 77, de dos digits iguals, com també cadascun dels 5 símbols " 3 D U f
* ↑ Hi ha entorns informàtics on funciona l'enllaç literal en minúscules https://ca.wikipedia.org i el codi QR en majúscules https://commons.wikimedia.org/wiki/File:QR_code_uppercase_CA-Wiki.png, però no l'enllaç literal en majúscules HTTPS://CA.WIKIPEDIA.ORG .
* ↑ Versió-nivell 1-L,M,Q,H, 2-L i 3-L
* ↑ Escrit en una notació que distingeix nombres binaris₂, decimals$_{10}$ i hexadecimals$_{16}$.
* ↑ A l'escanejar amb un lector qualsevol la mostra del codi Frame QR al lloc web de Denso Wave, s'abre una pàgina web amb un enllaç a aquest lector

## Bibliografia

* International Organization for Standardization, International standard ISO/IEC 18004: Information technology -- automatic identification and data capture techniques -- bar code symbology -- QR code, Geneva : ISO : IEC, 2000. OCLC 60816353

## Vegeu també

* Codi de barres
* Reed Solomon
* Semacode
* Visió artificial