Scanner de Codes QR
Scannez des codes QR depuis votre appareil photo ou une image importée, entièrement dans votre navigateur.
Chargement de Scanner de Codes QR… Si rien ne se passe, activez JavaScript.
Les codes QR encodent des URL, des cartes de contact, des identifiants Wi-Fi, des informations de paiement et du texte arbitraire dans un code-barres bidimensionnel compact que n'importe quel appareil photo de smartphone peut lire en moins d'une seconde. Mais que faire si vous devez décoder un code QR à partir d'une capture d'écran, d'un fichier image ou d'un second écran, sans sortir votre téléphone ? Les navigateurs modernes exposent désormais l'API BarcodeDetector, une interface native qui traite les données d'image localement sur l'appareil, rendant possible un scan de QR entièrement basé sur le navigateur, sans aucun envoi vers un serveur ni application tierce.
Questions fréquentes
Les images scannées ou les images de l'appareil photo sont-elles envoyées à un serveur ?
Comment l'API BarcodeDetector fonctionne-t-elle techniquement ?
Quels navigateurs et formats de codes-barres sont pris en charge ?
Quelle autorisation le navigateur demande-t-il lors de l'utilisation de l'appareil photo ?
Puis-je scanner un code QR depuis une capture d'écran ou une image de mon ordinateur ?
Pourquoi le scan échoue-t-il parfois sur un code QR valide ?
En quoi est-ce différent de simplement utiliser l'appareil photo de mon téléphone ?
Puis-je l'utiliser pour vérifier un code QR que je viens de générer ?
Est-il sûr de scanner un code QR inconnu avec cet outil ?
L'outil fonctionne-t-il sur les navigateurs mobiles ?
À propos de Scanner de Codes QR
Les cas d'usage d'un scanner de QR basé sur le navigateur sont plus larges qu'il n'y paraît au premier abord. Les développeurs rencontrent fréquemment des codes QR dans la documentation, les maquettes de design, les flux d'authentification et les environnements de test où scanner avec un téléphone est peu pratique. Les professionnels de l'informatique vérifient les identifiants Wi-Fi encodés en QR avant de déployer une signalétique. Les chercheurs en sécurité inspectent les codes QR dans les campagnes de phishing en toute sécurité, en décodant l'URL sans cliquer dessus. Les créateurs de contenu et les responsables marketing décodent les codes QR des concurrents pour voir vers où ils redirigent. Quiconque reçoit une image avec un code QR intégré peut la déposer dans cet outil et en lire le contenu instantanément.
L'outil utilise deux voies de décodage selon la prise en charge du navigateur. Dans les navigateurs basés sur Chromium (Chrome 88+, Edge 88+, Opera 74+) et Safari 17+, il utilise l'API native `BarcodeDetector`, qui transmet les données d'image brutes au moteur de décodage intégré du navigateur, le même moteur que celui utilisé par l'application appareil photo du système d'exploitation. Dans les navigateurs qui ne prennent pas en charge `BarcodeDetector`, il se rabat sur une implémentation JavaScript. Dans les deux cas, les données d'image sont traitées entièrement sur votre appareil ; rien n'est envoyé vers un serveur. Pour le mode appareil photo, l'outil utilise l'API `getUserMedia` pour accéder au flux de votre webcam, traite les images localement et arrête le flux dès que vous quittez la page.
Pour de meilleurs résultats lors de l'import d'une image, utilisez une version à fort contraste du code avec au moins 10 pixels par module (chaque carré noir ou blanc). Les images JPEG compressées peuvent introduire des artefacts aux frontières des modules qui perturbent les décodeurs ; les fichiers PNG se décodent de manière plus fiable. Si un scan échoue, essayez d'augmenter la luminosité et le contraste de l'image dans un éditeur d'images avant de l'importer. Pour le scan en direct par l'appareil photo, assurez-vous d'un éclairage uniforme sans reflet prononcé sur la surface du code, et tenez l'appareil stable à une distance où le code entier remplit environ la moitié du cadre.
Des caméras qui lisent des codes : comment le scan de codes-barres dans le navigateur est devenu possible
Pendant la majeure partie des 70 ans d'histoire du code-barres, en lire un nécessitait du matériel spécialisé : des scanners laser dans les supermarchés, des lecteurs portatifs dédiés dans les entrepôts, ou au minimum une application mobile native avec un accès direct à l'appareil photo. L'idée qu'une page web puisse décoder un code-barres en temps réel sans aucun logiciel installé aurait semblé invraisemblable encore en 2015. Le changement est venu de deux évolutions convergentes : l'amélioration rapide des performances des GPU mobiles et l'accord des éditeurs de navigateurs pour normaliser l'accès aux caméras des appareils via l'API `getUserMedia`, qui a atteint une prise en charge généralisée vers 2016.
Les premiers scanners de QR basés sur le navigateur reposaient entièrement sur des bibliothèques JavaScript qui implémentaient l'algorithme de décodage Reed-Solomon de manière logicielle. Ils fonctionnaient mais étaient lents, gourmands en CPU et sujets à l'échec sur des images peu contrastées ou légèrement floues. L'amélioration décisive est venue lorsque Google a proposé la Shape Detection API, ensuite affinée en l'API BarcodeDetector, qui expose les mêmes pipelines d'analyse d'image accélérés par le matériel que ceux utilisés par les applications natives. En déléguant aux frameworks Vision ou ML Kit du système d'exploitation, la vitesse de détection s'est améliorée de plusieurs ordres de grandeur et la fiabilité a égalé celle des applications appareil photo natives.
L'API BarcodeDetector a été livrée dans Chrome 83 en 2020 et représente une tendance plus large des navigateurs à absorber des capacités qui nécessitaient auparavant des applications natives : accès au système de fichiers, Bluetooth, USB, presse-papiers et désormais la vision par ordinateur. Chaque capacité normalisée réduit l'écart entre les applications web et les applications natives, même si les éditeurs de navigateurs sont en désaccord sur l'étendue de cet accès. La décision de Firefox de ne pas implémenter BarcodeDetector reflète un débat philosophique permanent sur la question de savoir si les navigateurs devraient exposer des API matérielles de bas niveau, un débat que le cas d'usage du scan de codes-barres rend concret et pratique.