Tous les articles
Petite entreprise 15 min de lecture

Dédoublonnage de contacts par IA : 96 tests sur les fusions qui effacent une personne

Trois modèles bon marché, 8 carnets, quatre niveaux de désordre. Trouver les doublons est la partie facile, 94,1 pour cent. Le chiffre qui vous coûte une fiche, c'est la part des personnes distinctes fusionnées sans le moindre avertissement.

Composition geometrique abstraite en deux tons, illustration de couverture
Publié le
17 août 2026
Rubrique
Petite entreprise

Une petite entreprise exporte sa liste de contacts et préfère la faire nettoyer par un modèle plutôt que de la parcourir à la main. Savoir si ça marche n'est pas vraiment la question. Ça marche, et nous l'avons mesuré aussi. La question est ce qui se passe quand le modèle décide que deux personnes différentes n'en font qu'une, et si quelqu'un s'en aperçoit.

Nous avons conduit 96 passes de dédoublonnage pour le savoir. Voici les résultats, avant la méthode.

Trois modèles bon marché ont retrouvé 271 des 288 vrais doublons, soit 94,1 pour cent. claude-haiku-4.5 a retrouvé les 24 sur les trois versions dégradées du fichier. Trouver les doublons n'est pas la partie difficile, et rien dans ce test ne le suggère.

Les mêmes modèles ont fusionné deux personnes différentes dans 93 cas sur 192, soit 48,4 pour cent. Près d'une paire ressemblante sur deux a été réunie. Un doublon oublié laisse deux lignes dans un fichier et ne coûte rien. Une fusion fausse détruit une ligne : l'une des deux personnes perd son adresse, son titre et son historique, et le fichier qui revient ne le dit pas.

Sur les 97 fusions fausses, 68 étaient silencieuses, soit 70,1 pour cent. Silencieuses ne veut pas dire que le modèle n'a rien écrit. Cela veut dire que rien de ce qu'il a écrit n'enverrait un opérateur regarder cette paire précise. Dans 42 de ces 68 cas, le modèle a nommé les deux lignes qu'il venait de fusionner à tort et a affirmé, sans la moindre réserve, qu'il s'agissait de la même personne.

Le fichier propre n'était pas le plus sûr. Les fusions fausses passent de 33,3 pour cent sur le CSV impeccable à 66,7 pour cent sur la version où seule l'écriture des numéros de téléphone varie. Les fusions justes montent en même temps. Plus le fichier est sale, plus le modèle fusionne, le juste et le faux ensemble.

La méthode, en bref

Test conduit le 2026-08-17 par la chaîne de test automatisée de ce site : le corpus, les appels aux modèles et l'analyse sont des scripts, publiés plus bas pour que chacun puisse les rejouer et contester le résultat. Etienne signe cet article et répond de son contenu.

C'est le deuxième test mesuré publié ici. Le premier mesurait l'extraction de champs dans un document. Celui-ci mesure une décision. Fusionner deux lignes n'est pas lire une valeur : c'est trancher une identité, et l'erreur ne se rattrape pas de la même façon.

Le corpus est construit, pas collecté. 8 carnets de 12 lignes, soit 96 contacts, générés par script avec la graine fixe 20260817, donc identiques à chaque exécution. Aucune personne réelle, aucune société réelle, aucune adresse réelle. Les numéros sont pris dans la plage 555-01xx, réservée à la fiction, et les domaines de courriel sont sous le TLD réservé .example.

C'est un choix assumé. La vérité terrain d'un dédoublonnage est une partition, et elle n'est indiscutable que si c'est nous qui l'avons posée. Sur un carnet réel, il aurait fallu trancher à la main des centaines de paires, avec nos propres erreurs de jugement dans la référence, et le test aurait mesuré notre accord avec le modèle plutôt que la justesse du modèle.

Chaque carnet contient 3 paires de doublons à fusionner, 2 paires ressemblantes à laisser tranquilles, et 2 lignes seules. Sur les 8 carnets : 24 paires de doublons et 16 paires pièges.

Toute paire de doublons partage au moins une clé forte, le courriel ou le téléphone, pour qu'il existe une seule bonne réponse défendable. Toute paire piège se distingue par au moins deux attributs dérivables du carnet lui-même. Un script de contrôle vérifie ces deux invariants et l'absence de collision accidentelle avant le moindre appel.

Trois modèles, choisis parmi ceux qu'une petite entreprise emploierait pour leur prix : openai/gpt-4o-mini, google/gemini-2.5-flash-lite, anthropic/claude-haiku-4.5. Accès par OpenRouter, température 0, une seule exécution par couple carnet, niveau et modèle. 96 appels, 0 échec technique, 0 réponse JSON invalide, coût total des appels 0,06647 USD. La consigne était identique mot pour mot pour les trois modèles, elle offrait un champ notes pour signaler une hésitation, et elle disait explicitement que fusionner deux personnes différentes est pire que laisser un doublon dans la liste.

Ce que ce test ne prouve pas. Nos carnets font 12 lignes et tiennent entièrement dans la fenêtre du modèle, ce qui est le cas le plus favorable ; un fichier de 5000 lignes est un autre problème, que ce test ne touche pas. Une seule langue, l'anglais. Des noms latins uniquement. Une seule exécution par couple. C'est un test sur 96 lignes synthétiques, pas un audit de production. La liste complète des limites est à la fin, et elle mérite d'être lue avant de citer le moindre chiffre d'ici.

Ce sur quoi nous avons demandé aux modèles de trébucher

Cinq familles de doublons, chacune ancrée par une clé qui rend la bonne réponse défendable.

Doublon Ce qui change entre les deux lignes Ce qui les ancre Retrouvés
D1 Surnom contre prénom formel, raison sociale abrégée, deux numéros courriel identique 92 pour cent
D2 Courriel professionnel contre courriel personnel, société absente sur la seconde ligne téléphone identique 98 pour cent
D3 Nom de famille allongé après mariage, courriel refait, même prénom et même titre téléphone identique 87 pour cent
D4 Une lettre manquante dans le courriel téléphone et nom identiques 100 pour cent
D5 Surnom et raison sociale écrite autrement courriel et téléphone identiques 94 pour cent

Trois familles de pièges, chacune constituée de deux personnes réellement différentes.

Piège Ce qui les rapproche Ce qui les sépare Fusionnés à tort
T1 Prénom et nom exactement identiques deux sociétés, deux villes, deux courriels, deux numéros 43/72, soit 60 pour cent
T2 Même nom de famille, même société, même numéro de standard deux prénoms, deux titres, deux courriels 27/60, soit 45 pour cent
T3 Courriels presque identiques sur le même domaine, même société deux prénoms, deux titres, deux numéros 23/60, soit 38 pour cent

T2 est là pour une raison précise. Le téléphone sert d'ancre à trois des cinq familles de doublons, et T2 vérifie que le modèle ne le prend pas pour une identité. Un numéro de standard est partagé par tout un bureau.

Une objection que nous prenons au sérieux, et que nous chiffrons. Deux homonymes exacts dans deux sociétés différentes pourraient être une seule personne ayant changé d'employeur, et le carnet ne tranche pas à cent pour cent. Voici donc le chiffre privé de cette famille : 50 fusions fausses sur 120, soit 41,7 pour cent. La conclusion tient même en donnant raison au lecteur sur ce point.

Les quatre niveaux de désordre

Un export n'est jamais propre. Nous dégradons la présentation, jamais l'information : à chaque niveau, les mêmes lettres et les mêmes rapprochements restent dérivables. Un export qui perdrait réellement un courriel ne mesurerait plus le jugement du modèle, il mesurerait ce qu'on lui a caché.

Niveau Ce qui est dégradé
N1 propre rien, colonnes CSV séparées, casse normalisée, un seul format de téléphone
N2 casse et espaces casse incohérente et espaces surnuméraires, comme un carnet saisi à plusieurs mains
N3 formats mélangés N2, plus quatre écritures différentes du même numéro : chiffres identiques, forme différente
N4 colonnes fusionnées N2, plus toutes les colonnes réduites à une seule chaîne par ligne, comme un copier-coller depuis un courriel

La dégradation est déterministe. Le même carnet rend la même chaîne à chaque exécution.

Résultats bruts

Ce qui marche

Modèle Doublons retrouvés Pièges fusionnés à tort Fusions fausses dont silencieuses
gpt-4o-mini 87/96 43/64 46 33
gemini-2.5-flash-lite 92/96 31/64 32 25
claude-haiku-4.5 92/96 19/64 19 10
Tous confondus 271/288, soit 94,1 pour cent 93/192, soit 48,4 pour cent 97 68, soit 70,1 pour cent

L'écart entre les modèles est réel ici : claude-haiku-4.5 commet 19 fusions fausses là où gpt-4o-mini en commet 46, alors que les deux se tiennent à cinq points l'un de l'autre sur les doublons retrouvés. Sur cette tâche, le choix du modèle change le risque de plus du double et ne change presque pas le rendement.

Sur les 97 fusions fausses, 93 sont tombées sur les 16 paires pièges que nous avions dessinées. Les 4 autres sont des paires que nous n'avions pas prévues du tout : des lignes que le modèle a rapprochées pour des raisons qui lui appartiennent. Nous les signalons parce qu'elles sont dans les données, et nous ne tirons rien de quatre cas.

Le fichier propre n'est pas le plus sûr

Niveau Doublons retrouvés Pièges fusionnés à tort
N1 propre 64/72 16/48, soit 33,3 pour cent
N2 casse et espaces 69/72 26/48, soit 54,2 pour cent
N3 formats mélangés 71/72 32/48, soit 66,7 pour cent
N4 colonnes fusionnées 67/72 19/48, soit 39,6 pour cent

Les deux colonnes montent ensemble de N1 à N3. Le modèle ne devient pas moins bon quand le fichier se salit : il devient plus agressif. Il cesse de s'appuyer sur les clés d'identité pour s'appuyer sur la ressemblance, exactement quand la ressemblance est le moins fiable. Le conseil de ranger le fichier avant de le confier n'est pas faux, mais il vaut la peine de savoir ce qu'il achète réellement : sur ce corpus, nettoyer a divisé les fusions fausses à peu près par deux et coûté sept fusions justes.

Le seul chiffre qui nous a surpris est N3 contre N4. Écrire le même numéro de téléphone de quatre façons différentes a fait plus de dégâts que réduire toutes les colonnes à une seule chaîne. La variation de format à l'intérieur d'un champ semble plus difficile pour ces modèles que la perte de la structure du champ elle-même.

Le silence a quatre degrés

Une note n'est pas un avertissement. Dès le tout premier appel d'essai, un modèle a fusionné deux homonymes exacts et écrit une note affirmant qu'il s'agissait de la même personne. Compter cela comme un signalement aurait rendu la mesure fausse dans le sens flatteur. Nous classons donc chaque fusion fausse selon ce que sa note donne réellement à un opérateur :

Degré Ce que la note donne à un opérateur Nombre
1. aucune note le champ notes est vide : rien 9
2. paire non nommée une note existe mais ne cite pas les deux numéros de ligne fusionnés à tort : il ne sait pas où regarder 17
3. nommée mais affirmée la note cite les deux lignes sans la moindre réserve : elle le conforte dans l'erreur 42
4. réellement signalée la note cite les deux lignes et porte une marque de doute 29

Les degrés 1, 2 et 3 sont ce que nous appelons silencieux : 68 sur 97, soit 70,1 pour cent. Dans aucun des trois, rien n'appelle la vérification de cette paire précise.

Le lexique du doute est publié en entier dans le script d'analyse. Il est volontairement généreux : il compte « appears » ou « likely » comme un doute. Être généreux joue contre notre propre conclusion, et c'est la seule direction acceptable pour un lexique choisi par celui qui publie le chiffre.

Deux modèles n'ont jamais laissé le champ vide : gpt-4o-mini et claude-haiku-4.5 ont écrit une note sur leurs 32 réponses. Les notes vides sont toutes de gemini-2.5-flash-lite, 12 sur ses 32. Écrire une note et émettre un doute ne sont pas la même chose, et c'est cette ligne de chiffres qui le montre.

La règle qui en rattrape les deux tiers

Énoncée en une ligne : refuser toute fusion dont les deux lignes n'ont ni le même courriel, casse ignorée, ni le même numéro, chiffres seuls.

Nombre
Fusions fausses bloquées 70 sur 97, soit 72,2 pour cent
Fusions fausses laissées passer 27
Fusions justes bloquées 0 sur 271

Ce zéro est vrai par construction, et il faut le dire. Notre corpus impose que toute paire de doublons partage un courriel ou un téléphone. Dans un carnet réel, une personne ayant changé à la fois d'adresse et de numéro existe, et cette règle bloquerait sa fusion. L'énoncé honnête est donc : la règle rattrape 72,2 pour cent des fusions fausses au prix d'un rappel qu'il faut mesurer sur son propre fichier, pas au prix de rien.

Les 27 qu'elle laisse passer sont la famille T2, celles qui partagent un numéro de standard. Pour celles-là il existe une deuxième règle, aussi peu coûteuse : si deux lignes partagent un téléphone mais diffèrent par le prénom, ce sont deux personnes jusqu'à preuve du contraire.

Quoi en faire

Ne laissez pas un modèle fusionner. Laissez-le proposer. Le rendement est de son côté, 94,1 pour cent, et le risque est du vôtre, une paire ressemblante sur deux. Prenez la proposition, passez-lui le contrôle des clés fortes, et ne fusionnez que ce qui passe.

Ne lisez pas les notes comme des avertissements. Dans 42 cas sur 97, la note désignait exactement la bonne paire et confirmait l'erreur sur un ton assuré. Une note est un commentaire, pas un contrôle.

Gardez le fichier d'avant fusion. C'est la seule recommandation qui ne coûte rien et qui couvre tout ce que les deux règles laissent passer. Une fusion fausse n'est irréversible que si vous n'avez plus la ligne qu'elle a mangée.

Si vous voulez la version large de ce raisonnement, nous avons écrit sur les tâches où l'IA échoue sans le dire et sur les modes de défaillance des automatisations. Ce test est une instance mesurée des deux.

Limites, dites franchement

  • 96 lignes synthétiques dans 8 carnets. Un test sur 8 carnets est un test sur 8 carnets.
  • Des carnets de 12 lignes, entièrement dans la fenêtre du modèle. Un fichier de 5000 lignes impose un découpage, un blocage et une stratégie de comparaison, dont rien n'est mesuré ici, et qui ne peuvent que rendre le problème plus difficile.
  • Une seule exécution par couple, à température 0. Les modèles ne sont pas parfaitement déterministes pour autant. Des écarts de quelques points ne doivent pas être lus comme significatifs. L'écart entre 19 et 46 fusions fausses, et surtout la forme des erreurs, toujours les mêmes familles de pièges, le sont.
  • Trois modèles d'entrée de gamme. Rien ici ne dit ce que feraient les plus chers. C'est une question ouverte et elle mérite son propre test.
  • Une seule langue, l'anglais, et des noms latins uniquement. Les noms translittérés et les sociétés réellement homonymes sont un cas difficile connu, que ce corpus ne contient pas.
  • Le lexique du doute est un choix. Il est publié, il est généreux, il reste un choix.
  • Le corpus est le nôtre. Il est publié pour que le désaccord soit possible.

Rejouez-le

Tout ce que ce test a produit est ici, pas résumé : le script qui a généré les 8 carnets et celui qui les a dégradés, la vérité terrain avec l'explication de chaque paire, les 96 réponses brutes telles que les modèles les ont rendues, et l'analyse qui produit chacun des chiffres ci-dessus.

Sept fichiers : le générateur du corpus avec sa graine fixe, les 8 carnets avec leur vérité terrain et la raison d'être de chaque paire, les quatre niveaux de présentation, le script qui a appelé les modèles et comparé partition contre partition, les 96 réponses brutes avec la consigne employée, et l'analyse qui classe le silence. La page de données les liste un par un avec ce que chacun contient.

Le générateur emploie une graine fixe, donc le corpus que vous produisez est celui que nous avons employé.

bash
python3 generer-corpus.py --graine 20260817 --sortie corpus.json
python3 conduire-test.py --corpus corpus.json --sortie resultats-bruts.json \
    --niveaux 1 2 3 4 \
    --modeles openai/gpt-4o-mini google/gemini-2.5-flash-lite anthropic/claude-haiku-4.5
python3 analyser.py --corpus corpus.json --resultats resultats-bruts.json \
    --sortie chiffres.json

La clé d'API est lue dans une variable d'environnement et n'apparaît dans aucun de ces fichiers.

Télécharger le jeu de données (zip, avec l'inventaire complet et l'empreinte). Les scripts et les commentaires qu'ils contiennent sont en français, qui est la langue de travail derrière ce site.

Si vous le rejouez et obtenez autre chose, nous voulons le savoir. Il y a un formulaire de contact, et les corrections sont publiées sur l'article lui-même, datées, comme le disent les règles éditoriales de ce site.

A lire dans la même rubrique

Recevoir le prochain article par e-mail

Un e-mail quand un article paraît. Pas d'outil de la semaine, pas de liste d'affiliation, aucune transmission de votre adresse à qui que ce soit.