Dans le dernier tome de Darwin’s Game (un manga), je suis tombé sur un code QR sur une page. J’ai tenté rapidement de le lire avec mon iPhone, sans succès, et donc je me suis dit que j’allais investiguer un peu.
Le code QR est récalcitrant pour plusieurs raisons. La première, c’est qu’un coin n’est pas complet. Je connaissais un peu le fonctionnement des codes et je savais que la détection se base sur les trois carrés encadrés dans les coins. La seconde, c’est qu’il est penché, ce qui n’est pas pratique. La troisième, c’est qu’il n’est pas très lisible, avec les trames classiques des mangas.
Ma première idée a été de le numériser proprement et de tenter de le lire manuellement. Oui, ça semble un peu idiot comme méthode, mais c’est possible. J’avais lu deux articles qui expliquent comment décoder un code QR.
La structure des codes QR reste assez simple dans l’absolu, et il y a beaucoup de données qui servent juste à la détection. Sur le papier, en connaissant les bases du binaires, on peut (avec un peu de temps) décoder un code QR à la main. Dans mon cas, ça n’a pas fonctionné, mais pas parce que la méthode ne fonctionne pas, mais essentiellement parce que le code QR est peu lisible. Mais aussi pour une autre raison idiote, liée à l’iPhone.
Ensuite, j’ai tenté de recopier le code QR à la main, à partir de l’image. J’ai pris un carnet quadrillé, un Bic et j’ai tenté. Là encore, ça n’a pas fonctionné, parce que le code n’est pas très lisible au départ et j’avais donc des erreurs. Dans tous les cas, mon iPhone voyait parfois un code, mais sans me donner le contenu.
J’ai aussi tenté d’améliorer la lisibilité avec une idée qui n’a pas eu plus de succès : sortir l’iPad et un Pencil, et redessiner littéralement le code. Ça a fait sourire ma femme que je dessine un code QR en regardant un documentaire, d’ailleurs.
Changement d’image
Ensuite, j’ai eu une autre idée : chercher une image un peu plus propre. Au lieu de numériser mon manga papier et ses trames, j’ai cherché une version plus propre (et illégale, il faut bien le dire) avec une bonne définition. C’était une bonne idée : il y avait moins de trames et le résultat était plus lisible, même si je n’arrivais toujours pas à le décoder.
Pour simplifier les choses, au lieu de pointer mon iPhone sur l’écran, j’ai aussi cherché s’il existait des logiciels pour le faire (et sans passer par des services en ligne). Je suis donc tombé sur Zbar. Une fois installé avec Brew, j’ai tenté de décoder mes essais sans succès. Mais à un moment, après avoir redressé l’image, augmenté le contraste et inversé les couleurs, il a donné une réponse. Attention, c’est un peu du divulgâchage si vous lisez Darwin’s Game et que vous n’êtes pas arrivé à la fin.
Le code QR contenait Greed:Snow
, et je me suis surtout rendu compte d’une chose : si zbarimg
arrivait à lire le code, ce n’était pas le cas de l’iPhone.
Reconstruire le code
Ce point m’a un peu surpris, et comme la version lue restait assez mauvaise, je ne me suis pas arrêté là : j’ai tenté de reconstruire le code QR proprement. De façon étonnante, ce n’est pas si simple que je le pensais. En fait, comme pour le décodage, il y a de nombreuses étapes pour l’encodage : le choix du texte, la façon de l’encoder, le masque (il y en a plusieurs) et le niveau de correction d’erreurs. Dans la majorité des cas générateurs que vous trouverez en ligne, vous ne pourrez pas jouer sur ces paramètres… et donc vous n’obtiendrez pas nécessairement le même code QR en partant des mêmes données. Ce n’est pas nécessairement intuitif, mais il y a plusieurs codes possibles pour le même texte, donc.
Dans le cas du code QR du manga, c’est le masque numéro 4 qui a été choisi, avec une correction d’erreurs élevée et la version 2 des codes QR. J’ai utilisé ce générateur pour tenter divers paramètres – après avoir déterminé le masque et la version avec les deux articles cités plus haut – et j’ai réussi à obtenir un code QR identique, mais propre.
Et c’est là que je me suis rendu compte d’une de mes erreurs de départ : même avec un code QR propre, l’iPhone n’arrive pas à lire le contenu. Il m’indique « Aucune donnée utilisable trou… ». Je pense que j’aurais probablement perdu moins de temps en testant avec un autre logiciel pour lire le code (il existe de nombreuses applications, la ligne de commande n’est pas la seule solution).
Dans tous les cas, j’ai réussi à décoder le code QR récalcitrant, et ça m’a suffit. Au passage, une personne sur Reddit a eu le même réflexe que moi.
Il existe une application cachée dans iOS que l’on trouve via Spotlight, et qui permet de scanner un QR Code de manière bien plus efficace qu’avec l’application appareil photo. Cela peut s’avérer très efficace en cas de QR Code récalcitrant.
Plus d’infos ici : https://www.cnetfrance.fr/news/l-iphone-dispose-d-une-application-cachee-voici-comment-la-trouver-et-l-utiliser-39921255.htm
Sur iPhone j’utilise scandit qui scanne le premier qrcode de cette page facilement Greed:Snow