logo ScanVIN.app Scan VIN
Langue
Choisir la langue
Le changement de langue conservera la sous-page actuelle.

Comment fonctionne notre scanner VIN ?

Comment fonctionne notre scanner VIN ? Saisir un numéro VIN à la main fait partie de ces petites tâches agaçantes qui, en cas d’erreur, entraînent de vraies pertes. C’était un 8 ou un B ? Un 5 ou un S ? Un seul caractère erroné et le rapport d’historique du véhicule revient vide – ou, pire, décrit la voiture de quelqu’un d’autre. C’est pour cela que nous avons conçu un scanner VIN qui fonctionne entièrement dans le navigateur de votre téléphone. Sans installer d’application, sans envoyer de photos. Dans cet article, nous allons montrer ce qui se passe réellement pendant les deux ou trois secondes entre le moment où vous pointez l’appareil photo sur le numéro VIN et celui où vous voyez le résultat – y compris quelques points qui nous ont nous‑mêmes surpris pendant le développement.

Deux réseaux neuronaux, une seule tâche

Lorsque vous touchez « Scanner », votre navigateur télécharge deux petits modèles d’IA (au total environ 13 Mo – mis en cache après la première visite) et les exécute localement via WebAssembly. Chacun a un rôle très précis.

Le repéreur. Le premier modèle est un détecteur d’objets de la famille YOLO que nous avons entraîné pour faire exactement une chose : trouver le numéro VIN dans une image provenant de l’appareil photo. Pas « trouver du texte » – trouver un VIN. Il a vu des numéros VIN sur des plaques derrière le pare‑brise, des étiquettes sur le montant de porte, frappés à nu dans le métal sur les tourelles d’amortisseurs, ainsi que sur des certificats d’immatriculation imprimés, et il sait donc faire la différence entre un numéro VIN, une plaque d’immatriculation ou un numéro de pièce pris au hasard. Point important : il ne se contente pas de tracer un cadre autour du VIN – il renvoie un cadre pivoté, ce qui lui donne l’angle exact du texte, même si vous tenez le téléphone de travers ou photographiez le compartiment moteur de côté. Lecteur. La bande de pixels découpée et redressée est ensuite envoyée vers un deuxième modèle : un réseau de reconnaissance de texte de la famille PaddleOCR, que nous avons affiné spécialement pour les numéros VIN. Un modèle OCR universel doit prendre en compte des milliers de caractères – le nôtre n’en connaît que 33.

Pourquoi seulement 33 caractères ? Une curiosité de 1981

Les lettres I, O et Q sont interdites dans les numéros VIN. La norme ISO de 1981 les a exclues justement parce qu’on peut trop facilement les confondre avec les chiffres 1 et 0 – sur le métal frappé, sur des autocollants délavés et (ironiquement) en OCR. Nous avons inscrit cette règle directement dans l’alphabet du modèle-lecteur. Il est physiquement incapable de produire un O – si un caractère semble circulaire, la réponse autorisée la plus proche est 0, et c’est bien ce qu’il renvoie. Toute une classe d’erreurs OCR classiques ne peut tout simplement pas se produire. C’est l’avantage unique le plus important d’un modèle ajusté pour les numéros VIN plutôt que d’un moteur OCR prêt à l’emploi.

Une seule photo, c’est de la supposition. La vidéo, c’est une preuve.

Très tôt, nous avons pris une décision qui a façonné tout le scanner : ne jamais faire confiance à une seule image. L’appareil photo de votre téléphone fournit une nouvelle image plusieurs fois par seconde ; au lieu de tout miser sur une seule prise, le scanner lit le numéro VIN encore et encore et laisse les images voter. Le résultat n’est accepté que lorsque des images indépendantes sont d’accord – et le seuil de « concordance » est flexible :

  • Si les mêmes 17 caractères apparaissent deux fois et que la somme de contrôle intégrée du VIN est correcte, nous acceptons le résultat presque immédiatement.
  • Pas de somme de contrôle ? (Plus de détails ci‑dessous.) Dans ce cas, nous attendons une troisième confirmation.
  • Si les images ne sont toujours pas d’accord sur un caractère, chaque candidat est pondéré en fonction du degré de confiance du lecteur – caractère par caractère. Cette dernière règle a prouvé sa valeur lors des tests. Dans l’un de nos clips de test – un certificat d’immatriculation en pleine lumière – un reflet a fait que le 0 du numéro de série ressemblait à un 8 sur plus de la moitié des images. De simples répétitions auraient sélectionné la mauvaise réponse. Mais le niveau de confiance du modèle pour ces 8 était faible, et le 0 a fini par l’emporter.

reste systématiquement plus faible que pour des lectures nettes de 0, et la logique de vote est la suivante : l’a détecté. Le scanner a simplement attendu une seconde de plus, le temps que les preuves se stabilisent – et il a renvoyé le bon numéro VIN.

Une somme de contrôle qui ne fonctionne que sur certains véhicules

Les numéros VIN intègrent un mécanisme de contrôle interne : la position 9 est un chiffre de contrôle calculé à partir des 16 autres caractères. C’est un excellent signal de vérification – lorsqu’il fonctionne. Mais il y a un piège : il n’est obligatoire que pour les véhicules vendus en Amérique du Nord. La plupart des VIN du marché européen ne l’utilisent pas du tout. C’est pourquoi notre scanner considère le chiffre de contrôle comme un bonus, jamais comme une exigence. Lorsqu’il correspond, nous pouvons valider le résultat plus rapidement. Lorsqu’il ne correspond pas, ce n’est pas une erreur – il s’agit probablement simplement d’un véhicule européen, et c’est alors le système de vote par trames qui prend le relais.

Votre numéro VIN ne quitte jamais votre téléphone

Il est important de le préciser clairement : les trames de la caméra sont traitées entièrement sur votre appareil. Les modèles d’IA sont téléchargés dans votre navigateur ; vos images ne sont jamais envoyées nulle part. Il n’y a aucun serveur qui effectue la reconnaissance, aucune photo stockée dans le cloud. La seule chose qui quitte votre téléphone est le numéro VIN final à 17 caractères – et uniquement lorsque vous passez à la page du rapport. Ce n’était pas uniquement une décision liée à la confidentialité. Grâce à cela, le scanner est également rapide (aucun aller-retour vers un serveur pour chaque trame) et fonctionne même avec un faible signal dans un parking souterrain – c’est-à-dire précisément là où vous vous trouvez le plus souvent à côté du numéro VIN.

À quoi cela ressemble-t-il en pratique

Dans nos tests, les numéros VIN sur le pare-brise, les étiquettes de porte, le VIN frappé sur la tourelle d’amortisseur, voire le certificat d’immatriculation – le scanner identifie généralement le bon numéro VIN en une à quatre secondes. Quelques conseils francs pour accélérer encore les choses :

  • L’éclairage est l’élément le plus important. Le bouton de la lampe torche n’existe pas sans raison – les numéros de VIN frappés dans le compartiment moteur en raffolent.
  • Approchez-vous. Le numéro de VIN doit à peu près remplir le cadre auxiliaire.
  • Ne cherchez pas l’immobilité parfaite. Vous n’avez pas besoin d’une main parfaitement stable – le système de vote a été conçu précisément pour les petits mouvements qu’effectue une vraie main.

Sous le capot, en bref

Pour les curieux sur le plan technique : la détection fonctionne sur un modèle basé sur YOLO exporté vers ONNX, la reconnaissance utilise un modèle PaddleOCR ajusté avec un alphabet limité aux VIN, et les deux s’exécutent dans le même environnement d’exécution WebAssembly (ONNX Runtime) à l’intérieur d’un web worker, ce qui permet à la page de rester réactive. La correction de perspective entre les deux modèles – le redressement de la bande du numéro de VIN lorsqu’elle est inclinée – repose sur les mêmes principes mathématiques que ceux utilisés par votre application de numérisation de documents. Tout le reste n’est qu’une ingénierie soignée autour d’un seul principe : des lectures peu coûteuses, effectuées fréquemment et vérifiées par la cohérence.

Apprendre au scanner à quoi ressemble un VIN

Récemment, nous avons ajouté un troisième « modèle » – et ce n’est pas un réseau neuronal. C’est une carte statistique de l’apparence des VIN réels, construite à partir de plus d’un demi-million de VIN authentiques issus des registres automobiles européens et américains.

Voici l’idée. Un VIN n’est pas une chaîne aléatoire – il a une grammaire. Les trois premiers caractères identifient le constructeur, les huit suivants encodent le modèle, l’année et l’usine, et chaque constructeur suit ses propres schémas rigides (Volkswagen adore WVWZZZ…, BMW a son propre dialecte). Ainsi, lorsque l’OCR lit WVW2ZZ…, notre modèle de langage sait qu’un 2 à cet endroit est des milliers de fois moins probable qu’un Z – et préfère discrètement la lecture que le constructeur aurait réellement frappée.

Au lieu de laisser le réseau de lecture choisir le seul caractère le plus probable à chaque position en espérant que tout se passe bien, le scanner explore désormais plusieurs lectures candidates à la fois (une technique appelée beam search) et évalue chacune d’elles à la fois selon ce que disent les pixels et selon ce que dit la grammaire du VIN. Le gain est le plus important précisément là où le scan est le plus difficile : les VIN frappés dans le métal nu, où un caractère voisin se glisse dans le cadrage ou un caractère usé disparaît. Sur notre clip de test le plus difficile, la proportion d’images lues parfaitement est passée d’environ 1 sur 9 à 3 sur 4.

Une leçon tirée des tests mérite d’être partagée : un lecteur plus intelligent est un lecteur plus cohérent – y compris lorsqu’il se trompe de manière cohérente. Au début, le scanner amélioré lisait mal un chiffre usé de la même façon image après image, et les images s’accordaient volontiers sur la mauvaise réponse. La solution a été de relever la barre : avec le modèle de langage actif, le système de vote exige désormais une confirmation indépendante supplémentaire avant d’accepter un résultat. La précision, c’est bien ; une précision digne de confiance, c’est le vrai produit.

Et dans la continuité de tout ce qui précède : le modèle de langage est un fichier de 190 Ko qui se télécharge avec les autres modèles et s’exécute entièrement sur votre téléphone. Votre VIN ne quitte toujours jamais votre appareil.

Essayez vous-même : pointez votre téléphone vers le coin du pare-brise de n’importe quelle voiture et scannez le numéro de VIN.

Scanner le VIN