Soba

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

400 photos, chacune scannée une fois avec une indication et une fois sans. L’indication listait les principaux aliments sans quantités, par exemple « steak; cauliflower; chicken ». Tous les scans ont abouti. Temps médian : 3,1 secondes par 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

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.

Part des repas à 10 g ou moins des glucides réels

Les 400 photos

Photo seule68,5 %
Photo et indication72,8 %

200 photos de cantine avec données de profondeur

Photo seule77,5 %
Photo et profondeur82,0 %
Photo, profondeur et indication78,5 %

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éelsRepasÀ 10 g ou moinsÀ 20 g ou moinsErreur médiane
Moins de 15 g16788,6 %98,8 %2,0 g
15 à 30 g9469,1 %88,3 %6,2 g
30 à 60 g9754,6 %84,5 %8,4 g
60 g ou plus4219,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.

Nuage de points des 400 repas : glucides réels sur l’axe horizontal, estimation de Soba sur l’axe vertical. Jusqu’à environ 50 g, la plupart des points se trouvent dans la bande de ±10 g. Au-delà de 60 g, la plupart des points se trouvent sous la bande.
Chaque repas du test. Les points dans la bande grisée sont à 10 g ou moins. Les points sous la ligne pointillée sont des sous-estimations. Une boisson, le café avec crème à café lu comme de la sauce caramel, a été estimée à 162 g et apparaît sur le bord supérieur.

Quatre repas du test

Deux estimations proches et deux erreurs. Les noms et les poids des aliments viennent des réponses de Soba.

Assiette avec deux morceaux d’épi de maïs, du riz blanc, du chou-fleur et une pomme.
Réel 49,7 g · Soba 49,7 gMaïs, riz, chou-fleur et une pomme. Soba a estimé la pomme à 130 g (elle pesait 117 g) et le maïs à 60 g (74 g). Les erreurs de poids se sont compensées.
Pommes de terre rôties avec du quinoa et des légumes sur une assiette blanche.
Réel 46,0 g · Soba 40,8 gPommes de terre rôties avec du quinoa. Soba a pris le quinoa pour du couscous. Les deux contiennent des quantités de glucides similaires, le total est donc resté proche.
Une part de pizza au fromage et un cookie au chocolat sur une assiette blanche.
Réel 33,3 g · Soba 46,6 gUne part de pizza et un cookie. Soba les a estimés tous les deux plus lourds qu’ils ne l’étaient : pizza 85 g (réel 47 g), cookie 35 g (réel 27 g).
Quatre parts de pizza avec de l’ananas, des dés de poulet et des tomates cerises sur une assiette blanche.
Réel 85,1 g · Soba 59,8 gPizza au poulet, à l’ananas et aux tomates. La pizza pesait 233 g, Soba a estimé 180 g. Sur les 23 erreurs de plus de 30 g, 16 concernaient des repas de 60 g de glucides ou plus.

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 moinsErreur médianeErreur moyenne
Nutrition5k77,5 %3,9 g6,8 g
SNAPMe59,5 %6,8 g12,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 seuleRepasErreur moyenneErreur médiane
ChatGPT-5 (publié)7412,99 g8,75 g
Soba20012,2 g6,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 moinsTemps médian
Google Gemini 3.7 Flash73,0 %3,7 s
Google Gemini 3.8 Flash71,5 %4,8 s
Google Gemini 3.5 Flash-Lite69,0 %2,1 s
Google Gemini 3.6 Flash67,5 %3,3 s
OpenAI GPT-6 Luna65,0 %6,9 s
OpenAI GPT-6 Luna Pro63,0 %11,7 s
OpenAI GPT-6.1 Sol58,0 %13,1 s
Anthropic Claude Sonnet 5.553,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

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

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.