Reverse Engineering - Février 2026 Reverse Engineering - February 2026

Comment fonctionne Google Lens ? How Google Lens works?

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

Google Lens

Nos observations directes dans Chrome Desktop, recoupées avec la décompilation de l'application Android et l'analyse du code source de Chromium, révèlent une architecture distribuée. Côté appareil : un pipeline OCR, un détecteur d'objets, un filtrage de contenu sensible, le tout avant envoi au serveur. Côté serveur : un embedding visuel 64-d pour la recherche inversée, un embedding sémantique 128-d pour la compréhension du sens, l'ancrage au Knowledge Graph, et des suggestions générées par modèle. Un filtrage post-détection trahi par des identifiants non séquentiels. Une blocklist de 22 catégories d'objets sensibles, supprimés avant transmission.

Our direct observations in Chrome Desktop, cross-referenced with the decompilation of the Android application and analysis of the Chromium source code, reveal a distributed architecture. On-device: an OCR pipeline, an object detector, sensitive content filtering, all before server transmission. Server-side: a 64-d visual embedding for reverse image search, a 128-d semantic embedding for meaning comprehension, Knowledge Graph anchoring, and model-generated suggestions. Post-detection filtering betrayed by non-sequential identifiers. A blocklist of 22 sensitive object categories, removed before transmission.

Powered by RESONEO

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.

Google Lens analysis example

Sommaire Table of Contents

1 Le double embeddingThe dual embedding 2 L'ancrage au Knowledge GraphKnowledge Graph anchoring 3 Détection d'objets et filtrageObject detection and filtering 4 La blocklist des 22 catégoriesThe 22-category blocklist 5 OCR 6 Spécifications de traitement d'imageImage processing specifications 7 Les suggestions LensLens suggestions 8 Le biais commercialCommercial bias 9 Le filtrage des personnesPerson filtering 10 Les intentions de recherche visuelleVisual search intents 11 7 leviers pour exister dans Google Lens7 levers to get visible in Google Lens
1

Le double embeddingThe dual embedding

Deux empreintes numériques pour chaque imageTwo digital fingerprints for every image

L'empreinte visuelle : 64 dimensions pour la recherche d'images inverséeThe visual fingerprint: 64 dimensions for reverse image search

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.

Visual and semantic embedding histograms
Histogrammes des embeddings visuel (64-d) et sémantique (128-d) : barres verticales (bleues positives, rouges négatives), stats (min, max, mean, std dev, norme L2). Visual (64-d) and semantic (128-d) embedding histograms: vertical bars (blue positive, red negative), stats (min, max, mean, std dev, L2 norm).

L'empreinte sémantique : 128 dimensions pour comprendre le sensThe semantic fingerprint: 128 dimensions for understanding meaning

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.

Recherche vectorielle et complémentaritéVector search and complementarity

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.

Cross-session similarity search
Recherche de similarité inter-sessions : barres de progression colorées avec les pourcentages de similarité visuelle et sémantique. Cross-session similarity search: colored progress bars with visual and semantic similarity percentages.
2

L'ancrage au Knowledge GraphKnowledge Graph anchoring

Trois niveaux d'identification sémantiqueThree levels of semantic identification

Trois niveaux d'identificationThree levels of 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:

Nom d'entité (entity name)Entity name

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.

Label d'affichage (display label)Display label

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.

Topic

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".

Entity names, topics and display labels
Les trois niveaux d'identification : (A) identification complète avec entity name + MID + display label + topic. (B) identification partielle avec seulement un topic, sans entity name ni MID. Three identification levels: (A) full identification with entity name + MID + display label + topic. (B) partial identification with only a topic, no entity name or MID.

Cerebra : le moteur de matching Knowledge GraphCerebra: the Knowledge Graph matching engine

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 identifier
  • KG_TITLE : nom canonique de l'entité: canonical entity name
  • KG_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 entity
  • KG_LAT_LNG : coordonnées géographiques quand l'entité est localisable: geographic coordinates when the entity is locatable
  • KG_COLLECTION_HRIDS : hiérarchies de catégories: category hierarchies
  • KG_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.

L'entité n'implique pas les cartes de connaissanceEntity does not imply knowledge cards

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.

3

Détection d'objets et filtrage post-détectionObject detection and post-detection filtering

Des identifiants non consécutifs trahissent un filtrage silencieuxNon-consecutive identifiers betray silent filtering

MOSS : le détecteur d'objets on-deviceMOSS: the on-device object detector

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.

MOSS object classes
Les 20 premières lignes de la liste des ~20 000 classes d'objets reconnues par MOSS, extraites d'Open Images Dataset v7. The first 20 lines of the ~20,000 object classes recognized by MOSS, extracted from Open Images Dataset v7.

Les identifiants non consécutifs : la preuve d'un filtrageNon-consecutive identifiers: proof of filtering

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.

Non-consecutive detected object identifiers
Identifiants non consécutifs des objets détectés : les IDs qui sautent (Object 0, Object 3, Object 5) révèlent les gaps. Non-consecutive detected object identifiers: IDs that skip (Object 0, Object 3, Object 5) reveal the gaps.

Taxonomie des typesType taxonomy

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.

Des zones cliquables que l'utilisateur ne voit pasClickable zones the user cannot see

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.

Bounding boxes overlaid on image
Bounding boxes SVG superposées sur l'image : rectangles colorés numérotés avec le tableau correspondant (types, tailles, scores de confiance). SVG bounding boxes overlaid on the image: numbered colored rectangles with the corresponding table (types, sizes, confidence scores).
4

La blocklist des 22 catégories filtréesThe 22-category blocklist

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/0gxl3HandgunArmeWeapon
/m/06c54RifleArmeWeapon
/m/06nrcShotgunArmeWeapon
/m/04ctxKnifeArmeWeapon
/m/07cmdTankArmeWeapon
/m/06y5rSwordArmeWeapon
/m/020kzCannonArmeWeapon
/m/09rvcxwRocketArmeWeapon
/m/01g3x7Bow and arrowArmeWeapon
/m/0c2jjAxeArmeWeapon
/m/083kbWeaponArme (générique)Weapon (generic)
/m/0bg7bShieldArme / défenseWeapon / defense
/m/012ysfSyringeMédicalMedical
/m/01xgg_Medical equipmentMédicalMedical
/m/05441vCrutchMédicalMedical
/m/054xkwPersonal flotation deviceSécuritéSafety
/m/012pldSex toyAdulteAdult
/m/012sqmGodemichéDildoAdulteAdult
/m/02621mkVibromasseurVibratorAdulteAdult
/j/3s1vm2Taxonomie privée GoogleGoogle private taxonomySafeSearch
/j/1mscwjTaxonomie privée GoogleGoogle private taxonomySafeSearch
/j/bzqyr6Taxonomie privée GoogleGoogle private taxonomySafeSearch

RépartitionBreakdown

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.

Trois mécanismes de filtrage en amont du serveurThree filtering mechanisms upstream of the server

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

La détection est exhaustive, le filtrage est politiqueDetection is exhaustive, filtering is political

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.

Federated Learning : les images restent sur l'appareilFederated Learning: images stay on-device

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.

5

OCR

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

LOTS v8 : le pipeline OCR on-device en 7 étapesLOTS v8: the 7-step on-device OCR pipeline

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
1AksaraAnalyse de mise en page (Region Proposal Network)Layout analysis (Region Proposal Network)
2GOCRDétection de zones de texte (Group RPN)Text zone detection (Group RPN)
3Script DetectorIdentification 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
4Line SelectionFiltrage des lignes pertinentesRelevant line filtering
5Line Recognition16 reconnaisseurs TFLite par écriture + 1 LSTM (grec)16 TFLite recognizers per script + 1 LSTM (Greek)
6FSTCorrection 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
7Transliteration14 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.

Données OCR structuréesStructured OCR data

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.

OCR token extraction
6

Les spécifications de traitement d'imageImage processing specifications

Les paramètres extraits du code source de ChromiumParameters extracted from Chromium source code

40
Qualité JPEG de compression avant uploadJPEG compression quality before upload
1 600 px
Dimension maximale (cap dur)Maximum dimension (hard cap)
10 s
Timeout serveur principalMain server timeout
384 px
Seuil minimum ViTViT minimum threshold

Paramètres complets (lens_features.cc)Complete parameters (lens_features.cc)

ParamètreParameter ValeurValue ImplicationImplication
Compression JPEGJPEG compression40Images fortement compressées avant uploadImages heavily compressed before upload
Qualité capture initialeInitial capture quality90Screenshot haute qualité avant compressionHigh-quality screenshot before compression
Surface maximaleMaximum surface1 500 000 pxAu-delà : downscale automatiqueBeyond: automatic downscale
Dimensions maximalesMaximum dimensions1 600 x 1 600 pxCap dur, envoyer plus grand est inutileHard cap, sending larger is useless
Seuil ViT minimumViT minimum threshold384 x 384 pxSeuil minimal du Vision TransformerVision Transformer minimum threshold
Timeout serveurServer timeout10 000 ms10 secondes max pour le résultat10 seconds max for results
Timeout contenu pagePage content timeout60 000 ms1 minute pour gros contenus (PDF)1 minute for large content (PDF)
Taille chunk uploadUpload chunk size2 MiBPar morceauPer chunk
Limite upload totaleTotal upload limit200 MBMaximum absoluAbsolute maximum
Durée sessionSession lifetime30 minCache du gsessionidgsessionid cache
Limite texte PDFPDF text limit5 000 caractèresPour la searchbox contextuelleFor contextual searchbox

La plage utile est étroiteThe useful range is narrow

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.

7

Les suggestions Lens ne sont pas des Google SuggestLens suggestions are not Google Suggest

Un système de génération fondamentalement différentA fundamentally different generation system

Deux formats, deux logiquesTwo formats, two logics

Durant nos analyses, nous avons capturé deux formats de réponse distincts :

During our analyses, we captured two distinct response formats:

  • Format Lens/visuelLens/visual format : des questions et phrases structurées, longueur moyenne 3+ mots. Exemples : "what kind of cat is this", "where to buy", "comment s'appelle ce chat".: structured questions and sentences, average length 3+ words. Examples: "what kind of cat is this", "where to buy", "comment s'appelle ce chat".
  • Format Google Suggest classiqueClassic Google Suggest format : des mots simples ou expressions courtes, longueur moyenne 1,3 mots. Exemples : "price", "amazon", "vinted".: simple words or short expressions, average length 1.3 words. Examples: "price", "amazon", "vinted".

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.

Des suggestions générées, pas collectéesGenerated suggestions, not collected ones

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.

Un modèle dédié pour les devoirsA dedicated model for homework

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.

MUM génère les suggestionsMUM generates the suggestions

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.

Contextualisées par objet détectéContextualized per detected object

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.

Nutella Ice Cream session - per-object suggestions

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.

UEFA Champions League session - per-object suggestions
Per-object contextualized suggestions
Dans cette session "Robot" (3 tablettes détectées) : l'Amazon Fire HD 10 Kids Pro reçoit "how to fix this problem", "how to fix" ; la Fire HD 10 reçoit "is this a scam", "amazon", "walmart" ; l'iPad (10th generation) reçoit "specs", "price", "features", "reviews", "release date". Chaque tablette a des suggestions adaptées à sa marque et son écosystème. In this "Robot" session (3 detected tablets): the Amazon Fire HD 10 Kids Pro gets "how to fix this problem", "how to fix"; the Fire HD 10 gets "is this a scam", "amazon", "walmart"; the iPad (10th generation) gets "specs", "price", "features", "reviews", "release date". Each tablet has suggestions tailored to its brand and ecosystem.

Le socle universelThe universal base

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.

SuggestionFréquenceFrequencyType
what is thisplus de la moitié des sessionsover half of sessionsIdentificationIdentification
what does this meanfréquentfrequentIdentificationIdentification
what is this calledfréquentfrequentIdentificationIdentification
how much is it worthfréquentfrequentCommercial
price / prixfréquentfrequentCommercial
c'est quoifréquentfrequentIdentification (FR)
where is this placefréquentfrequentLocalisationLocation
amazoncourantcommonCommercial
answer keyprésentpresentHomework

"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.

Templates paramétriques et taxonomieParametric templates and taxonomy

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:

  • Identification (~1/4) : "what is this", "c'est quoi", "what kind of {X} is this", "quelle race de {X}". Pattern dominant.: "what is this", "c'est quoi", "what kind of {X} is this", "quelle race de {X}". Dominant pattern.
  • UtilitaireUtilitarian : "how to use", "how to connect", "how to fix", "how to clean".: "how to use", "how to connect", "how to fix", "how to clean".
  • Commercial : enseignes (amazon, vinted, shein, walmart, zara), prix, "where to buy".: retailers (amazon, vinted, shein, walmart, zara), price, "where to buy".
  • Factuel/encyclopédiqueFactual/encyclopedic : "net worth", "biography" (personnes) ; "diet", "habitat" (animaux) ; "standings", "schedule" (sport).: "net worth", "biography" (people); "diet", "habitat" (animals); "standings", "schedule" (sports).
  • Traduction (spécifique FR)Translation (FR-specific) : "traduire en français", "in french".: "traduire en français", "in french".
  • Homework : "answer key", "corrigé de l'exercice".: "answer key", "corrigé de l'exercice".
8

Le biais commercialCommercial bias

Systémique dans la présence, pas massif dans le volumeSystemic in presence, not massive in volume

Un pipeline dédié au commerceA dedicated commerce pipeline

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.

Les chiffresThe numbers

L'analyse quantitative des suggestions capturées montre un biais commercial récurrent :

Quantitative analysis of captured suggestions shows a recurring commercial bias:

MétriqueMetricValeurValue
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.

Les 11 domaines KaggleThe 11 Kaggle domains

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 comme infrastructureThe Shopping Graph as infrastructure

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.

Commerce-oriented object detection
Détection d'objets orientée commerce sur une image de personne : les bounding boxes ciblent les vêtements individuels. Commerce-oriented object detection on a person image: bounding boxes target individual clothing items.
9

Le filtrage des personnesPerson filtering

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.

Un filtre asymétriqueAn asymmetric filter

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.

La capacité technique reste intacteTechnical capability remains intact

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.

Configurable par les administrateursConfigurable by administrators

Les politiques enterprise confirment ce mécanisme. La policy GenAiLensOverlaySettings expose trois niveaux :

Enterprise policies confirm this mechanism. The GenAiLensOverlaySettings policy exposes three levels:

ValeurValueComportementBehavior
0 - AllowedAffichage complet des résultats LensFull display of Lens results
1 - AllowedWithoutLoggingAffichage sans journalisation des analysesDisplay without logging analyses
2 - DisabledLens 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.

Person filtering comparison
Filtrage des personnes : (A) célébrité avec entity name, MID, topic, embeddings. (B) personne non publique sans entity name ni MID, mais topic "Person" et embeddings toujours présents. Person filtering: (A) celebrity with entity name, MID, topic, embeddings. (B) non-public person without entity name or MID, but topic "Person" and embeddings still present.
10

Les intentions de recherche visuelleVisual search intents

Trois modes distincts encodés dans les URLs de résultatsThree distinct modes encoded in result URLs

Le paramètre lns_mode : le discriminateur techniqueThe lns_mode parameter: the technical discriminator

Les 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 textRésultats textuels classiquesClassic text results
un26Unimodal (image seule)Unimodal (image only)Résultats visuels uniquementVisual results only
mu24Multimodal (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.

Intentions utilisateur sous-jacentesUnderlying user intents

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:

  • Identification : "what is this", "c'est quoi": "what is this", "c'est quoi"
  • Shopping : prix, enseignes, "where to buy": price, retailers, "where to buy"
  • TraductionTranslation : "traduire en français", "in french": "traduire en français", "in french"
  • DevoirsHomework : "answer key", "corrigé de l'exercice": "answer key", "corrigé de l'exercice"
  • Recherche factuelleFactual search : biographie, stats, habitat: biography, stats, habitat

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).

11

7 leviers pour exister dans Google Lens7 levers to get visible in Google Lens

Ce que les mécanismes décrits changent concrètement pour le SEOWhat the described mechanisms concretely change for SEO

Photographier pour le modèle de vision, pas pour l'oeil humainPhotograph for the vision model, not the human eye

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.

Nourrir l'embedding sémantique (128-d)Feed the semantic embedding (128-d)

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.

Exister dans le Knowledge GraphExist in the Knowledge Graph

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 Merchant Center comme second ancrageMerchant Center as second anchor

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.

L'OCR comme vecteur de rechercheOCR as search vector

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.

Aligner le contenu sur les intents que Lens génèreAlign content with the intents Lens generates

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:

  • ProduitsProducts : prix, disponibilité, enseignes, comparaison.: price, availability, retailers, comparison.
  • AnimauxAnimals : race, alimentation, habitat.: breed, diet, habitat.
  • PersonnesPeople : biographie, salaire, conjoint.: biography, salary, spouse.
  • MonumentsLandmarks : localisation, histoire, horaires.: location, history, opening hours.
  • Sport : classement, calendrier, stats.: standings, schedule, stats.

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.

Le socle universel comme check-listThe universal base as checklist

"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).

Check-list

DomaineActionPourquoi
Socle techniqueImages WebP/AVIF, sujet lisible à 384x384 px, max 1 600x1 600 pxSeuil ViT et cap dur Chromium. Au-delà, downscale + JPEG qualité 40
Noms de fichiers descriptifs, alt text riche et contextuellement précisSignal d'entraînement du vecteur sémantique 128-d
Texte environnant (titre, légende, paragraphe) aligné avec le contenu de l'imageEnrichit 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 GraphFiche Wikidata complète avec identifiants externesPré-requis pour l'identification par entity name + MID
Schema.org avec sameAs vers Wikidata, Wikipedia, profils officielsPont explicite entre page web et noeud KG
Typage schema.org correct (Product, Person, CreativeWork, LocalBusiness)Conditionne le topic retourné par Lens
Pipeline ShoppingProduct schema complet (name, image, brand, sku, offers)Construit le noeud dans le Shopping Graph
ProductGroup + hasVariant + variesBy pour les variantesLe Shopping Graph modélise les variantes nativement
Flux Merchant Center avec parité exacte des imagesL'embedding 64-d apparie les images par similarité visuelle
Google Business Profile vérifiéAncrage local pour les commerces physiques
ContenuRépondre aux trois questions universelles : identification, prix, localisationSocle 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 cibleLes suggestions sont générées selon la locale
PhotographieUn sujet dominant par image, fond neutreMaximise la survie au filtrage post-détection
Angles multiples du même produitMultiplie les entrées dans l'index vectoriel 64-d
Photos lifestyle avec pièces identifiables individuellementMaximise les points d'ancrage Shopping Graph
Photos de packaging réel (pas de rendus 3D épurés)Maximise les signaux OCR
DomainActionWhy
Technical baseWebP/AVIF images, subject legible at 384x384 px, max 1,600x1,600 pxViT threshold and hard Chromium cap. Beyond, downscale + JPEG quality 40
Descriptive file names, rich and contextually precise alt textTraining signal for the 128-d semantic vector
Surrounding text (title, caption, paragraph) aligned with image contentEnriches PaLI/Gemini model semantic anchoring
Text in image OCR-readable (>30 px, sufficient contrast)OCR pipeline feeds suggestions
Knowledge GraphComplete Wikidata entry with external identifiersPrerequisite for entity name + MID identification
Schema.org with sameAs to Wikidata, Wikipedia, official profilesExplicit bridge between web page and KG node
Correct schema.org typing (Product, Person, CreativeWork, LocalBusiness)Conditions the topic returned by Lens
Shopping pipelineComplete Product schema (name, image, brand, sku, offers)Builds the node in the Shopping Graph
ProductGroup + hasVariant + variesBy for variantsShopping Graph natively models variants
Merchant Center feed with exact image parity64-d embedding matches images by visual similarity
Verified Google Business ProfileLocal anchoring for physical stores
ContentAnswer the three universal questions: identification, price, locationUniversal base of Lens suggestions
Content adapted to category (biographical, encyclopedic, transactional...)Suggestions are typed per object category
Pages in the target locale's languageSuggestions are generated based on locale
PhotographyOne dominant subject per image, neutral backgroundMaximizes survival through post-detection filtering
Multiple angles of the same productMultiplies entries in the 64-d vector index
Lifestyle photos with individually identifiable itemsMaximizes 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. 😉

Autres Sources et Études Other Sources and Studies

Feb 2026 AI Overview / AI Mode - Deepdive Feb 2026 How Perplexity Works Feb 2026 ChatGPT is NOT a search engine Jan 2026 Complete analysis of OpenAI's A/B testing system Jan 2026 Inside Google Searchguard Jan 2026 Google News URL Generator Jan 2026 LLM Crawler Report Dec 2025 Your ChatGPT Profile Analyzer Dec 2025 How ChatGPT is tapping into Google data! Nov 2025 ChatGPT Shopping full process & system prompt Nov 2025 Wikidata Tool for SEOs Nov 2025 The Most Complete Chrome Extension for SearchGPT Analysis Oct 2025 Voice Search: Google Assistant Query Analysis Sept 2025 Google Profile Link Generator Sept 2025 Examples of queries flagged as sensitive by Google Aug 2025 15K domains most frequently suggested by Google Sources Preferences Aug 2025 Analysis of 87,725 public ChatGPT conversations (full dump, 75M) Aug 2025 List of 500K Google internal URLs Jul 2025 Behind the scene of Google - Exclusive study Jul 2025 AI at the Heart of Google's Strategy: Behind the Scenes Revealed Jul 2025 Uncovering Google's Query Expansion System and a Mysterious Scoring Layer Jul 2025 EXCLUSIVE REVELATIONS: How Google Really Works in 2025 Jun-Aug 2025 Full list of Google Search and AI Mode experiments Jun 2025 Google's AI Strategy Revealed - 1200 Experiments Jun 2025 Googlers AI Mode debug menu Jun 2025 Infographic: Google Knowledge Graph Mining Pipeline May 2025 400+ Google tracking events on Search (_.By mapping)

2024

Google Leak Analysis Series
RESONEO