Soba

Nauwkeurigheidstest · oktober 2026

We hebben de koolhydraatschattingen van Soba getest op 400 maaltijdfoto's

De foto's komen uit twee openbare onderzoeksdatasets waarin de koolhydraten van elke maaltijd waren gewogen of geregistreerd. Hieronder staan de resultaten, de methode en de maaltijden waarbij Soba ernaast zat.

68,5%van de maaltijden binnen 10 g van de werkelijke koolhydraten, op basis van één foto

+4procentpunten meer binnen 10 g als een hint de producten precies noemde zoals de studie ze had geregistreerd

5,2 gmediane fout op basis van één foto

400 foto's, elk één keer gescand met een hint en één keer zonder. De hint noemde de belangrijkste producten zonder hoeveelheden, bijvoorbeeld ‘steak; cauliflower; chicken’. Er waren geen mislukte scans. Mediane tijd: 3,1 seconden per foto.

Wat we vonden

De getallen in dit deel zijn de eerste schattingen van Soba op basis van alleen de foto, voordat iemand een gewicht corrigeerde of een hint toevoegde. 49% van de schattingen lag binnen 5 g van de werkelijke koolhydraten. Het 95%-betrouwbaarheidsinterval voor het aandeel binnen 10 g is 64,0% tot 72,9%.

Kleine en middelgrote maaltijden kwamen het dichtst bij. Bij maaltijden onder 15 g koolhydraten lag 89% van de schattingen binnen 10 g.

Grote maaltijden werden meestal onderschat. Bij 38 van de 42 maaltijden met 60 g koolhydraten of meer was de schatting van Soba te laag. De mediane schatting was 64% van de werkelijke hoeveelheid. De belangrijkste oorzaak is het gewicht van de portie: bij 30 van deze 38 maaltijden schatte Soba het eten minstens 15% lichter dan het was, terwijl de koolhydraten per 100 g meestal dicht bij de werkelijke waarde lagen.

Wat dit betekent als je Soba gebruikt

Wat je in de app kunt toevoegen

De resultaten hierboven komen uit één foto en verder niets. In de app kun je een paar woorden over de maaltijd toevoegen, en op iPhones met een dieptecamera meet Soba ook de afstand tot het eten. We hebben de test met elk van beide herhaald.

Aandeel maaltijden binnen 10 g van de werkelijke koolhydraten

Alle 400 foto's

Alleen foto68,5%
Foto en hint72,8%

200 kantinefoto's met dieptegegevens

Alleen foto77,5%
Foto en diepte82,0%
Foto, diepte en hint78,5%

Een hint in tekst

Een paar woorden zoals ‘zoete thee’ of ‘boekweit’ voegen toe wat een foto niet kan laten zien. Voor de test kreeg elk van de 400 foto's een hint met de namen van de belangrijkste producten uit de registratie van de dataset, zonder hoeveelheden, bijvoorbeeld ‘Coffee, brewed; Coffee creamer, liquid, fat free’. Het aandeel binnen 10 g steeg van 68,5% naar 72,8% (95%-interval voor de winst: 0,7 tot 7,9 procentpunten), en de mediane fout daalde van 5,2 naar 4,5 g.

De hint hielp het meest waar de foto op meer dan één manier te lezen was. Zonder hint zag Soba die koffie met koffiemelk aan voor karamelsaus en schatte 162 g koolhydraten. Met de hint schatte Soba 5,5 g, en volgens de voedingsregistratie was het 2,7 g. Op de SNAPMe-foto's die mensen van hun eigen maaltijden maakten, steeg het aandeel binnen 10 g van 59,5% naar 67,5%. Op de kantinefoto's, waar de producten goed te zien zijn, veranderde het nauwelijks: van 77,5% naar 78,0%.

Een hint noemt het product, maar de hoeveelheid schat Soba nog steeds op basis van de foto. Grote maaltijden werden met een hint in 37 van de 42 gevallen onderschat, en zonder hint in 38. De hints in de test namen de registraties van de datasets letterlijk over. De meeste winst kwam uit de eerste set van 200 maaltijden, 8,0 procentpunten; in de tweede set was het 0,5. Een hint die je zelf typt, voegt waarschijnlijk minder toe.

Afstand via de dieptecamera

Als je de foto maakt met de camera van Soba op een iPhone met een LiDAR-scanner of met twee of meer camera's aan de achterkant, meet Soba de afstand tot het eten en vertelt het model hoe breed het beeld is in centimeters. Nutrition5k bevat bij elke foto een opname van een dieptecamera, dus we hebben de 200 maaltijden uit die dataset herhaald met deze meting erbij. Het aandeel binnen 10 g steeg van 77,5% naar 82,0% (95%-interval voor de winst: 1,0 tot 8,3 procentpunten), en de mediane fout daalde van 3,9 naar 3,1 g. Grote maaltijden werden nog steeds onderschat, in 12 van de 13 gevallen. Deze foto's zijn recht van boven genomen, vanaf een vaste hoogte. Foto's die schuin zijn genomen, hebben we nog niet gemeten.

Met zowel de dieptemeting als een hint was het resultaat 78,5%. Op deze kantinefoto's had de hint weinig toe te voegen, en het 95%-interval voor het verschil met alleen diepte, −8,8 tot +1,5 procentpunten, bevat nul.

Jouw correcties

Als je het gewicht van de portie weet, vul het dan in. Alle getallen worden dan opnieuw berekend. In deze test was het gewicht van de portie de belangrijkste oorzaak van grote fouten.

Soba toont naast elke schatting een marge voor het gewicht. Bij de 200 gewogen borden van Nutrition5k viel het echte gewicht van het bord in 97 gevallen binnen die marge, ongeveer de helft. De marge laat zien waar het model het gewicht verwacht. Een keukenweegschaal is de zekerste controle.

Resultaten naar grootte van de maaltijd

Werkelijke koolhydratenMaaltijdenBinnen 10 gBinnen 20 gMediane fout
Minder dan 15 g16788,6%98,8%2,0 g
15 tot 30 g9469,1%88,3%6,2 g
30 tot 60 g9754,6%84,5%8,4 g
60 g of meer4219,0%38,1%25,4 g

Het totale resultaat hangt af van deze verdeling: 42% van de testmaaltijden had minder dan 15 g koolhydraten. Eet je meestal grotere maaltijden, reken dan op een grotere typische fout.

Deze groepen gaan uit van de werkelijke koolhydraten, en die kent de app niet als je scant. Gegroepeerd naar de eigen schatting van Soba kwamen 84 maaltijden uit op 40 g of meer, en 55 daarvan weken meer dan 10 g af: 32 te hoog en 23 te laag. Daarom stelt de app voor om het belangrijkste koolhydraatrijke product te wegen als een schatting 40 g bereikt.

Spreidingsdiagram van 400 maaltijden: werkelijke koolhydraten op de horizontale as, de schatting van Soba op de verticale as. Tot ongeveer 50 g liggen de meeste punten binnen de band van ±10 g. Boven 60 g liggen de meeste punten onder de band.
Elke maaltijd uit de test. Punten binnen de gekleurde band liggen binnen 10 g. Punten onder de stippellijn zijn onderschattingen. Eén drankje, koffie met koffiemelk die als karamelsaus werd gelezen, kwam uit op 162 g en staat aan de bovenrand.

Vier maaltijden uit de test

Twee schattingen die dichtbij lagen en twee missers. De namen en gewichten van de producten komen uit de antwoorden van Soba.

Bord met twee stukken maïskolf, witte rijst, bloemkool en een appel.
Werkelijk 49,7 g · Soba 49,7 gMaïs, rijst, bloemkool en een appel. Soba schatte de appel op 130 g (hij woog 117 g) en de maïs op 60 g (74 g). De fouten in het gewicht vielen tegen elkaar weg.
Geroosterde aardappelen met quinoa en groenten op een wit bord.
Werkelijk 46,0 g · Soba 40,8 gGeroosterde aardappelen met quinoa. Soba zag de quinoa aan voor couscous. Die twee bevatten ongeveer evenveel koolhydraten, dus het totaal bleef dichtbij.
Een punt kaaspizza en een chocoladekoekje op een wit bord.
Werkelijk 33,3 g · Soba 46,6 gEen punt pizza en een koekje. Soba schatte beide zwaarder dan ze waren: pizza 85 g (werkelijk 47 g), koekje 35 g (werkelijk 27 g).
Vier stukken pizza met ananas, kipblokjes en cherrytomaten op een wit bord.
Werkelijk 85,1 g · Soba 59,8 gPizza met kip, ananas en tomaten. De pizza woog 233 g, Soba schatte 180 g. 16 van de 23 fouten boven 30 g zaten in maaltijden met 60 g koolhydraten of meer.

Foto's: dataset Nutrition5k, Google Research, CC BY 4.0. Verkleind voor deze pagina.

Twee datasets, twee soorten foto's

Dataset, elk 200 maaltijdenBinnen 10 gMediane foutGemiddelde fout
Nutrition5k77,5%3,9 g6,8 g
SNAPMe59,5%6,8 g12,2 g

De borden van Nutrition5k komen uit kantines van Google. Elk ingrediënt werd gewogen, en een vaste camera nam elke foto recht van boven. Dat zijn nette omstandigheden, en hier deed Soba het het best.

SNAPMe is een studie van het Amerikaanse ministerie van Landbouw (USDA) en UC Davis. 95 mensen in de VS fotografeerden hun eigen maaltijden voor het eten en hielden een voedingsregistratie bij in ASA24, een hulpmiddel voor voedingsonderzoek. De foto's lijken op de foto's die mensen met Soba maken. De referentiewaarden komen uit de voedingsregistraties van de deelnemers, en die bevatten zelf ook fouten. Een deel van het verschil tussen de twee datasets komt door de foto's, en een deel door de referentiewaarden.

Vergeleken met een gepubliceerde studie

Rodríguez-Jiménez en collega's (Nutrients, 2025) testten ChatGPT-5 op 74 SNAPMe-maaltijden met alleen foto's. Ze rapporteren een gemiddelde absolute fout van 12,99 g koolhydraten en een mediaan van 8,75 g.

Alleen fotoMaaltijdenGemiddelde foutMediane fout
ChatGPT-5 (gepubliceerd)7412,99 g8,75 g
Soba20012,2 g6,8 g

De auteurs kozen hun maaltijden op een andere manier en corrigeerden sommige referentiewaarden met de hand, dus de twee rijen zijn alleen ruwweg te vergelijken. Ze laten een vergelijkbaar foutniveau zien. In dezelfde studie verlaagde een korte notitie over het vet, de suiker en het vlees in de maaltijd de gemiddelde fout tot 11,29 g. Bij Soba verlaagde een hint met de namen van de producten de gemiddelde fout op de 200 SNAPMe-maaltijden van 12,2 naar 10,2 g.

Welk model Soba gebruikt

We hebben acht modellen op de eerste 200 maaltijden laten draaien met de instructies van Soba.

ModelBinnen 10 gMediane tijd
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

Eén run per model via OpenRouter, met de instellingen voor verzoeken die Soba vóór oktober 2026 gebruikte. Claude Sonnet 5.5 gaf bij 41 van de 200 foto's een leeg product terug via de provider die OpenRouter had gekozen. Op de andere foto's haalde het 66,7%. GPT-6.1 Sol schatte de koolhydraten gemiddeld 10 g te hoog.

Gemini 3.7 Flash scoorde het best op deze 200 maaltijden. Een model dat één vergelijking van de acht wint, lijkt vaak beter dan het is, dus we hebben het gecontroleerd op de tweede set van 200 maaltijden. Daar scoorde het hetzelfde als Gemini 3.6 Flash, elk 70,5%, tegen een hogere prijs. Soba blijft bij Gemini 3.6 Flash.

We hebben Gemini 3.6 Flash ook meer tijd gegeven om te redeneren. Over 400 maaltijden steeg het aandeel binnen 10 g met 4,1 procentpunten, terwijl het aandeel binnen 5 g en het aantal fouten boven 30 g gelijk bleven. Elke scan duurde twee keer zo lang, 6,6 seconden in plaats van 3,5. We hebben de snellere instelling gehouden.

De volledige vergelijking, met 95%-intervallen, gegevens per maaltijd en een script dat elke tabel opnieuw berekent: acht AI-modellen op maaltijdfoto’s (in het Engels).

Zo hebben we de test uitgevoerd

De maaltijden kiezen

We begonnen met 505 borden van Nutrition5k uit de officiële testsplitsing van de dataset voor foto's van boven, en 1.457 SNAPMe-foto's die voor het eten waren genomen. Daarvoor hadden we 22 items verwijderd: borden en maaltijden met ongeldige waarden, en SNAPMe-foto's die niet aan precies één voedingsregistratie te koppelen waren.

Een script met een vaste random seed nam 100 maaltijden uit elke dataset: 25 uit elk kwart van het koolhydraatbereik. Kantineborden die binnen dezelfde tien minuten zijn gefotografeerd, lijken vaak op elkaar, dus het script beperkte hoeveel borden het uit één tijdvak van tien minuten nam. Daarna koos het op dezelfde manier een tweede set van 200 maaltijden, zonder foto's of maaltijden uit de eerste set.

Twee sets

We hebben fouten bestudeerd en wijzigingen in de instructies van Soba alleen op de eerste 200 maaltijden uitgeprobeerd. De tweede 200 dienden om te controleren of een resultaat standhield. Zo ontdekten we dat het resultaat van Gemini 3.7 Flash hierboven niet standhield.

Soba laten draaien

Elke foto ging door dezelfde servercode die de app gebruikt: dezelfde instructies, hetzelfde model en dezelfde instellingen. Foto's werden verkleind tot 1.024 pixels aan de langste zijde, zoals de app doet voor het versturen. De hoofdrun had geen hint in tekst, geen gegevens van de dieptecamera en geen correctie achteraf. De runs met een hint of dieptegegevens gebruikten dezelfde code en veranderden alleen die invoer. De taal van de app stond op Russisch.

De fout meten

Soba geeft netto koolhydraten (zonder vezels) en vezels apart. De datasets geven de totale koolhydraten, dus we hebben de netto koolhydraten plus vezels van Soba vergeleken met het totaal. De belangrijkste maat is het aandeel maaltijden waarbij het verschil 10 g of minder is. Een mislukte scan zou als misser tellen; die waren er niet. Het 95%-interval komt uit een bootstrap met 10.000 hersteekproeven, waarbij maaltijden van één SNAPMe-deelnemer of uit één tijdvak van tien minuten in de kantine bij elkaar blijven.

Beperkingen van deze test

Soba is geen medisch hulpmiddel. De getallen zijn schattingen. Vergelijk ze met het eten op je bord en met de etiketten van producten, en volg je behandelplan voor diabetes.

Wijzigingen na de test

Gegevens en bronnen

Resultaten per maaltijd (CSV, 400 rijen, in het Engels): ID in de dataset, referentiewaarde voor koolhydraten, de schatting van Soba op basis van alleen de foto, de tekst van de hint, en de schattingen met de hint en met dieptegegevens. Het bestand valt onder de licentie van SNAPMe, CC BY-SA 4.0.