Ce que Google Lens renvoie (et cache) quand on lui soumet une image What Google Lens returns (and hides) when you submit an image

Quand on soumet une image à Google Lens, le traitement commence avant que l'image ne quitte l'appareil. Des modèles de vision et d'OCR tournent localement, filtrent le contenu sensible, puis transmettent le résultat au serveur. En croisant l'interception des échanges réseau dans Chrome Desktop, la décompilation de l'application Android Google App et l'analyse du code source ouvert de Chromium, on découvre des structures non documentées publiquement : deux empreintes numériques calculées pour chaque image, un ancrage au Knowledge Graph, des objets détectés puis filtrés avant affichage, une blocklist de 22 catégories sensibles, des spécifications de traitement d'image précises, et des suggestions générées par modèle. Ce qui suit est issu de ce triple croisement.
When you submit an image to Google Lens, processing begins before the image leaves the device. Vision and OCR models run locally, filter sensitive content, then transmit results to the server. By cross-referencing network interception in Chrome Desktop, decompilation of the Android Google App, and analysis of the open-source Chromium code, we uncover publicly undocumented structures: two digital fingerprints computed for each image, Knowledge Graph anchoring, objects detected then filtered before display, a blocklist of 22 sensitive categories, precise image processing specifications, and model-generated search suggestions. What follows is derived from this triple cross-reference.
Deux empreintes numériques pour chaque imageTwo digital fingerprints for every image
La recherche d'images inversée est le cas d'usage fondateur de Lens : à partir d'une photo, trouver les images similaires dans l'index de Google. Le problème est l'échelle. L'index de Google Images est estimé à environ 136 milliards d'images. Comparer pixel par pixel est impensable.
Reverse image search is Lens's founding use case: starting from a photo, find similar images in Google's index. The problem is scale. Google Images' index is estimated at roughly 136 billion images. Pixel-by-pixel comparison is unthinkable.
La solution : réduire chaque image à une liste de 64 nombres décimaux, son empreinte visuelle. Deux photos du même objet sous des angles différents produisent des listes de nombres proches. Deux objets sans rapport produisent des listes éloignées. C'est ce vecteur compact qui rend la comparaison faisable en temps réel : au lieu de comparer des millions de pixels, on compare 64 nombres par similarité cosinus.
The solution: reduce each image to a list of 64 decimal numbers, its visual fingerprint. Two photos of the same object from different angles produce similar number lists. Two unrelated objects produce distant lists. This compact vector is what makes real-time comparison feasible: instead of comparing millions of pixels, you compare 64 numbers using cosine similarity.
En interceptant les réponses serveur de Lens, on observe que chaque image analysée produit un vecteur de 64 valeurs float32 et d'un hash d'image de 32 octets qui sert probablement à la déduplication.
By intercepting Lens server responses, we observe that each analyzed image produces a vector of 64 float32 values and a 32-byte image hash that likely serves for deduplication.
La dimensionnalité de 64 n'est pas arbitraire. Le Google Universal Image Embedding Challenge (Kaggle, 2022) imposait exactement 64 dimensions pour la reconnaissance d'instances visuelles. Ce challenge était co-organisé par Mario Lipovsky, ingénieur de l'équipe Google Lens. Les solutions gagnantes utilisaient des Vision Transformers avec projection vers 64-d. On retrouve donc en production la même dimensionnalité que dans la compétition pilotée par l'équipe Lens.
The 64 dimensionality is not arbitrary. The Google Universal Image Embedding Challenge (Kaggle, 2022) required exactly 64 dimensions for visual instance recognition. This challenge was co-organized by Mario Lipovsky, a Google Lens team engineer. Winning solutions used Vision Transformers with projection to 64-d. We thus find in production the same dimensionality as in the competition run by the Lens team.
L'encodeur visuel de production est vraisemblablement basé sur SigLIP (Google DeepMind, ICCV 2023), qui produit nativement des embeddings de 1 152 dimensions. Les 64 dimensions observées résultent d'une réduction par projection linéaire : un compromis entre richesse de représentation et coût d'indexation à l'échelle du web.
The production visual encoder is likely based on SigLIP (Google DeepMind, ICCV 2023), which natively produces 1,152-dimension embeddings. The observed 64 dimensions result from a learned linear projection: a trade-off between representation richness and indexing cost at web scale.
L'empreinte visuelle répond à "à quoi ça ressemble". L'empreinte sémantique répond à une autre question : "qu'est-ce que c'est". Un dessin de chat au crayon et une photo de chat en gros plan n'ont presque rien en commun visuellement, mais ils représentent la même chose. C'est cette capacité de compréhension que le second vecteur encode.
The visual fingerprint answers "what does it look like." The semantic fingerprint answers a different question: "what is it." A pencil drawing of a cat and a close-up photo of a cat have almost nothing in common visually, but they represent the same thing. It is this understanding capacity that the second vector encodes.
Concrètement, Lens calcule un second vecteur de 128 valeurs float32 pour chaque image. Ce vecteur capture le sens, la catégorie, le contexte de l'image. C'est ce qui permet à Lens de proposer des recherches liées à la "décoration scandinave" quand il voit une chaise en bois, et pas simplement des images qui ressemblent à cette chaise.
Concretely, Lens computes a second vector of 128 float32 values for each image. This vector captures the meaning, category, and context of the image. This is what allows Lens to suggest searches related to "Scandinavian furniture" when it sees a wooden chair, not just images that look like that chair.
La dimensionnalité double (128 vs 64) et le fait que ce vecteur capture des propriétés différentes pointent vers un modèle distinct, probablement issu de la famille PaLI (Pathways Language and Image). Le brevet US11782998B2 ("Embedding Based Retrieval for Image Search", 2020/2023) décrit formellement cette architecture à sous-réseaux d'embedding séparés pour les caractéristiques visuelles et textuelles.
The double dimensionality (128 vs 64) and the fact that this vector captures different properties point to a distinct model, likely from the PaLI family (Pathways Language and Image). Patent US11782998B2 ("Embedding Based Retrieval for Image Search", 2020/2023) formally describes this architecture with separate embedding sub-networks for visual and textual features.
La recherche de similarité utilise ScaNN (Scalable Nearest Neighbors, Google, ICML 2020), un pipeline en trois étapes : partitionnement k-means pour élaguer les clusters non pertinents, quantification vectorielle anisotrope pour compresser l'index, puis re-ranking des candidats. L'embedding 64-d sert au premier filtrage rapide dans l'index complet. L'embedding 128-d intervient probablement au re-ranking des top candidats.
Similarity search uses ScaNN (Scalable Nearest Neighbors, Google, ICML 2020), a three-stage pipeline: k-means partitioning to prune irrelevant clusters, anisotropic vector quantization to compress the index, then candidate re-ranking. The 64-d embedding serves for fast initial filtering across the full index. The 128-d embedding likely intervenes at the re-ranking stage for top candidates.
En appliquant la similarité cosinus entre nos sessions capturées, on vérifie la complémentarité attendue :
By applying cosine similarity across our captured sessions, we verify the expected complementarity:
| Similarité visuelleVisual similarity | Similarité sémantiqueSemantic similarity | InterprétationInterpretation |
|---|---|---|
| Haute (>80%)High (>80%) | Haute (>80%)High (>80%) | Même objet, conditions similairesSame object, similar conditions |
| HauteHigh | Basse (<50%)Low (<50%) | Visuellement proches mais sémantiquement différentsVisually close but semantically different |
| Basse (<50%)Low (<50%) | HauteHigh | Même concept, formes différentes (ex. : photo vs dessin d'un chat)Same concept, different forms (e.g. photo vs drawing of a cat) |
| BasseLow | BasseLow | Sans rapportUnrelated |
Les deux embeddings capturent des dimensions d'information orthogonales. L'analyse statistique montre une norme L2 proche de 1 pour les vecteurs sémantiques, confirmant une normalisation qui réduit la similarité cosinus à un produit scalaire, exactement ce que ScaNN optimise.
The two embeddings capture orthogonal information dimensions. Statistical analysis shows an L2 norm close to 1 for semantic vectors, confirming a normalization that reduces cosine similarity to a dot product, exactly what ScaNN optimizes.
Trois niveaux d'identification sémantiqueThree levels of semantic identification
Quand Lens reconnaît un objet, il ne produit pas simplement un label textuel. Il ancre sa reconnaissance dans le Knowledge Graph de Google en reliant l'objet à un noeud précis identifié par un MID (Machine ID), avec toutes ses propriétés et relations.
When Lens recognizes an object, it does not simply produce a text label. It anchors its recognition in Google's Knowledge Graph by linking the object to a precise node identified by a MID (Machine ID), with all its properties and relations.
Au-delà du MID, Lens produit trois niveaux d'identification sémantique :
Beyond the MID, Lens produces three levels of semantic identification:
Le nom canonique dans le Knowledge Graph. Technique et encyclopédique. Exemples : "Coca-Cola", "Morpheus", "Group of dogs", "Zero Wing"... C'est l'identifiant textuel univoque.
The canonical name in the Knowledge Graph. Technical and encyclopedic. Examples: "Coca-Cola", "Morpheus", "Group of dogs", "Zero Wing"... This is the unambiguous text identifier.
Un nom d'affichage alternatif. Exemples : "Coca-Cola logo", "Poster of Les Misérables (2018)", "Dog sitting"... Les exemples capturés montrent une hétérogénéité qui laisse penser que ces labels d'affichage sont extraits du contexte des pages intégrant ces images.
An alternative display name. Examples: "Coca-Cola logo", "Poster of Les Misérables (2018)", "Dog sitting"... Captured examples show a heterogeneity suggesting these display labels are extracted from the context of pages embedding these images.
La catégorie thématique, un cran d'abstraction au-dessus. Exemples : "Artificial intelligence", "World Wide Web", "Victor Hugo".
The thematic category, one level of abstraction above. Examples: "Artificial intelligence", "World Wide Web", "Victor Hugo".
Le moteur qui opère le matching entre objets détectés et entités Knowledge Graph s'appelle Cerebra. C'est un moteur NLU (Natural Language Understanding) qui, après la détection d'objets, recherche la correspondance la plus probable dans le Knowledge Graph.
The engine performing matching between detected objects and Knowledge Graph entities is called Cerebra. It is an NLU (Natural Language Understanding) engine that, after object detection, searches for the most probable match in the Knowledge Graph.
Les champs produits par Cerebra incluent :
Fields produced by Cerebra include:
KG_MID : identifiant du noeud Knowledge Graph: Knowledge Graph node identifierKG_TITLE : nom canonique de l'entité: canonical entity nameKG_TOPICALITY_SCORE : score de confiance du match entre l'objet détecté et l'entité KG: confidence score of the match between detected object and KG entityKG_LAT_LNG : coordonnées géographiques quand l'entité est localisable: geographic coordinates when the entity is locatableKG_COLLECTION_HRIDS : hiérarchies de catégories: category hierarchiesKG_DEEPLINKS : actions ou URIs associées (liens profonds vers des services Google): associated actions or URIs (deep links to Google services)Ce sont ces champs qui alimentent les trois niveaux d'identification décrits ci-dessus. Le KG_TOPICALITY_SCORE explique pourquoi certaines images reçoivent une identification complète et d'autres seulement un topic générique : le seuil de confiance n'est pas atteint.
These fields feed the three identification levels described above. The KG_TOPICALITY_SCORE explains why some images receive full identification while others only get a generic topic: the confidence threshold is not met.
Lens peut identifier une entité (nom + MID) sans retourner de carte de connaissance, et inversement. Ce découplage révèle que la reconnaissance d'entité (via embeddings visuels puis lookup Knowledge Graph) et la génération de cartes de connaissance sont des processus distincts avec des critères de déclenchement séparés. Google peut reconnaître ce qu'est un objet sans décider de montrer des informations dessus. La distinction pointe vers un mécanisme de filtrage éditorial opérant après la reconnaissance technique.Lens can identify an entity (name + MID) without returning a knowledge card, and vice versa. This decoupling reveals that entity recognition (via visual embeddings then Knowledge Graph lookup) and knowledge card generation are distinct processes with separate triggering criteria. Google can recognize what an object is without deciding to show information about it. This distinction points to an editorial filtering mechanism operating after technical recognition.
Des identifiants non consécutifs trahissent un filtrage silencieuxNon-consecutive identifiers betray silent filtering
Le détecteur d'objets de Lens s'appelle MOSS (Mobile One-Stage detector). C'est un modèle de 9.08 MB, de type YOLO/SSD optimisé pour le mobile, qui s'exécute directement sur l'appareil. Son corpus d'entraînement, basé sur Open Images Dataset v7, lui permet de reconnaître environ 20 000 classes d'objets.
Lens's object detector is called MOSS (Mobile One-Stage detector). It is a 9.08 MB model, YOLO/SSD-type optimized for mobile, running directly on-device. Its training corpus, based on Open Images Dataset v7, allows it to recognize approximately 20,000 object classes.
La détection est exhaustive : MOSS identifie tout ce qu'il peut dans l'image, avec des identifiants séquentiels. C'est en aval, via plusieurs couches de filtrage (détaillées dans la section suivante), que des objets sont supprimés avant affichage.
Detection is exhaustive: MOSS identifies everything it can in the image, with sequential identifiers. It is downstream, through multiple filtering layers (detailed in the next section), that objects are removed before display.
Lens retourne une liste d'objets détectés pour chaque image. Chaque objet porte un identifiant au format DetectedObject-N. Mais les numéros ne se suivent pas.
Lens returns a list of detected objects for each image. Each object carries an identifier in the format DetectedObject-N. But the numbers are not consecutive.
Exemple concret : une image contenant 8 objets distincts ne retourne que 3 objets avec les IDs DetectedObject-0, DetectedObject-3, DetectedObject-5. Les objets 1, 2, 4, 6 et 7 ont été détectés puis éliminés avant transmission au client. Les IDs originaux sont préservés, ce qui trahit involontairement l'existence du filtrage et son ampleur.
Concrete example: an image containing 8 distinct objects returns only 3 objects with IDs DetectedObject-0, DetectedObject-3, DetectedObject-5. Objects 1, 2, 4, 6 and 7 were detected then eliminated before transmission to the client. The original IDs are preserved, which inadvertently betrays the existence and extent of the filtering.
Ce comportement indique un pipeline en deux temps : détection exhaustive par le modèle de vision (IDs séquentiels), puis filtrage côté serveur selon des critères multiples (seuil de confiance, pertinence commerciale, redondance spatiale) sans renumérotation des survivants.
This behavior indicates a two-stage pipeline: exhaustive detection by the vision model (sequential IDs), then server-side filtering based on multiple criteria (confidence threshold, commercial relevance, spatial redundancy) without renumbering the survivors.
La nomenclature des IDs révèle une classification interne :
The ID nomenclature reveals an internal classification:
DetectedObject-WholeImage : représente l'image entière. Toujours présent.: represents the whole image. Always present.DetectedObject-N : objet discret (produit, animal, bâtiment, vêtement...).: discrete object (product, animal, building, clothing...).SalientRegion-N : zone d'intérêt visuel qui n'est pas un objet délimité. Probablement issue d'un modèle d'attention distinct.: visual interest zone that is not a bounded object. Likely from a distinct attention model.text:* : région textuelle détectée par le pipeline OCR.: text region detected by the OCR pipeline.Dans l'interface Lens, l'utilisateur peut cliquer sur des zones de l'image pour déclencher une recherche ciblée, mais il ne sait pas à l'avance quelles zones sont cliquables. L'interface ne dessine pas les bounding boxes. En réalité, ces zones sont pré-calculées côté serveur et transmises au client avec des coordonnées précises (centre, dimensions, rotation) et un flag selectable. En décortiquant les réponses serveur, on peut reconstituer la carte complète des zones d'intérêt que Google a identifiées dans l'image.
In the Lens interface, users can click on image zones to trigger a targeted search, but they do not know in advance which zones are clickable. The interface does not draw bounding boxes. In reality, these zones are pre-computed server-side and transmitted to the client with precise coordinates (center, dimensions, rotation) and a selectable flag. By dissecting server responses, we can reconstruct the complete map of interest zones that Google identified in the image.
Quand l'utilisateur clique dans une zone sélectionnable, le système transmet les coordonnées au serveur, apparie le clic à l'objet détecté le plus proche, déclenche une recherche contextuelle pour cet objet spécifique, et contextualise les suggestions d'autocomplétion à cet objet. Le tout au sein de la même session.
When the user clicks within a selectable zone, the system transmits the coordinates to the server, matches the click to the nearest detected object, triggers a contextual search for that specific object, and contextualizes autocomplete suggestions to that object. All within the same session.
L'utilisateur peut aussi cliquer sur n'importe quelle autre zone de l'image, mais celle-ci ne correspondra pas à un objet pré-identifié et ancré dans le Knowledge Graph. La recherche déclenchée sera alors générique, basée sur le recadrage visuel de la zone sélectionnée, sans bénéficier de l'enrichissement sémantique (entité, MID, suggestions contextualisées) réservé aux objets détectés.
The user can also click on any other area of the image, but it will not correspond to a pre-identified object anchored in the Knowledge Graph. The triggered search will then be generic, based on the visual crop of the selected area, without benefiting from the semantic enrichment (entity, MID, contextualized suggestions) reserved for detected objects.
Ce que MOSS détecte mais ne transmet pasWhat MOSS detects but does not transmit
Le fichier de configuration additional_objects_filtering_config, extrait de l'APK Android, contient une liste de 22 identifiants MID correspondant à des catégories d'objets que MOSS est capable de détecter mais dont les résultats sont supprimés côté client, avant toute transmission au serveur.
The configuration file additional_objects_filtering_config, extracted from the Android APK, contains a list of 22 MID identifiers corresponding to object categories that MOSS can detect but whose results are removed client-side, before any server transmission.
En croisant ces MIDs avec les fichiers de classification d'Open Images Dataset (v6 et v7), on obtient le mapping suivant :
By cross-referencing these MIDs with Open Images Dataset classification files (v6 and v7), we obtain the following mapping:
| MID | CatégorieCategory | Type |
|---|---|---|
/m/0gxl3 | Handgun | ArmeWeapon |
/m/06c54 | Rifle | ArmeWeapon |
/m/06nrc | Shotgun | ArmeWeapon |
/m/04ctx | Knife | ArmeWeapon |
/m/07cmd | Tank | ArmeWeapon |
/m/06y5r | Sword | ArmeWeapon |
/m/020kz | Cannon | ArmeWeapon |
/m/09rvcxw | Rocket | ArmeWeapon |
/m/01g3x7 | Bow and arrow | ArmeWeapon |
/m/0c2jj | Axe | ArmeWeapon |
/m/083kb | Weapon | Arme (générique)Weapon (generic) |
/m/0bg7b | Shield | Arme / défenseWeapon / defense |
/m/012ysf | Syringe | MédicalMedical |
/m/01xgg_ | Medical equipment | MédicalMedical |
/m/05441v | Crutch | MédicalMedical |
/m/054xkw | Personal flotation device | SécuritéSafety |
/m/012pld | Sex toy | AdulteAdult |
/m/012sqm | GodemichéDildo | AdulteAdult |
/m/02621mk | VibromasseurVibrator | AdulteAdult |
/j/3s1vm2 | Taxonomie privée GoogleGoogle private taxonomy | SafeSearch |
/j/1mscwj | Taxonomie privée GoogleGoogle private taxonomy | SafeSearch |
/j/bzqyr6 | Taxonomie privée GoogleGoogle private taxonomy | SafeSearch |
La répartition révèle trois blocs de préoccupation : armes (12 catégories, de l'arme de poing au char d'assaut), contenu adulte (3 catégories), et matériel médical (3 catégories). Les trois MIDs en /j/ appartiennent à une taxonomie privée Google, probablement liée au système SafeSearch (nudité, drogues, violence graphique). Un gilet de sauvetage est aussi filtré, probablement pour éviter les faux positifs sur des scènes de noyade ou d'accident.
The breakdown reveals three blocks of concern: weapons (12 categories, from handgun to tank), adult content (3 categories), and medical equipment (3 categories). The three /j/ MIDs belong to a private Google taxonomy, likely related to the SafeSearch system (nudity, drugs, graphic violence). A personal flotation device is also filtered, probably to avoid false positives on drowning or accident scenes.
Le filtrage est exécuté côté client. Au total, trois mécanismes opèrent avant que les résultats n'atteignent le serveur :
The filtering is executed client-side. In total, three mechanisms operate before results reach the server:
| MécanismeMechanism | NiveauLevel | FonctionnementOperation |
|---|---|---|
| Blocklist MIDsMID Blocklist | Par catégorieBy category | 22 catégories bloquées par identifiant (additional_objects_filtering_config)22 categories blocked by identifier (additional_objects_filtering_config) |
| Saillance visuelleVisual saliency | Par prominenceBy prominence | Seuil de saillance visuelle (visual_saliency_filtering_config)Visual saliency threshold (visual_saliency_filtering_config) |
| Classificateur de sensibilitéSensitivity classifier | ML on-deviceML on-device | Modèle TFLite de 1.64 MB, classification ML du contenu1.64 MB TFLite model, ML content classification |
MOSS reconnaît les armes, le matériel médical et le contenu adulte. Mais au lieu de ne pas les détecter, il les détecte et les supprime. Cette architecture à détection puis filtrage signifie que la capacité de reconnaissance existe : c'est la politique d'affichage qui décide de ce qui atteint l'utilisateur. Les identifiants non séquentiels observés dans la section précédente (DetectedObject-0, -3, -5) sont la conséquence directe de cette suppression : les IDs originaux sont préservés, trahissant involontairement l'ampleur du filtrage.MOSS recognizes weapons, medical equipment and adult content. But instead of not detecting them, it detects and removes them. This detect-then-filter architecture means the recognition capability exists: it is the display policy that decides what reaches the user. The non-sequential identifiers observed in the previous section (DetectedObject-0, -3, -5) are the direct consequence of this removal: original IDs are preserved, inadvertently betraying the extent of filtering.
Lens utilise le Federated Learning pour améliorer ses modèles sans transmettre les images brutes des utilisateurs. Le code Android contient un service dédié (lens.federatedanalytics.ExampleStoreService) et une base locale (federated_analytics.db). Seuls les gradients agrégés sont transmis, pas les images. Les modèles MOSS, LOTS et le classificateur de sensibilité bénéficient de ce mécanisme d'entraînement distribué respectueux de la vie privée.Lens uses Federated Learning to improve its models without transmitting users' raw images. The Android code contains a dedicated service (lens.federatedanalytics.ExampleStoreService) and a local database (federated_analytics.db). Only aggregated gradients are transmitted, not images. The MOSS, LOTS, and sensitivity classifier models benefit from this privacy-respecting distributed training mechanism.
Un pipeline on-device en 7 étapes, 17 écritures, 30+ systèmes détectésA 7-step on-device pipeline, 17 scripts, 30+ systems detected
Le pipeline OCR de Lens s'appelle LOTS (Lens On-device Text Stack), version 8. Il s'exécute entièrement sur l'appareil, avant toute communication avec le serveur. C'est un pipeline en sept étapes :
Lens's OCR pipeline is called LOTS (Lens On-device Text Stack), version 8. It runs entirely on-device, before any server communication. It is a seven-step pipeline:
| ÉtapeStep | Nom interneInternal name | FonctionFunction |
|---|---|---|
| 1 | Aksara | Analyse de mise en page (Region Proposal Network)Layout analysis (Region Proposal Network) |
| 2 | GOCR | Détection de zones de texte (Group RPN)Text zone detection (Group RPN) |
| 3 | Script Detector | Identification de l'écriture, direction (LTR/RTL), style (manuscrit vs imprimé) . ConvNeXt multi-head, 3 sorties simultanéesScript identification, direction (LTR/RTL), style (handwritten vs printed) . ConvNeXt multi-head, 3 simultaneous outputs |
| 4 | Line Selection | Filtrage des lignes pertinentesRelevant line filtering |
| 5 | Line Recognition | 16 reconnaisseurs TFLite par écriture + 1 LSTM (grec)16 TFLite recognizers per script + 1 LSTM (Greek) |
| 6 | FST | Correction orthographique (Finite State Transducer) . 11 langues : EN, DE, FR, ES, IT, PT, NL, PL, RU, TR, CSSpell correction (Finite State Transducer) . 11 languages: EN, DE, FR, ES, IT, PT, NL, PL, RU, TR, CS |
| 7 | Transliteration | 14 modèles (ar, bn, el, gu, hi, ja, kn, ko, mr, ta, te, th, ur, zh)14 models (ar, bn, el, gu, hi, ja, kn, ko, mr, ta, te, th, ur, zh) |
Le détecteur de script est le composant le plus remarquable : il identifie en une seule passe l'écriture, la direction de lecture et le style d'écriture. Il reconnaît plus de 30 systèmes d'écriture, incluant des scripts rares (copte, arménien, myanmar, tibétain, cherokee). 17 écritures disposent d'une reconnaissance complète avec reconnaisseur de lignes dédié : latin, arabe, bengali, cyrillique, devanagari, géorgien, grec, gujarati, chinois (hanzi), hébreu, japonais, kannada, coréen, malayalam, tamoul, telugu, thai.
The script detector is the most remarkable component: it identifies in a single pass the writing system, reading direction and writing style. It recognizes over 30 writing systems, including rare scripts (Coptic, Armenian, Myanmar, Tibetan, Cherokee). 17 scripts have full recognition with dedicated line recognizers: Latin, Arabic, Bengali, Cyrillic, Devanagari, Georgian, Greek, Gujarati, Chinese (Hanzi), Hebrew, Japanese, Kannada, Korean, Malayalam, Tamil, Telugu, Thai.
Lens retourne les données OCR sous forme structurée : langue détectée (identifiant comme "fr" ou "en"), tokens textuels avec position (centre X/Y, largeur, hauteur, rotation, confiance en coordonnées normalisées 0-1), et texte complet reconstitué.
Lens returns OCR data in structured form: detected language (identifier such as "fr" or "en"), text tokens with position (center X/Y, width, height, rotation, confidence in normalized 0-1 coordinates), and reconstructed complete text.
Un artefact d'implémentation : des espaces de fin inconsistants dans l'identifiant de langue ("fr " vs "fr"), signe d'une normalisation incomplète en sortie du modèle.
An implementation artifact: inconsistent trailing spaces in the language identifier ("fr " vs "fr"), a sign of incomplete normalization in the model output.
Les données contiennent aussi des groupements de tokens qui servent deux objectifs distincts : sur les images de produits, ils dédupliquent les occurrences du même texte (nom de marque sur le produit et sur l'emballage) ; sur le contenu non commercial, ils lient des unités sémantiques (composantes d'une date, segments d'adresse). Ce double usage indique que le traitement OCR est conditionné par la classification sémantique de l'image.
The data also contains token groupings that serve two distinct purposes: on product images, they deduplicate occurrences of the same text (brand name on the product and on the packaging); on non-commercial content, they link semantic units (date components, address segments). This dual usage indicates that OCR processing is conditioned by the image's semantic classification.
Les paramètres extraits du code source de ChromiumParameters extracted from Chromium source code
lens_features.cc)Complete parameters (lens_features.cc)| ParamètreParameter | ValeurValue | ImplicationImplication |
|---|---|---|
| Compression JPEGJPEG compression | 40 | Images fortement compressées avant uploadImages heavily compressed before upload |
| Qualité capture initialeInitial capture quality | 90 | Screenshot haute qualité avant compressionHigh-quality screenshot before compression |
| Surface maximaleMaximum surface | 1 500 000 px | Au-delà : downscale automatiqueBeyond: automatic downscale |
| Dimensions maximalesMaximum dimensions | 1 600 x 1 600 px | Cap dur, envoyer plus grand est inutileHard cap, sending larger is useless |
| Seuil ViT minimumViT minimum threshold | 384 x 384 px | Seuil minimal du Vision TransformerVision Transformer minimum threshold |
| Timeout serveurServer timeout | 10 000 ms | 10 secondes max pour le résultat10 seconds max for results |
| Timeout contenu pagePage content timeout | 60 000 ms | 1 minute pour gros contenus (PDF)1 minute for large content (PDF) |
| Taille chunk uploadUpload chunk size | 2 MiB | Par morceauPer chunk |
| Limite upload totaleTotal upload limit | 200 MB | Maximum absoluAbsolute maximum |
| Durée sessionSession lifetime | 30 min | Cache du gsessionidgsessionid cache |
| Limite texte PDFPDF text limit | 5 000 caractères | Pour la searchbox contextuelleFor contextual searchbox |
Entre 384 px (seuil de reconnaissance) et 1 600 px (cap de downscale), la plage utile est étroite. En dessous, le modèle n'a pas assez de signal. Au-dessus, l'image est réduite puis compressée à qualité 40. La résolution n'est pas un atout au-delà du cap : ce qui compte, c'est la lisibilité du sujet à basse qualité. Un produit bien cadré à 800x800 surpassera une photo 4K mal exposée.Between 384 px (recognition threshold) and 1,600 px (downscale cap), the useful range is narrow. Below, the model lacks signal. Above, the image is downscaled then compressed to quality 40. Resolution is not an asset beyond the cap: what matters is subject legibility at low quality. A well-framed product at 800x800 will outperform a poorly exposed 4K photo.
Un système de génération fondamentalement différentA fundamentally different generation system
Durant nos analyses, nous avons capturé deux formats de réponse distincts :
During our analyses, we captured two distinct response formats:
Les deux formats coexistent dans la même session. Le premier est spécifique à Lens, le second est hérité du pipeline d'autocomplétion textuel standard, contextualisé par l'image.
Both formats coexist within the same session. The first is Lens-specific, the second is inherited from the standard text autocomplete pipeline, contextualized by the image.
Les Google Suggest classiques sont issus de logs de requêtes réelles : ce sont des recherches que des humains ont effectivement tapées, agrégées et classées par fréquence. Les suggestions Lens sont d'une autre nature.
Classic Google Suggest comes from real query logs: these are searches that humans actually typed, aggregated and ranked by frequency. Lens suggestions are of a different nature.
Les suggestions en français contiennent des erreurs de genre grammatical typiques d'un modèle multilingue entraîné sur un corpus majoritairement anglophone : "c'est quoi cette animal" (au lieu de "cet animal"), "c'est quoi cette serpent" (au lieu de "ce serpent"), "quel race de lapin" (au lieu de "quelle"). Un pipeline basé sur des requêtes humaines reproduirait les fautes des utilisateurs ; ici, ce sont les erreurs propres du modèle sur le genre grammatical français. Ce type d'erreur est cohérent avec un modèle de type PaLI ou Gemini qui génère les suggestions plutôt que de les piocher dans un historique de requêtes.
French suggestions contain grammatical gender errors typical of a multilingual model trained on a predominantly English corpus: "c'est quoi cette animal" (instead of "cet animal"), "c'est quoi cette serpent" (instead of "ce serpent"), "quel race de lapin" (instead of "quelle"). A pipeline based on human queries would reproduce user typos; here, these are the model's own errors on French grammatical gender. This type of error is consistent with a PaLI or Gemini-type model that generates suggestions rather than picking them from a query history.
La catégorie « devoirs » n'est pas un effet de bord. L'APK Android contient un modèle ML dédié de 2.01 MB (TFLite, 5 classes de sortie) qui détecte spécifiquement les devoirs, problèmes mathématiques et exercices. Ce modèle tourne on-device et conditionne le type de suggestions générées. L'existence d'un pipeline séparé pour le contenu éducatif explique pourquoi les suggestions « answer key » et « corrigé de l'exercice » forment une famille distincte, et pourquoi elles apparaissent parfois sur des images qui ne sont pas des exercices scolaires.
The "homework" category is not a side effect. The Android APK contains a dedicated 2.01 MB ML model (TFLite, 5 output classes) that specifically detects homework, math problems and exercises. This model runs on-device and conditions the type of suggestions generated. The existence of a separate pipeline for educational content explains why "answer key" and "corrigé de l'exercice" suggestions form a distinct family, and why they sometimes appear on images that are not school exercises.
Le code Android contient le subtype SUBTYPE_MULTIMODAL_MUM dans les suggestions visuelles, confirmant que MUM (Multitask Unified Model) participe à la génération. Un second subtype SUBTYPE_MULTIMODAL_DEEP_RETRIEVAL indique une recherche multimodale profonde. Le flag Chromium kLensAimSuggestions avec les options None, Contextual et Multimodal montre que les suggestions évoluent vers un mode IA natif.The Android code contains the subtype SUBTYPE_MULTIMODAL_MUM in visual suggestions, confirming that MUM (Multitask Unified Model) participates in generation. A second subtype SUBTYPE_MULTIMODAL_DEEP_RETRIEVAL indicates deep multimodal retrieval. The Chromium flag kLensAimSuggestions with options None, Contextual and Multimodal shows that suggestions are evolving toward a native AI mode.
Quand plusieurs objets sont détectés dans une image, chacun reçoit ses propres suggestions. Près de la moitié des suggestions du corpus sont rattachées à un objet source spécifique. La différenciation est nette et sémantique, pas simplement lexicale.
When multiple objects are detected in an image, each receives its own suggestions. Nearly half the suggestions in the corpus are linked to a specific source object. The differentiation is sharp and semantic, not merely lexical.
Session "Nutella Ice Cream" (2 objets) : la glace Nutella reçoit "where to buy", "price", "ingredients", "nutrition facts", "calories". Le bol en porcelaine danois Lyngby reçoit "target", "kohls", "crate and barrel", "pottery barn", "walmart". La glace reçoit des questions nutritionnelles. Le bol reçoit des enseignes de décoration haut de gamme.
"Nutella Ice Cream" session (2 objects): the Nutella ice cream gets "where to buy", "price", "ingredients", "nutrition facts", "calories". The Lyngby Danish porcelain bowl gets "target", "kohls", "crate and barrel", "pottery barn", "walmart". The ice cream receives nutritional questions. The bowl receives upscale home decor retailers.

Session "UEFA Champions League" (2 objets) : la compétition UEFA Champions League reçoit "history", "standings", "schedule", "fixtures". Le joueur Vinicius Junior reçoit "stats", "height", "girlfriend", "salary", "age", "weight". La compétition reçoit des suggestions d'événement sportif. Le joueur reçoit des suggestions biographiques de type "people".
"UEFA Champions League" session (2 objects): the UEFA Champions League competition gets "history", "standings", "schedule", "fixtures". The player Vinicius Junior gets "stats", "height", "girlfriend", "salary", "age", "weight". The competition receives sports event suggestions. The player receives "people"-type biographical suggestions.

Certaines suggestions apparaissent dans une majorité de sessions, quel que soit le sujet. C'est un noyau de base que le modèle produit par défaut.
Some suggestions appear in a majority of sessions regardless of subject. This is a base core that the model produces by default.
| Suggestion | FréquenceFrequency | Type |
|---|---|---|
| what is this | plus de la moitié des sessionsover half of sessions | IdentificationIdentification |
| what does this mean | fréquentfrequent | IdentificationIdentification |
| what is this called | fréquentfrequent | IdentificationIdentification |
| how much is it worth | fréquentfrequent | Commercial |
| price / prix | fréquentfrequent | Commercial |
| c'est quoi | fréquentfrequent | Identification (FR) |
| where is this place | fréquentfrequent | LocalisationLocation |
| amazon | courantcommon | Commercial |
| answer key | présentpresent | Homework |
"what is this" apparaît dans plus de la moitié des sessions. Ce socle universel mêle identification, commerce et localisation, les trois intents principaux de Lens. "answer key" est le pattern homework : il apparaît même pour des images qui ne sont pas des exercices scolaires.
"what is this" appears in over half of sessions. This universal base mixes identification, commerce and location, the three main Lens intents. "answer key" is the homework pattern: it appears even for images that are not school exercises.
Plusieurs suggestions suivent des schémas à trou instanciés par le modèle : price in {country}, what kind of {X} is this, comment s'appelle ce {X}, {retailer}. Ces templates confirment la génération par modèle avec des variables de localisation, de catégorie et d'enseigne.
Several suggestions follow fill-in-the-blank patterns instantiated by the model: price in {country}, what kind of {X} is this, comment s'appelle ce {X}, {retailer}. These templates confirm model generation with localization, category and retailer variables.
L'ensemble des suggestions du corpus se répartit en six familles :
All suggestions in the corpus fall into six families:
Systémique dans la présence, pas massif dans le volumeSystemic in presence, not massive in volume
Le biais n'est pas seulement observé, il est architecturé. Le code Android révèle une cascade dédiée VISUAL_SHOPPING_INTENT_CASCADE, un pipeline séparé qui évalue l'intent commercial de chaque image. Ce pipeline est distinct de la détection d'objets et des embeddings : c'est un classifieur d'intent spécialisé pour le commerce.
The bias is not merely observed, it is architected. The Android code reveals a dedicated cascade VISUAL_SHOPPING_INTENT_CASCADE, a separate pipeline that evaluates the commercial intent of each image. This pipeline is distinct from object detection and embeddings: it is an intent classifier specialized for commerce.
L'analyse quantitative des suggestions capturées montre un biais commercial récurrent :
Quantitative analysis of captured suggestions shows a recurring commercial bias:
| MétriqueMetric | ValeurValue |
|---|---|
| Suggestions avec intent commercialSuggestions with commercial intent | ~12% |
| Suggestions mentionnant une marque ou enseigneSuggestions mentioning a brand or retailer | ~5% |
| Sessions avec au moins une suggestion commercialeSessions with at least one commercial suggestion | ~70% |
12% de suggestions commerciales, c'est plus bas qu'on pourrait l'imaginer au premier regard. Mais la donnée qui compte est la couverture : 70% des sessions contiennent au moins une suggestion orientée achat. Le biais n'est pas massif dans le volume, il est systémique dans la présence.
12% commercial suggestions is lower than one might expect at first glance. But the number that matters is coverage: 70% of sessions contain at least one purchase-oriented suggestion. The bias is not massive in volume, it is systemic in presence.
Le challenge Kaggle co-organisé par l'équipe Lens imposait la reconnaissance dans 11 domaines : vêtements, produits emballés, meubles, jouets, voitures, monuments, vitrines de magasins, plats, oeuvres d'art, mèmes et illustrations.
The Kaggle challenge co-organized by the Lens team required recognition across 11 domains: clothing, packaged goods, furniture, toys, cars, landmarks, storefronts, dishes, artwork, memes and illustrations.
Sur ces 11 domaines, au moins 7 sont directement liés au commerce. Même les monuments et oeuvres d'art ont des applications touristiques et marchandes. Le modèle d'embedding 64-d est optimisé pour ces domaines. C'est un choix de design, pas un accident : l'embedding "voit" des produits achetables partout parce qu'il a été entraîné pour ça.
Of these 11 domains, at least 7 are directly commerce-related. Even landmarks and artwork have tourism and commercial applications. The 64-d embedding model is optimized for these domains. This is a design choice, not an accident: the embedding "sees" purchasable products everywhere because it was trained to do so.
Le Shopping Graph contenait plus de 45 milliards de fiches produit fin 2024, un chiffre dépassant 50 milliards début 2026 selon Sundar Pichai (keynote NRF, janvier 2026). Le graphe est alimenté par Google Merchant Center, le markup schema.org, un crawler dédié (Google StoreBot), les données fabricants, YouTube et les avis. Il comprend qu'une chemise disponible en 5 couleurs et 6 tailles est un seul produit avec 30 variantes.
The Shopping Graph contained over 45 billion product listings by late 2024, a figure exceeding 50 billion in early 2026 per Sundar Pichai (NRF keynote, January 2026). The graph is fed by Google Merchant Center, schema.org markup, a dedicated crawler (Google StoreBot), manufacturer data, YouTube and reviews. It understands that a shirt available in 5 colors and 6 sizes is one product with 30 variants.
Sa densité pourrait en partie expliquer le biais observé : pour de nombreuses catégories visuelles, le Shopping Graph est plus riche et structuré que le Knowledge Graph généraliste. Mais au-delà de l'explication technique, il y a une réalité commerciale. Lens est un outil de conversion pour Google. Quand Lens hésite entre une interprétation commerciale et une interprétation non commerciale, l'architecture et les incentives convergent vers la première.
Its density may partly explain the observed bias: for many visual categories, the Shopping Graph is richer and more structured than the generalist Knowledge Graph. But beyond the technical explanation, there is a commercial reality. Lens is a conversion tool for Google. When Lens hesitates between a commercial and a non-commercial interpretation, architecture and incentives converge toward the former.
Les images contenant des personnes illustrent bien ce mécanisme. Lens tend à détecter les vêtements et accessoires comme objets individuels plutôt que d'identifier la personne. Chaque pièce vestimentaire (veste, pantalon, chaussures, sac) devient un point d'entrée vers le Shopping Graph. Les métadonnées de suggestions incluent suggestDetail avec des champs structurés pour le prix et la disponibilité.
Images containing people illustrate this mechanism well. Lens tends to detect clothing and accessories as individual objects rather than identifying the person. Each clothing item (jacket, pants, shoes, bag) becomes an entry point to the Shopping Graph. Suggestion metadata include suggestDetail with structured fields for price and availability.
La capacité technique reste intacte ; seule la politique d'affichage changeTechnical capability remains intact; only display policy changes
Google Lens applique un filtre sur les résultats concernant les personnes. Quand on analyse le visage d'une personne qui n'est pas une célébrité, la page de résultats affiche "Les résultats concernant les personnes sont limités", les cartes de connaissance sont absentes ou minimales, un topic générique ("Person", "Face") peut être retourné mais pas d'entité nommée, et les suggestions sont restreintes à des requêtes génériques.
Google Lens applies a filter on results concerning people. When analyzing the face of a non-celebrity, the results page displays "Results about people are limited", knowledge cards are absent or minimal, a generic topic ("Person", "Face") may be returned but no named entity, and suggestions are restricted to generic queries.
Nuance : si la photo de la personne existe déjà dans l'index de Google (publiée sur un site web, un réseau social indexé, un article), Lens peut la retrouver et la connecter au nom de la personne même si celle-ci n'est pas une personnalité connue. Le filtre s'applique principalement aux photos inédites de personnes non publiques.
Nuance: if the person's photo already exists in Google's index (published on a website, an indexed social network, an article), Lens can find it and connect it to the person's name even if they are not a known public figure. The filter primarily applies to unpublished photos of non-public persons.
Ce filtrage est une protection logique de la vie privée : empêcher l'identification de personnes ordinaires à partir de leur visage. Le filtre est cependant asymétrique. Pour une personnalité publique (acteur, sportif, politicien), Lens retourne le nom, le MID Knowledge Graph, les cartes de connaissance et les entités liées. Les sessions capturées de Vinicius Junior, Valerie Maltais ou Victor Hugo reçoivent des suggestions biographiques (conjoint, net worth, career). Le système maintient une classification interne public/privé qui module la profondeur des résultats.
This filtering is a logical privacy protection: preventing ordinary people from being identified by their face. The filter is however asymmetric. For a public figure (actor, athlete, politician), Lens returns the name, Knowledge Graph MID, knowledge cards and related entities. Captured sessions of Vinicius Junior, Valerie Maltais or Victor Hugo receive biographical suggestions (spouse, net worth, career). The system maintains an internal public/private classification that modulates result depth.
Les embeddings sont toujours calculés, même quand les résultats sont bridés. Le topic "Person" ou "Face" confirme que le modèle a reconnu un visage. C'est en aval, au niveau de la présentation, que le filtre opère. La capacité technique reste intacte ; seule la politique d'affichage change. Le brevet fondateur US7565139B2 (Hartmut Neven, 2005) décrivait déjà une architecture à multi-moteurs incluant la reconnaissance faciale. La capacité existe dans l'architecture depuis l'origine. C'est le module de filtrage qui décide de la supprimer de la réponse.Embeddings are always computed, even when results are throttled. The topic "Person" or "Face" confirms the model recognized a face. It is downstream, at the presentation level, that the filter operates. Technical capability remains intact; only display policy changes. The foundational patent US7565139B2 (Hartmut Neven, 2005) already described a multi-engine architecture including facial recognition. The capability has existed in the architecture since the beginning. It is the filtering module that decides to remove it from the response.
Les politiques enterprise confirment ce mécanisme. La policy GenAiLensOverlaySettings expose trois niveaux :
Enterprise policies confirm this mechanism. The GenAiLensOverlaySettings policy exposes three levels:
| ValeurValue | ComportementBehavior |
|---|---|
0 - Allowed | Affichage complet des résultats LensFull display of Lens results |
1 - AllowedWithoutLogging | Affichage sans journalisation des analysesDisplay without logging analyses |
2 - Disabled | Lens overlay désactivéLens overlay disabled |
Les administrateurs IT peuvent donc configurer Chrome pour moduler le comportement de Lens à l'échelle d'une organisation, y compris supprimer la journalisation des analyses visuelles. Le niveau 1 (AllowedWithoutLogging) est particulièrement intéressant : il confirme que Google journalise par défaut les analyses Lens, et que cette journalisation peut être désactivée séparément de l'accès au service.
IT administrators can configure Chrome to modulate Lens behavior across an organization, including suppressing visual analysis logging. Level 1 (AllowedWithoutLogging) is particularly interesting: it confirms that Google logs Lens analyses by default, and that this logging can be disabled separately from service access.
Trois modes distincts encodés dans les URLs de résultatsThree distinct modes encoded in result URLs
lns_mode : le discriminateur techniqueThe lns_mode parameter: the technical discriminatorLes URLs de résultats Lens contiennent un paramètre clé : lns_mode. Ce paramètre, extrait du code Chromium (lens_overlay_url_builder.cc), encode le type d'analyse effectuée :
Lens result URLs contain a key parameter: lns_mode. This parameter, extracted from Chromium code (lens_overlay_url_builder.cc), encodes the type of analysis performed:
lns_mode |
udm |
SignificationMeaning | RésultatsResults |
|---|---|---|---|
text | - | Texte extrait par OCROCR-extracted text | Résultats textuels classiquesClassic text results |
un | 26 | Unimodal (image seule)Unimodal (image only) | Résultats visuels uniquementVisual results only |
mu | 24 | Multimodal (image + texte)Multimodal (image + text) | Résultats les plus richesRichest results |
Le paramètre source identifie le point d'entrée : chrome.cr.ctxi pour l'overlay Lens, chrome.cr.menu pour le menu contextuel. Le vsrid (Visual Search Request ID) contient un UUID encodé en Base64 qui identifie la requête. Le gsessionid permet de corréler les requêtes successives sur une même image pendant 30 minutes.
The source parameter identifies the entry point: chrome.cr.ctxi for the Lens overlay, chrome.cr.menu for the context menu. The vsrid (Visual Search Request ID) contains a Base64-encoded UUID identifying the request. The gsessionid correlates successive queries on the same image for 30 minutes.
Au-delà de cette distinction technique, l'analyse des suggestions et des résultats permet de déduire les intentions utilisateur que Lens cherche à couvrir :
Beyond this technical distinction, analysis of suggestions and results reveals the user intents that Lens seeks to cover:
Ces catégories ne sont pas documentées par Google, mais elles émergent clairement de la structure des suggestions générées et du comportement des résultats.
These categories are not documented by Google, but they clearly emerge from the structure of generated suggestions and result behavior.
Les paramètres de session contiennent aussi la zone de l'image sélectionnée par l'utilisateur (bounding box en coordonnées normalisées), les dimensions du viewport, et un identifiant de session qui permet de corréler les requêtes successives sur une même image (un clic sur un objet détecté porte le même identifiant que la recherche initiale).
Session parameters also contain the image zone selected by the user (bounding box in normalized coordinates), viewport dimensions, and a session identifier that allows correlating successive queries on the same image (a click on a detected object carries the same identifier as the initial search).
Ce que les mécanismes décrits changent concrètement pour le SEOWhat the described mechanisms concretely change for SEO
Un sujet par image, détouré ou dominant. Le modèle détecte des objets individuels et leur attribue des bounding boxes. Une image encombrée produit des objets filtrés (les IDs non consécutifs le prouvent). Un produit seul sur fond neutre maximise la probabilité de survie au filtrage post-détection.
One subject per image, cut out or dominant. The model detects individual objects and assigns bounding boxes. A cluttered image produces filtered objects (the non-consecutive IDs prove it). A product alone on a neutral background maximizes the probability of surviving post-detection filtering.
Angles multiples = entrées multiples dans l'index. L'embedding 64-d encode les caractéristiques visuelles spécifiques à un angle. Deux angles différents du même produit produisent deux vecteurs différents, donc deux points d'entrée pour la recherche inversée.
Multiple angles = multiple index entries. The 64-d embedding encodes visual characteristics specific to an angle. Two different angles of the same product produce two different vectors, hence two entry points for reverse search.
Au-delà de 1 600 px de côté, l'image est réduite. Le code Chromium (lens_features.cc) fixe un cap dur de 1 600 x 1 600 px et une surface maximale de 1 500 000 pixels. Au-delà, downscale automatique. L'image est ensuite compressée à JPEG qualité 40 avant analyse, les détails fins sont perdus. Le seuil minimal pour une bonne reconnaissance est de 384x384 px (seuil ViT). Entre 384 et 1 600 px, l'image est exploitable. En dessous ou au-dessus, c'est du gaspillage ou de la dégradation.
Beyond 1,600 px per side, the image is downscaled. Chromium code (lens_features.cc) sets a hard cap of 1,600 x 1,600 px and a maximum surface of 1,500,000 pixels. Beyond that, automatic downscaling. The image is then compressed to JPEG quality 40 before analysis, fine details are lost. The minimum threshold for good recognition is 384x384 px (ViT threshold). Between 384 and 1,600 px, the image is usable. Below or above, it's either waste or degradation.
Le timeout serveur est de 10 secondes. Si le serveur n'a pas produit de résultat en 10 000 ms, la requête échoue. Les images complexes avec de nombreux objets peuvent ne pas recevoir d'analyse complète.
The server timeout is 10 seconds. If the server hasn't produced a result in 10,000 ms, the request fails. Complex images with many objects may not receive a full analysis.
Le contexte textuel de la page nourrit l'embedding sémantique. Si le modèle est de la famille PaLI (Pathways Language and Image), il encode conjointement image et texte. Le texte autour de l'image (titre, légende, paragraphe englobant, alt text) n'est pas un signal SEO classique : c'est un signal d'entraînement du vecteur sémantique. Un alt text générique ("photo-produit.jpg") produit un embedding sémantique pauvre. Un alt text précis ("fauteuil-scandinave-chene-naturel-design-danois") enrichit l'ancrage sémantique.
The page's textual context feeds the semantic embedding. If the model is from the PaLI family (Pathways Language and Image), it jointly encodes image and text. The text surrounding the image (title, caption, enclosing paragraph, alt text) is not a classic SEO signal: it is a training signal for the semantic vector. A generic alt text ("product-photo.jpg") produces a poor semantic embedding. A precise alt text ("scandinavian-armchair-natural-oak-danish-design") enriches the semantic anchoring.
Les mots que vous n'utilisez pas limitent les suggestions que Lens peut générer. L'analyse des suggestions montre qu'elles sont contextualisées par objet détecté et par catégorie sémantique. Si votre page ne mentionne jamais "scandinave" ou "danois", le modèle aura moins de matière pour ancrer l'image dans cette catégorie.
The words you don't use limit the suggestions Lens can generate. Suggestion analysis shows they are contextualized per detected object and semantic category. If your page never mentions "Scandinavian" or "Danish", the model will have less material to anchor the image in that category.
Avoir un noeud KG est un pré-requis, pas un bonus. Si votre marque, votre produit ou votre personne n'a pas de noeud Knowledge Graph (identifiable par un MID), Lens ne peut pas ancrer sa reconnaissance. Les trois niveaux d'identification (entity name, display label, topic) nécessitent tous un noeud KG pour être complets.
Having a KG node is a prerequisite, not a bonus. If your brand, product or person has no Knowledge Graph node (identifiable by a MID), Lens cannot anchor its recognition. All three identification levels (entity name, display label, topic) require a KG node to be complete.
Les chemins d'entrée vers le Knowledge Graph sont connus. Une fiche Wikidata avec les identifiants externes appropriés, une page Wikipedia notoire, un profil Google Business vérifié, un flux Merchant Center complet.
The entry paths to the Knowledge Graph are known. A Wikidata entry with appropriate external identifiers, a notable Wikipedia page, a verified Google Business Profile, a complete Merchant Center feed.
Le balisage schema.org sameAs est le pont explicite. Le sameAs pointant vers Wikidata, Wikipedia, les réseaux sociaux officiels, crée les connexions que le Knowledge Graph peut ingérer. Sans sameAs, Google doit inférer la correspondance. Avec, vous la déclarez.
The schema.org sameAs markup is the explicit bridge. sameAs pointing to Wikidata, Wikipedia, official social profiles creates the connections that the Knowledge Graph can ingest. Without sameAs, Google must infer the correspondence. With it, you declare it.
Le schema.org Product de vos pages et votre flux Merchant Center alimentent le même graphe. Si votre fiche produit est absente ou incomplète dans le Merchant Center, votre produit est invisible pour ce pipeline, même si l'image est bien optimisée.
Your pages' schema.org Product and your Merchant Center feed serve the same graph. If your product listing is absent or incomplete in Merchant Center, your product is invisible to this pipeline, even if the image is well optimized.
Product schema complet avec name, image, brand, sku, offers (prix, devise, disponibilité), ProductGroup et variantes. Parité stricte entre les images du flux Merchant Center et les images sur les pages produit. Google associe les images par correspondance visuelle (c'est exactement ce que fait l'embedding 64-d). Les variantes comptent : le balisage ProductGroup + hasVariant + variesBy (taille, couleur, matière) est le mécanisme déclaratif.
Complete Product schema with name, image, brand, sku, offers (price, currency, availability), ProductGroup and variants. Strict parity between Merchant Center feed images and product page images. Google matches images by visual correspondence (this is exactly what the 64-d embedding does). Variants matter: ProductGroup + hasVariant + variesBy (size, color, material) markup is the declarative mechanism.
Le texte sur le packaging est indexé. Les marques, ingrédients, instructions visibles sur un produit sont lus et utilisés comme termes de recherche par Lens. Les photos de packaging réel (pas les rendus 3D épurés sans texte) sont plus riches en signaux.
Text on packaging is indexed. Brands, ingredients, visible instructions on a product are read and used as search terms by Lens. Photos of real packaging (not clean 3D renders without text) are richer in signals.
Le texte doit être lisible par OCR, pas seulement par l'oeil humain. Un seuil de 30 pixels minimum de hauteur de caractère et un contraste suffisant sont nécessaires. Les polices stylisées, les textes sur fonds complexes, les tailles trop petites dégradent la reconnaissance.
Text must be OCR-readable, not just human-readable. A minimum 30-pixel character height threshold and sufficient contrast are necessary. Stylized fonts, text on complex backgrounds, and too-small sizes degrade recognition.
Les groupements OCR dédupliquent. Le nom de marque doit être cohérent entre le produit physique et les métadonnées.
OCR groupings deduplicate. The brand name must be consistent between the physical product and the metadata.
Les templates paramétriques révèlent la structure des intents que Google associe à chaque catégorie :
Parametric templates reveal the intent structure that Google associates with each category:
Si vos pages produit ne contiennent pas de prix visible, d'information de disponibilité et de mentions d'enseignes, vous ne répondez pas aux intents que Lens génère pour vos images.
If your product pages don't contain a visible price, availability information and retailer mentions, you're not answering the intents Lens generates for your images.
"what is this" (plus de la moitié des sessions), "price" (environ 1/4), "where is this place" (environ 1/5) : le socle universel des suggestions définit les trois questions auxquelles toute page contenant une image devrait pouvoir répondre. Qu'est-ce que c'est (identification). Combien ça coûte (commercial). Où est-ce (localisation).
"what is this" (over half of sessions), "price" (about 1/4), "where is this place" (about 1/5): the universal suggestion base defines the three questions any page containing an image should be able to answer. What is it (identification). How much does it cost (commercial). Where is it (location).
| Domaine | Action | Pourquoi |
|---|---|---|
| Socle technique | Images WebP/AVIF, sujet lisible à 384x384 px, max 1 600x1 600 px | Seuil ViT et cap dur Chromium. Au-delà, downscale + JPEG qualité 40 |
| Noms de fichiers descriptifs, alt text riche et contextuellement précis | Signal d'entraînement du vecteur sémantique 128-d | |
| Texte environnant (titre, légende, paragraphe) aligné avec le contenu de l'image | Enrichit l'ancrage sémantique du modèle PaLI/Gemini | |
| Texte dans l'image lisible par OCR (>30 px, contraste suffisant) | Le pipeline OCR alimente les suggestions | |
| Knowledge Graph | Fiche Wikidata complète avec identifiants externes | Pré-requis pour l'identification par entity name + MID |
| Schema.org avec sameAs vers Wikidata, Wikipedia, profils officiels | Pont explicite entre page web et noeud KG | |
| Typage schema.org correct (Product, Person, CreativeWork, LocalBusiness) | Conditionne le topic retourné par Lens | |
| Pipeline Shopping | Product schema complet (name, image, brand, sku, offers) | Construit le noeud dans le Shopping Graph |
| ProductGroup + hasVariant + variesBy pour les variantes | Le Shopping Graph modélise les variantes nativement | |
| Flux Merchant Center avec parité exacte des images | L'embedding 64-d apparie les images par similarité visuelle | |
| Google Business Profile vérifié | Ancrage local pour les commerces physiques | |
| Contenu | Répondre aux trois questions universelles : identification, prix, localisation | Socle universel des suggestions Lens |
| Contenu adapté à la catégorie (biographique, encyclopédique, transactionnel...) | Les suggestions sont typées par catégorie d'objet | |
| Pages dans la langue de la locale cible | Les suggestions sont générées selon la locale | |
| Photographie | Un sujet dominant par image, fond neutre | Maximise la survie au filtrage post-détection |
| Angles multiples du même produit | Multiplie les entrées dans l'index vectoriel 64-d | |
| Photos lifestyle avec pièces identifiables individuellement | Maximise les points d'ancrage Shopping Graph | |
| Photos de packaging réel (pas de rendus 3D épurés) | Maximise les signaux OCR |
| Domain | Action | Why |
|---|---|---|
| Technical base | WebP/AVIF images, subject legible at 384x384 px, max 1,600x1,600 px | ViT threshold and hard Chromium cap. Beyond, downscale + JPEG quality 40 |
| Descriptive file names, rich and contextually precise alt text | Training signal for the 128-d semantic vector | |
| Surrounding text (title, caption, paragraph) aligned with image content | Enriches PaLI/Gemini model semantic anchoring | |
| Text in image OCR-readable (>30 px, sufficient contrast) | OCR pipeline feeds suggestions | |
| Knowledge Graph | Complete Wikidata entry with external identifiers | Prerequisite for entity name + MID identification |
| Schema.org with sameAs to Wikidata, Wikipedia, official profiles | Explicit bridge between web page and KG node | |
| Correct schema.org typing (Product, Person, CreativeWork, LocalBusiness) | Conditions the topic returned by Lens | |
| Shopping pipeline | Complete Product schema (name, image, brand, sku, offers) | Builds the node in the Shopping Graph |
| ProductGroup + hasVariant + variesBy for variants | Shopping Graph natively models variants | |
| Merchant Center feed with exact image parity | 64-d embedding matches images by visual similarity | |
| Verified Google Business Profile | Local anchoring for physical stores | |
| Content | Answer the three universal questions: identification, price, location | Universal base of Lens suggestions |
| Content adapted to category (biographical, encyclopedic, transactional...) | Suggestions are typed per object category | |
| Pages in the target locale's language | Suggestions are generated based on locale | |
| Photography | One dominant subject per image, neutral background | Maximizes survival through post-detection filtering |
| Multiple angles of the same product | Multiplies entries in the 64-d vector index | |
| Lifestyle photos with individually identifiable items | Maximizes Shopping Graph anchor points | |
| Real packaging photos (not clean 3D renders) | Maximizes OCR signals |
Pour réaliser cette étude, nous avons développé une extension Chrome qui intercepte et décode en temps réel l'ensemble des données décrites ici : embeddings, entités Knowledge Graph, objets détectés, suggestions, métadonnées de session. Celui-là, on ne le publiera pas : il en dit un peu trop sur la manière de désosser Google. 😉
To conduct this study, we built a Chrome extension that intercepts and decodes in real time all the data described here: embeddings, Knowledge Graph entities, detected objects, suggestions, session metadata. This one, we won't be releasing: it reveals a bit too much about how to crack Google open. 😉