Test de précision · octobre 2026
Nous avons testé les estimations de glucides de Soba sur 400 photos de repas
Les photos proviennent de deux jeux de données de recherche publics, où les glucides de chaque repas ont été pesés ou enregistrés. Vous trouverez ci-dessous les résultats, la méthode et les repas pour lesquels Soba s’est trompé.
68,5 %des repas à 10 g ou moins des glucides réels, à partir d’une seule photo
+4points de plus à 10 g ou moins quand une indication nommait les aliments exactement comme l’étude les avait enregistrés
5,2 gd’erreur médiane à partir d’une seule photo
Ce que nous avons constaté
Les chiffres de cette section sont les premières estimations de Soba à partir de la photo seule, avant toute correction de poids ou ajout d’indication. Au total, 49 % des estimations étaient à 5 g ou moins des glucides réels. L’intervalle de confiance à 95 % pour la part à 10 g ou moins va de 64,0 % à 72,9 %.
Les petits et moyens repas ont donné les estimations les plus proches. Pour les repas de moins de 15 g de glucides, 89 % des estimations étaient à 10 g ou moins.
Les grands repas ont généralement été sous-estimés. Pour 38 des 42 repas de 60 g de glucides ou plus, l’estimation de Soba était trop basse. L’estimation médiane représentait 64 % de la quantité réelle. La cause principale est le poids de la portion : pour 30 de ces 38 repas, Soba a estimé le poids des aliments au moins 15 % en dessous du poids réel, alors que ses glucides pour 100 g étaient généralement proches.
Ce que cela signifie quand vous utilisez Soba
- Pour une grande assiette de pain, de riz, de pâtes, de pommes de terre ou de pizza, pesez si possible l’aliment principal riche en glucides. Les estimations de 40 g ou plus s’écartaient dans les deux sens : sur 84 repas, 32 étaient trop hautes de plus de 10 g et 23 trop basses.
- Les petits aliments seuls, comme un cookie ou une part de pizza, ressortent parfois plus lourds qu’ils ne le sont.
- Le sucre dissous dans une boisson est invisible sur une photo. Dans le test, un thé glacé sucré a été lu comme non sucré. Ajoutez une courte indication comme « thé sucré » ou scannez le code-barres.
- Pour un produit emballé, le code-barres donne les valeurs de l’étiquette.
Ce que vous pouvez ajouter dans l’app
Les résultats ci-dessus viennent d’une seule photo, sans rien d’autre. Dans l’app, vous pouvez ajouter quelques mots sur le repas, et sur les iPhone avec caméra de profondeur, Soba mesure aussi la distance jusqu’aux aliments. Nous avons refait le test avec chacun de ces deux ajouts.
Les 400 photos
200 photos de cantine avec données de profondeur
Une indication écrite
Quelques mots comme « thé sucré » ou « sarrasin » ajoutent ce qu’une photo ne peut pas montrer. Pour le test, chacune des 400 photos a reçu une indication avec les noms des principaux aliments tirés de l’enregistrement du jeu de données, sans quantités, par exemple « Coffee, brewed; Coffee creamer, liquid, fat free ». La part à 10 g ou moins est passée de 68,5 % à 72,8 % (intervalle à 95 % pour le gain : 0,7 à 7,9 points), et l’erreur médiane est descendue de 5,2 à 4,5 g.
L’indication a le plus aidé quand la photo pouvait se lire de plusieurs façons. Sans elle, Soba a pris ce café avec de la crème à café pour de la sauce caramel et a estimé 162 g de glucides. Avec l’indication, il a estimé 5,5 g, et le journal alimentaire indique 2,7 g. Sur les photos SNAPMe que les participants ont prises de leurs propres repas, la part à 10 g ou moins est passée de 59,5 % à 67,5 %. Sur les photos de cantine, où les aliments sont faciles à voir, elle a à peine changé : de 77,5 % à 78,0 %.
Une indication nomme l’aliment, mais Soba estime toujours la quantité d’après la photo. Avec une indication, les grands repas ont été sous-estimés dans 37 cas sur 42, contre 38 sans indication. Les indications du test reprenaient exactement les enregistrements des jeux de données. La plus grande partie du gain venait du premier lot de 200 repas, 8,0 points ; sur le second lot, il était de 0,5. Une indication que vous tapez apportera probablement moins.
La distance mesurée par la caméra de profondeur
Quand vous prenez la photo avec l’appareil photo de Soba sur un iPhone avec scanner LiDAR ou au moins deux caméras arrière, Soba mesure la distance jusqu’aux aliments et indique au modèle la largeur du cadre en centimètres. Nutrition5k comprend un enregistrement de caméra de profondeur pour chaque photo, nous avons donc refait ses 200 repas avec cette mesure. La part à 10 g ou moins est passée de 77,5 % à 82,0 % (intervalle à 95 % pour le gain : 1,0 à 8,3 points), et l’erreur médiane est descendue de 3,9 à 3,1 g. Les grands repas restaient sous-estimés, dans 12 cas sur 13. Ces photos ont été prises à la verticale depuis une hauteur fixe. Nous n’avons pas encore mesuré les photos prises en biais.
Avec la mesure de profondeur et une indication, le résultat était de 78,5 %. Sur ces photos de cantine, l’indication apportait peu, et l’intervalle à 95 % pour l’écart avec la profondeur seule, de −8,8 à +1,5 points, inclut zéro.
Vos corrections
Si vous connaissez le poids de la portion, saisissez-le : tous les chiffres sont recalculés. Le poids de la portion a été la cause principale des grosses erreurs dans ce test.
Soba affiche une plage de poids à côté de chaque estimation. Sur les 200 assiettes pesées de Nutrition5k, le poids réel se trouvait dans cette plage dans 97 cas, soit environ la moitié. La plage indique où le modèle s’attend à trouver le poids. Une balance de cuisine reste le contrôle le plus sûr.
Résultats selon la taille du repas
| Glucides réels | Repas | À 10 g ou moins | À 20 g ou moins | Erreur médiane |
|---|---|---|---|---|
| Moins de 15 g | 167 | 88,6 % | 98,8 % | 2,0 g |
| 15 à 30 g | 94 | 69,1 % | 88,3 % | 6,2 g |
| 30 à 60 g | 97 | 54,6 % | 84,5 % | 8,4 g |
| 60 g ou plus | 42 | 19,0 % | 38,1 % | 25,4 g |
Le résultat global dépend de cette répartition : 42 % des repas du test contenaient moins de 15 g de glucides. Si vous mangez généralement des repas plus copieux, attendez-vous à une erreur typique plus grande.
Ces groupes reposent sur les glucides réels, que l’app ne connaît pas au moment du scan. Si l’on groupe les repas selon l’estimation de Soba, 84 repas ont été estimés à 40 g ou plus, et 55 d’entre eux s’écartaient de plus de 10 g : 32 trop haut et 23 trop bas. C’est pourquoi l’app propose de peser l’aliment principal riche en glucides quand une estimation atteint 40 g.
Quatre repas du test
Deux estimations proches et deux erreurs. Les noms et les poids des aliments viennent des réponses de Soba.
Photos : jeu de données Nutrition5k, Google Research, CC BY 4.0. Redimensionnées pour cette page.
Deux jeux de données, deux types de photos
| Jeu de données, 200 repas chacun | À 10 g ou moins | Erreur médiane | Erreur moyenne |
|---|---|---|---|
| Nutrition5k | 77,5 % | 3,9 g | 6,8 g |
| SNAPMe | 59,5 % | 6,8 g | 12,2 g |
Les assiettes de Nutrition5k viennent de cantines de Google. Chaque ingrédient a été pesé, et une caméra fixe a pris chaque photo à la verticale. Ce sont des conditions contrôlées, et c’est là que Soba a obtenu ses meilleurs résultats.
SNAPMe est une étude du ministère de l’Agriculture des États-Unis et de l’université UC Davis. Au total, 95 personnes aux États-Unis ont photographié leurs propres repas avant de manger et ont tenu un journal alimentaire dans ASA24, un outil d’évaluation alimentaire. Ces photos ressemblent à celles que l’on prend avec Soba. Les valeurs de référence viennent des journaux alimentaires des participants, qui ont leurs propres erreurs. Une partie de l’écart entre les deux jeux de données vient des photos, une autre des valeurs de référence.
Comparaison avec une étude publiée
Rodríguez-Jiménez et ses collègues (Nutrients, 2025) ont testé ChatGPT-5 sur 74 repas SNAPMe, à partir des photos seules. Ils indiquent une erreur absolue moyenne de 12,99 g de glucides et une médiane de 8,75 g.
| Photo seule | Repas | Erreur moyenne | Erreur médiane |
|---|---|---|---|
| ChatGPT-5 (publié) | 74 | 12,99 g | 8,75 g |
| Soba | 200 | 12,2 g | 6,8 g |
Les auteurs ont choisi leurs repas autrement et ont corrigé certaines valeurs de référence à la main : la comparaison des deux lignes reste donc approximative. Elles montrent un niveau d’erreur similaire. Dans la même étude, une courte note sur les lipides, le sucre et la viande du repas a fait baisser l’erreur moyenne à 11,29 g. Dans Soba, une indication nommant les aliments a fait baisser l’erreur moyenne sur ses 200 repas SNAPMe de 12,2 à 10,2 g.
Quel modèle Soba utilise
Nous avons testé huit modèles sur les 200 premiers repas avec les instructions de Soba.
| Modèle | À 10 g ou moins | Temps médian |
|---|---|---|
| Google Gemini 3.7 Flash | 73,0 % | 3,7 s |
| Google Gemini 3.8 Flash | 71,5 % | 4,8 s |
| Google Gemini 3.5 Flash-Lite | 69,0 % | 2,1 s |
| Google Gemini 3.6 Flash | 67,5 % | 3,3 s |
| OpenAI GPT-6 Luna | 65,0 % | 6,9 s |
| OpenAI GPT-6 Luna Pro | 63,0 % | 11,7 s |
| OpenAI GPT-6.1 Sol | 58,0 % | 13,1 s |
| Anthropic Claude Sonnet 5.5 | 53,0 % | 6,0 s |
Un passage par modèle via OpenRouter, avec les réglages de requête que Soba utilisait avant octobre 2026. Claude Sonnet 5.5 a renvoyé un aliment vide pour 41 des 200 photos chez le fournisseur choisi par OpenRouter. Sur les autres photos, il a atteint 66,7 %. GPT-6.1 Sol a surestimé les glucides de 10 g en moyenne.
Gemini 3.7 Flash est arrivé en tête sur ces 200 repas. Un modèle qui gagne une comparaison entre huit modèles paraît souvent meilleur qu’il ne l’est, nous l’avons donc vérifié sur le second lot de 200 repas. Là, il a obtenu le même score que Gemini 3.6 Flash, 70,5 % chacun, pour un prix plus élevé. Soba reste sur Gemini 3.6 Flash.
Nous avons aussi essayé de donner à Gemini 3.6 Flash plus de temps de raisonnement. Sur 400 repas, la part à 10 g ou moins a augmenté de 4,1 points, tandis que la part à 5 g ou moins et le nombre d’erreurs de plus de 30 g sont restés les mêmes. Chaque scan prenait deux fois plus de temps, 6,6 secondes au lieu de 3,5. Nous avons gardé le réglage le plus rapide.
La comparaison complète, avec intervalles à 95 %, données par repas et un script qui recalcule chaque tableau : huit modèles d’IA sur des photos de repas (en anglais).
Comment nous avons mené le test
Choix des repas
Le point de départ comptait 505 assiettes Nutrition5k de la partie test officielle du jeu de données pour les photos vues de dessus et 1 457 photos SNAPMe prises avant le repas. Auparavant, nous avions retiré 22 entrées : des assiettes et des repas aux valeurs invalides, et des photos SNAPMe qu’on ne pouvait pas associer à exactement un enregistrement alimentaire.
Un script avec une graine aléatoire fixe a pris 100 repas dans chaque jeu de données : 25 dans chaque quart de la plage de glucides. Les assiettes de cantine photographiées dans les mêmes dix minutes se ressemblent souvent, le script a donc limité le nombre d’assiettes prises dans une même fenêtre de dix minutes. Il a ensuite choisi un second lot de 200 repas de la même façon, sans aucune photo ni aucun repas en commun avec le premier lot.
Deux lots
Nous avons étudié les erreurs et essayé des modifications des instructions de Soba uniquement sur les 200 premiers repas. Les 200 suivants ont servi à vérifier si un résultat se confirmait. C’est ainsi que nous avons repéré le résultat de Gemini 3.7 Flash décrit plus haut.
Exécution de Soba
Chaque photo est passée par le même code serveur que l’app : mêmes instructions, même modèle, mêmes réglages. Les photos ont été réduites à 1 024 pixels sur le côté le plus long, comme le fait l’app avant l’envoi. Le passage principal s’est fait sans indication écrite, sans données de caméra de profondeur et sans correction après coup. Les passages avec indication ou avec données de profondeur utilisaient le même code et changeaient seulement cette donnée d’entrée. La langue de l’app était réglée sur le russe.
Mesure de l’erreur
Soba donne les glucides nets (sans les fibres) et les fibres séparément. Les jeux de données donnent les glucides totaux, nous avons donc comparé les glucides nets de Soba plus les fibres avec le total. La mesure principale est la part des repas où la différence est de 10 g ou moins. Un scan échoué compterait comme une erreur ; il n’y en a eu aucun. L’intervalle à 95 % vient d’un bootstrap avec 10 000 rééchantillonnages, qui garde ensemble les repas d’un même participant SNAPMe ou d’une même fenêtre de dix minutes à la cantine.
Limites de ce test
- Tous les repas viennent des États-Unis. Les assiettes Nutrition5k ont été photographiées à la verticale avec un seul dispositif de caméra.
- Les valeurs de référence contiennent des erreurs. Les valeurs SNAPMe viennent de journaux alimentaires remplis par les participants eux-mêmes. Sur certaines assiettes Nutrition5k, les étiquettes omettent des aliments visibles.
- Nous avons testé la reconnaissance à partir de photos. Les descriptions écrites, la recherche par code-barres et la saisie manuelle sont restées hors du test.
- Les indications du test nommaient les aliments exactement comme les jeux de données les avaient enregistrés, et leur gain a beaucoup varié entre les deux lots de repas (voir « Une indication écrite »).
- Le résultat avec profondeur porte uniquement sur les 200 photos Nutrition5k, toutes prises à la verticale.
- Nous avons mesuré les glucides. Les protéines, les lipides et les calories sortent du cadre de cette page.
- Les fournisseurs mettent à jour leurs modèles. Les résultats décrivent Soba en octobre 2026.
Soba n’est pas un dispositif médical. Ses chiffres sont des estimations. Comparez-les avec ce qu’il y a dans votre assiette et avec les étiquettes des produits, et suivez votre plan de traitement du diabète.
Modifications après le test
- Le modèle de secours de Soba, fourni par OpenAI, ne pouvait pas fonctionner. Un réglage de requête, la température, n’est pas accepté par les modèles OpenAI, et la requête autorisait seulement les fournisseurs qui acceptent tous les réglages. Nous avons retiré ce réglage. Le modèle principal a obtenu 68,9 % avec ce réglage et 68,5 % sans, ce qui reste dans la variation normale entre passages répétés. Gemini 3.7 Flash et GPT-6 Luna sont désormais les modèles de secours.
- Dans 9 des 3 614 requêtes de test (0,25 %), Gemini a répété une même phrase en boucle, et le scan a pris de 35 à 87 secondes. Soba limite désormais la longueur de la réponse, ce qui arrête une telle boucle plus tôt.
Données et sources
Résultats par repas (CSV, 400 lignes, en anglais) : identifiant dans le jeu de données, glucides de référence, estimation de Soba à partir de la photo seule, texte de l’indication, et estimations avec indication et avec données de profondeur. Le fichier suit la licence de SNAPMe, CC BY-SA 4.0.
- Thames Q, Karpur A, Norris W, et al. Nutrition5k: Towards Automatic Nutritional Understanding of Generic Food. CVPR 2021. arXiv:2103.03375. Jeu de données : github.com/google-research-datasets/Nutrition5k, CC BY 4.0.
- Larke JA, Chin EL, Bouzid YY, et al. Surveying Nutrient Assessment with Photographs of Meals (SNAPMe): A Benchmark Dataset of Food Photos for Dietary Assessment. Nutrients. 2023;15(23):4972. PMC10708545. Données : USDA Ag Data Commons, CC BY-SA 4.0.
- Rodríguez-Jiménez et al. Image-Based Dietary Energy and Macronutrients Estimation with ChatGPT-5: Cross-Source Evaluation Across Escalating Context Scenarios. Nutrients. 2025;17(22):3613. PMC12655113.