Soba

Modellvergleich · Oktober 2026

Acht KI-Modelle, 200 Essensfotos: 53 bis 73 % der Kohlenhydrat-Schätzungen innerhalb von 10 g

Vier Gemini-Flash-Modelle erreichten 67,5 bis 73,0 %, drei OpenAI-Modelle 58,0 bis 65,0 %. Claude Sonnet 5.5 erreichte 53,0 %, wenn 41 fehlgeschlagene Scans als Fehltreffer zählen, und 66,7 % bei den beantworteten Scans. Die Intervalle der vier Gemini-Modelle überlappen sich, deshalb benennt dieser Test kein einzelnes bestes Modell.

73,0 %höchster Wert der vier Gemini-Flash-Modelle, die 67,5 bis 73,0 % erreichten

65,0 %höchster Wert der drei OpenAI-Modelle, die 58,0 bis 65,0 % erreichten

53,0 %Claude Sonnet 5.5 über OpenRouter und Azure, bei beantworteten Scans 66,7 %

Ein Foto pro Mahlzeit, ein Prompt, Läufe vom 7. Oktober 2026. Die Hälfte der Mahlzeiten sind gewogene Kantinenteller, die andere Hälfte sind Fotos von zu Hause mit einem Ernährungsprotokoll als Referenz. Nur auf den gewogenen Tellern reicht die Spanne von 57 bis 82 %. Der Autor entwickelt Soba, und Soba nutzt Gemini 3.6 Flash. Eine Schätzung ersetzt das Wiegen nicht.

Direkt zu: Methode, der Claude-Weg, Holdout, wo alle Modelle scheitern, Grenzen, Interessenkonflikt, Daten und Skript, zitieren.

Wo jedes Modell gelandet ist

Alle acht Modelle bekamen dieselben 200 Fotos mit demselben Prompt, je ein Lauf. Ein fehlgeschlagener Scan zählt beim Anteil innerhalb von 10 g als Fehltreffer. Die anderen Fehlerspalten nutzen nur beantwortete Scans.

Tabelle 1. Acht Modelle am ersten Satz mit 200 Mahlzeiten

ModellInnerhalb 10 g, 95-%-IntervallMittlerer absoluter Fehler, gVerzerrung, gFehler über 30 gFehlgeschlagene ScansKosten pro Scan, $Median-Zeit, s
Gemini 3.7 Flash73,0 %
66,9 bis 78,8
9,5−1,05,5 %00,00363,7
Gemini 3.8 Flash71,5 %
65,4 bis 77,4
9,9−0,87,0 %00,00304,8
Gemini 3.5 Flash-Lite69,0 %
63,0 bis 75,0
10,2+0,46,0 %00,00172,1
Gemini 3.6 Flash *67,5 %
61,5 bis 73,5
10,1−1,45,5 %00,00283,3
GPT-6 Luna65,0 %
58,3 bis 71,5
10,7+1,28,0 %00,00036,9
GPT-6 Luna Pro63,0 %
56,1 bis 69,9
11,1+1,98,0 %00,001011,7
GPT-6.1 Sol58,0 %
51,0 bis 64,9
14,9+10,111,5 %00,007113,1
Claude Sonnet 5.553,0 %
46,2 bis 59,9
10,9+1,16,3 %410,01456,0
Claude Sonnet 5.5, nur beantwortete Scans66,7 %
59,7 bis 74,1
10,9+1,16,3 %00,01385,2

* Soba nutzt dieses Modell mit Reasoning low. Der Stern markiert es in jeder Tabelle. Die zweite Zeile eines Anteils ist sein 95-%-Intervall. Fehler über 30 g sind ein Anteil an den beantworteten Scans.

Anteil der Mahlzeiten innerhalb von 10 g mit 95-%-Intervallen, in drei Gruppen: erster Satz, alle 400 Mahlzeiten und Holdout. Im ersten Satz reichen die Anteile von 73,0 % bei Gemini 3.7 Flash bis 53,0 % bei Claude Sonnet 5.5, und die meisten Intervalle überlappen sich. Die Tabellen 1, 5 und 6 nennen alle Werte.
Jede Linie ist ein 95-%-Intervall. Ein Abstand, der kleiner als eine Linie ist, kann Zufall sein, und Tabelle 2 prüft jedes Paar an denselben Mahlzeiten. Die Rauten zeigen eine feste Antwort von 10 g.

Was wir gemessen haben

Ein Scan schickt ein Foto an ein Modell und fragt, was auf dem Teller liegt. Das Modell antwortet mit verwertbaren Kohlenhydraten und Ballaststoffen für jedes Lebensmittel. Wir addieren beides, weil die Datensätze Gesamtkohlenhydrate enthalten. Dann vergleichen wir die Summe mit dem Referenzwert der Mahlzeit.

Das Hauptmaß ist der Anteil der Mahlzeiten mit einer Abweichung von höchstens 10 g. Die Grenze von 10 g ist unsere Wahl, und mit der Datendatei kannst du jede andere Grenze prüfen.

Daten

Zwei öffentliche Forschungsdatensätze liefern die Fotos und die Referenzwerte. Jeder Satz mit 200 Mahlzeiten enthält 100 Mahlzeiten aus jedem Datensatz.

Nutrition5k: gewogene Teller

Die Teller von Nutrition5k stammen aus Kantinen von Google. Jede Zutat wurde gewogen, und eine fest montierte Kamera fotografierte jeden Teller senkrecht von oben. Das sind die sichersten Referenzwerte in diesem Test. Die Lizenz ist CC BY 4.0.

SNAPMe: Fotos von zu Hause mit Ernährungsprotokoll

SNAPMe stammt vom US-Landwirtschaftsministerium und der UC Davis. 95 Personen in den USA fotografierten ihre Mahlzeiten vor dem Essen und führten ein Ernährungsprotokoll in ASA24, einem Werkzeug zur Erfassung der Ernährung. Der Referenzwert ist die Summe der Protokollzeilen, die zu einem Foto gehören. Deshalb enthält er die Fehler des Protokolls. Die Lizenz ist CC BY-SA 4.0.

Der Herausgeber nennt Benchmarks zur Nährwertschätzung als vorgesehene Nutzung und bittet darum, mit diesem kleinen Datensatz keine Modelle zu trainieren. Dieser Test trainiert nichts. Diese Seite und die Datendateien enthalten keine SNAPMe-Fotos.

Wie das Skript die Mahlzeiten ausgewählt hat

Ein Skript mit festem Zufallswert nahm je Datensatz 25 Mahlzeiten aus jedem Viertel des Kohlenhydratbereichs. Es begann mit 505 Tellern aus dem offiziellen Testsplit von Nutrition5k und 1.457 SNAPMe-Fotos, die vor einer Mahlzeit entstanden sind. Es nahm höchstens 2 Fotos pro SNAPMe-Person. Teller aus einem Zehn-Minuten-Fenster sehen sich oft ähnlich. Deshalb nahm das Skript für den ersten Satz 1 Teller pro Fenster und für den Holdout bis zu 3.

Den Holdout wählte das Skript auf dieselbe Weise. Er hat kein Foto, keine Mahlzeit und kein Zehn-Minuten-Fenster mit dem ersten Satz gemeinsam, SNAPMe-Personen können aber in beiden vorkommen. Der Median des Referenzwerts liegt im ersten Satz bei 20,3 g und im Holdout bei 19,1 g.

Methode und Prompt-Protokoll

Jeder Scan schickte am 7. Oktober 2026 ein Foto und denselben Prompt über OpenRouter. Kein Scan hatte einen Texthinweis, Tiefendaten oder eine spätere Korrektur. Wir haben jedes Foto auf 1.024 Pixel an der längsten Seite verkleinert, JPEG-Qualität 70. Der Testcode stellte die Antwortsprache auf Russisch.

Der Prompt in Worten

Der Prompt ist der, den Soba im Oktober 2026 nutzte. Seinen Wortlaut halten wir geheim und beschreiben ihn hier. Er verlangt vom Modell Folgendes:

Wir haben diesen Prompt an Gemini entwickelt und abgestimmt, deshalb kann er Gemini begünstigen.

Intervalle

Die 95-%-Intervalle stammen aus einem Cluster-Bootstrap mit 10.000 Wiederholungen und dem Startwert 20261007. Ein Cluster ist eine SNAPMe-Person oder ein Zehn-Minuten-Fenster von Nutrition5k. Das Skript zieht die Cluster innerhalb jedes Datensatzes neu, und beide Datensätze zählen gleich viel. Differenzen zwischen Modellen nutzen dieselben Wiederholungen an denselben Mahlzeiten.

Für Mehrfachvergleiche haben wir nicht korrigiert. Acht Modelle ergeben 28 Paare, also können ein oder zwei Paare zufällig null ausschließen.

Ergebnisse an 200 Mahlzeiten: welche Abstände halten

Tabelle 2 vergleicht die Modelle Mahlzeit für Mahlzeit. Fett markiert eine Differenz, deren 95-%-Intervall null ausschließt. Ein Minus bedeutet, dass das Modell in der Zeile niedriger liegt als das Modell in der Spalte.

Tabelle 2. Differenzen im ersten Satz, in Punkten

ModellDifferenz zu Gemini 3.7 Flash, PunkteDifferenz zu Gemini 3.8 Flash, PunkteDifferenz zu Gemini 3.5 Flash-Lite, PunkteDifferenz zu Gemini 3.6 Flash, Punkte
Gemini 3.7 FlashBasis+1,5
−2,5 bis +5,5
+4,0
−1,4 bis +9,4
+5,5
+0,9 bis +10,3
Gemini 3.8 Flash−1,5
−5,5 bis +2,5
Basis+2,5
−2,5 bis +7,7
+4,0
−0,5 bis +8,6
Gemini 3.5 Flash-Lite−4,0
−9,4 bis +1,4
−2,5
−7,7 bis +2,5
Basis+1,5
−3,0 bis +6,0
Gemini 3.6 Flash *−5,5
−10,3 bis −0,9
−4,0
−8,6 bis +0,5
−1,5
−6,0 bis +3,0
Basis
GPT-6 Luna−8,0
−14,5 bis −1,5
−6,5
−13,2 bis +0,4
−4,0
−10,5 bis +2,7
−2,5
−9,5 bis +4,7
GPT-6 Luna Pro−10,0
−17,1 bis −3,0
−8,5
−15,5 bis −1,5
−6,0
−13,0 bis +1,0
−4,5
−12,0 bis +2,9
GPT-6.1 Sol−15,0
−22,1 bis −7,7
−13,5
−20,7 bis −6,0
−11,0
−17,5 bis −4,6
−9,5
−16,1 bis −2,7
Claude Sonnet 5.5−20,0
−26,6 bis −13,1
−18,5
−25,0 bis −11,8
−16,0
−22,4 bis −9,5
−14,5
−20,9 bis −8,0

Wiederholte Läufe zeigen das Rauschen. Gemini 3.6, 3.7 und 3.8 Flash liefen zweimal auf diesen Fotos. Ihre Anteile änderten sich von 67,5 auf 67,0 %, von 73,0 auf 74,5 % und von 71,5 auf 73,0 %. Das Ergebnis blieb bei 94,5 bis 95,5 % der Mahlzeiten gleich. Der mittlere Abstand zwischen zwei Antworten auf ein Foto lag im Median bei etwa 1 g, der größte bei 59,5 g.

Tabelle 3. Derselbe Lauf nach Datensatz

ModellNutrition5k, gewogen: innerhalb 10 gNutrition5k: mittlerer absoluter Fehler, gSNAPMe, Protokoll: innerhalb 10 gSNAPMe: mittlerer absoluter Fehler, g
Gemini 3.7 Flash82,0 %
74,0 bis 89,0
5,464,0 %
54,5 bis 73,2
13,6
Gemini 3.8 Flash80,0 %
72,0 bis 87,0
5,963,0 %
53,5 bis 72,1
13,9
Gemini 3.5 Flash-Lite81,0 %
73,0 bis 88,0
5,757,0 %
47,1 bis 66,7
14,7
Gemini 3.6 Flash *80,0 %
72,0 bis 87,0
6,455,0 %
45,5 bis 64,4
13,7
GPT-6 Luna71,0 %
62,0 bis 80,0
8,659,0 %
49,0 bis 68,6
12,7
GPT-6 Luna Pro66,0 %
57,0 bis 75,0
9,360,0 %
49,5 bis 69,6
12,9
GPT-6.1 Sol60,0 %
50,0 bis 70,0
11,156,0 %
46,0 bis 66,0
18,6
Claude Sonnet 5.557,0 %
47,0 bis 67,0
6,849,0 %
39,4 bis 58,6
14,7

Der Abstand zwischen Gemini und OpenAI liegt bei den gewogenen Tellern. Dort erreichen die vier Gemini-Flash-Modelle 80 bis 82 % und die OpenAI-Modelle 60 bis 71 %. GPT-6 Luna Pro und GPT-6.1 Sol liegen 14 und 20 Punkte unter Gemini 3.6 Flash, mit Intervallen, die null ausschließen.

Bei den Fotos von zu Hause erreichen die OpenAI-Modelle 56 bis 60 %, also innerhalb der Gemini-Spanne von 55 bis 64 %. Dort unterscheiden sich nur Gemini 3.7 und 3.8 Flash von Gemini 3.6 Flash mit Intervallen, die null ausschließen, um +9 und +8 Punkte. Fotos von zu Hause sind für jedes Modell schwieriger, und die Protokolle bringen eigene Fehler mit.

Acht Streudiagramme, eines pro Modell, mit dem Referenzwert der Kohlenhydrate waagerecht und der Schätzung senkrecht. Die Punkte von Gemini bleiben bis etwa 50 g nah an der Diagonale und fallen danach darunter. GPT-6.1 Sol hat viele Punkte über der Diagonale.
Jeder beantwortete Scan des ersten Satzes. Punkte im schattierten Band liegen innerhalb von 10 g, Punkte unter der gestrichelten Linie sind zu niedrig. Ein Dreieck am oberen Rand markiert eine Schätzung über 150 g, mit ihrem Wert. Fehlgeschlagene Scans haben keinen Punkt.

Andere Läufe

Andere Läufe auf diesen Fotos änderten das Protokoll, deshalb stehen sie nicht in den Tabellen. Sie nutzten andere Prompt-Versionen, Temperatur aus, Reasoning high, Texthinweise und Tiefendaten. Die Genauigkeitsseite berichtet über Hinweise, Tiefendaten und Sobas späteren Code, der an 400 Mahlzeiten 68,5 % erreichte, wo Tabelle 5 den Wert 68,9 % zeigt. Ein neuntes Modell, Gemini 3.1 Pro Preview, lief mit späterem Code ohne Temperatur und erreichte 66,0 % (59,3 bis 72,5). Unsere Notizen nennen auch ein Qwen-Modell, das wir nach einem kurzen Versuch aussortiert haben. Davon haben wir keine Rohdaten behalten, deshalb steht es hier ohne Zahlen.

Claude Sonnet 5.5 über OpenRouter und Azure

Claude Sonnet 5.5 ist das einzige Modell mit fehlgeschlagenen Scans, deshalb gibt es zwei Sichten. Mit fehlgeschlagenen Scans als Fehltreffern erreicht es 53,0 %. Bei den 159 Scans mit Antwort erreicht es 66,7 %. Die erste Sicht zeigt, was man über diesen Weg bekommt. Die zweite zeigt das Modell, wenn es antwortet.

OpenRouter schickte alle 286 Anfragen an Azure, und jede lieferte HTTP 200 mit normalem Abschluss. Bei 86 von 200 ersten Versuchen enthielt die Antwort ein Lebensmittel mit leerem Namen und 0 g, während der Name des Gerichts ausgefüllt war. Unsere Prüfung lehnte diese Antworten ab und schickte einen erneuten Versuch.

Tabelle 4. Alle Modelle an den Mahlzeiten, die Claude beantwortet hat

Modell159 Mahlzeiten: innerhalb 10 g159 Mahlzeiten: mittlerer absoluter Fehler, gDifferenz zu Claude, Punkte154 Mahlzeiten: innerhalb 10 g154 Mahlzeiten: mittlerer absoluter Fehler, g
Gemini 3.7 Flash73,0 %
66,7 bis 79,9
10,1+6,3
0,0 bis +12,8
72,1 %10,3
Gemini 3.8 Flash73,0 %
66,7 bis 79,6
10,3+6,3
0,0 bis +12,8
72,1 %10,5
Gemini 3.5 Flash-Lite71,7 %
65,4 bis 78,7
10,2+5,0
−1,0 bis +11,7
70,8 %10,5
Gemini 3.6 Flash *69,2 %
62,9 bis 76,4
10,1+2,5
−3,6 bis +9,1
68,2 %10,4
GPT-6 Luna67,3 %
60,4 bis 74,8
10,0+0,6
−6,9 bis +8,2
68,2 %9,7
GPT-6 Luna Pro64,8 %
57,3 bis 72,2
10,5−1,9
−10,0 bis +5,9
66,2 %10,2
GPT-6.1 Sol62,9 %
55,1 bis 70,8
14,5−3,8
−11,7 bis +3,7
64,3 %14,3
Claude Sonnet 5.566,7 %
59,7 bis 74,1
10,9Basis67,5 %10,6

An den 159 Mahlzeiten erreichen Gemini 3.7 und 3.8 Flash 73,0 %. Das sind 6,3 Punkte über Claude, mit einem Intervall von 0,0 bis +12,8, und jede andere Differenz schließt null ein. Ohne die 5 Platzhalter, an 154 Mahlzeiten, erreicht Claude 67,5 %, und jede Differenz schließt null ein. An den Mahlzeiten, die es beantwortet hat, liegt Claude also im Rahmen der Intervalle gleichauf mit den anderen Modellen.

Beide Sichten haben Grenzen. Die 53,0 % können den Weg beschreiben und wenig über das Modell sagen. Wir haben keinen anderen Weg getestet und wissen nicht, warum die leeren Lebensmittel auftraten. Die 66,7 % lassen 41 Mahlzeiten aus, und die übrigen 159 sind etwas leichter. Die anderen sieben Modelle gewinnen dort 0,0 bis 4,9 Punkte. Erneute Versuche kosten auch mehr: 0,0113 $ pro Scan mit einer Anfrage und 0,0189 $ mit zwei.

In einem anderen Preprint lieferte Claude Sonnet 4.6 über die Batch-API von Anthropic bei allen Anfragen auswertbare Lebensmittel (Street, Tabelle 9). Dieser Test nutzte eine andere Modellversion und einen anderen Weg, deshalb erklärt er dieses Ergebnis nicht.

Sieben Konfigurationen an allen 400 Mahlzeiten

Tabelle 5 fasst den ersten Satz und den Holdout zusammen. Sie nennt jede Konfiguration, die an allen 400 Mahlzeiten lief: fünf Einstellungen von Gemini Flash, Gemini 3.5 Flash-Lite und GPT-6 Luna. Gemini 3.6, 3.7 und 3.8 Flash mit Reasoning low liefen im ersten Satz zweimal, deshalb mitteln wir die zwei Läufe pro Mahlzeit. Kosten und Zeit umfassen alle Scans einer Konfiguration.

Tabelle 5. Jede Konfiguration an allen 400 Mahlzeiten

ModellInnerhalb 10 g, 95-%-IntervallMittlerer absoluter Fehler, gVerzerrung, gFehler über 30 gFehlgeschlagene ScansKosten pro Scan, $Median-Zeit, sDifferenz zu Gemini 3.6 Flash, low, Punkte
Gemini 3.6 Flash, medium73,0 %
68,8 bis 77,1
9,4−2,75,5 %00,00596,6+4,1
+1,6 bis +6,7
Gemini 3.7 Flash, medium72,5 %
68,2 bis 76,5
9,3−3,06,8 %00,00605,8+3,6
+0,2 bis +7,1
Gemini 3.7 Flash, low72,1 %
67,9 bis 76,3
9,3−2,36,0 %00,00343,7+3,2
+0,3 bis +6,4
Gemini 3.8 Flash, low69,6 %
65,1 bis 74,1
9,8−2,27,2 %00,00305,0+0,8
−2,3 bis +3,9
Gemini 3.6 Flash, low *68,9 %
64,6 bis 73,1
9,5−2,05,8 %00,00313,4Basis
Gemini 3.5 Flash-Lite, low68,8 %
64,3 bis 73,2
10,0−0,97,8 %00,00172,2−0,1
−3,5 bis +3,4
GPT-6 Luna, low63,2 %
58,2 bis 68,2
11,4+0,510,2 %00,00037,6−5,6
−10,3 bis −1,0

Drei Konfigurationen liegen über Sobas Einstellung, Gemini 3.6 Flash mit Reasoning low, mit Intervallen, die null ausschließen: +4,1, +3,6 und +3,2 Punkte. GPT-6 Luna liegt 5,6 Punkte darunter, mit einem Intervall von −10,3 bis −1,0.

Zwei Prüfungen schwächen diese Gewinne ab. Gemini 3.7 Flash lag im ersten Satz unter acht Modellen vorn, deshalb überschätzt der erste Satz es. Allein im Holdout beträgt sein Vorsprung vor Gemini 3.6 Flash 0,0 Punkte.

Reasoning medium bei Gemini 3.6 Flash gewinnt vor allem an der Grenze von 10 g. Innerhalb von 5 g erreicht es 49,0 % gegen 50,2 %, und seine Fehler über 30 g bleiben bei 22 gegen 23. Es verdoppelt auch die Kosten, 0,0059 $ gegen 0,0031 $, und die Zeit, 6,6 s gegen 3,4 s.

Der Holdout: eine Prüfung an anderen Mahlzeiten

Fehler haben wir nur im ersten Satz untersucht, und nur dort haben wir den Prompt abgestimmt. Der Holdout diente als Prüfung, und diese Seite nennt keine seiner einzelnen Mahlzeiten. GPT-6 Luna Pro, GPT-6.1 Sol und Claude Sonnet 5.5 liefen nicht darauf.

Tabelle 6. Sieben Konfigurationen am Holdout mit 200 Mahlzeiten

ModellInnerhalb 10 g, 95-%-IntervallMittlerer absoluter Fehler, gVerzerrung, gFehler über 30 gFehlgeschlagene ScansKosten pro Scan, $Median-Zeit, sDifferenz zu Gemini 3.6 Flash, low, Punkte
Gemini 3.6 Flash, medium73,0 %
67,2 bis 78,7
9,1−3,76,0 %00,00616,6+2,5
−1,0 bis +5,9
Gemini 3.6 Flash, low *70,5 %
64,5 bis 76,4
9,1−2,96,0 %00,00333,7Basis
Gemini 3.7 Flash, low70,5 %
64,3 bis 76,4
9,1−3,66,5 %00,00343,80,0
−4,6 bis +4,6
Gemini 3.7 Flash, medium68,5 %
62,1 bis 74,5
9,5−4,07,0 %00,00615,8−2,0
−6,7 bis +2,8
Gemini 3.5 Flash-Lite, low68,5 %
62,2 bis 74,8
9,9−2,29,5 %00,00172,3−2,0
−7,5 bis +3,5
Gemini 3.8 Flash, low67,0 %
60,3 bis 73,6
9,7−3,47,5 %00,00315,1−3,5
−8,0 bis +1,0
GPT-6 Luna, low61,5 %
54,3 bis 68,6
12,0−0,112,5 %00,00048,2−9,0
−15,6 bis −2,6

Die Datendatei nennt die Mahlzeiten des Holdouts, sie sind also nicht mehr unbekannt. Ein späterer Test braucht neue Mahlzeiten.

Wo alle Modelle scheitern

Die Größe der Mahlzeit bewegt den Anteil stärker als die Wahl des Modells. Unter 15 g Kohlenhydraten erreichen die acht Modelle 75 bis 93 %. Ab 60 g erreichen sie 18 bis 45 %. Über alle Mahlzeiten beträgt der Abstand zwischen den Modellen 20 Punkte.

Tabelle 7. Anteil innerhalb von 10 g nach Referenzwert der Kohlenhydrate, erster Satz

ModellUnter 15 g
81 Mahlzeiten
15 bis 30 g
51 Mahlzeiten
30 bis 60 g
46 Mahlzeiten
60 g oder mehr
22 Mahlzeiten
Mittlerer Fehler ab 60 g, gZu niedrig ab 60 g
Gemini 3.7 Flash90 %67 %70 %32 %−23,620 von 22
Gemini 3.8 Flash93 %73 %54 %27 %−23,520 von 22
Gemini 3.5 Flash-Lite86 %65 %59 %36 %−21,117 von 22
Gemini 3.6 Flash *85 %71 %57 %18 %−27,421 von 22
GPT-6 Luna86 %59 %43 %45 %−6,411 von 22
GPT-6 Luna Pro84 %53 %48 %41 %−6,816 von 22
GPT-6.1 Sol80 %47 %48 %23 %+2,210 von 22
Claude Sonnet 5.575 %45 %37 %23 %−21,211 von 15

Große Teller kommen zu niedrig heraus

Ab 60 g schätzen Gemini 3.6, 3.7 und 3.8 Flash im Schnitt 23,5 bis 27,4 g zu niedrig. Zu niedrig liegen sie bei 20 oder 21 von 22 Mahlzeiten. Gemini 3.5 Flash-Lite und Claude Sonnet 5.5 schätzen etwa 21 g zu niedrig. Die Mittelwerte von OpenAI liegen näher an null, −6,8 bis +2,2 g, weil große Fehler in beide Richtungen gehen: GPT-6.1 Sol reicht von −65,6 bis +69,9 g. Ihre Anteile in diesem Bereich bleiben bei 23 bis 45 %.

Der Holdout bestätigt das. Bei seinen 20 Mahlzeiten ab 60 g schätzen fünf Modelle im Schnitt 19,3 bis 24,7 g zu niedrig. Zu niedrig liegen sie bei 14 bis 18 der 20 Mahlzeiten. Der höhere Anteil von GPT-6 Luna in diesem Bereich wiederholte sich nicht: 10 von 22 Mahlzeiten im ersten Satz, 5 von 20 im Holdout.

Tabelle 8. Geschätztes Gewicht geteilt durch Referenzgewicht, Median, erster Satz

ModellUnter 100 g
53 Mahlzeiten
100 bis 200 g
44 Mahlzeiten
200 bis 400 g
73 Mahlzeiten
400 bis 600 g
25 Mahlzeiten
600 g oder mehr
5 Mahlzeiten
Gemini 3.7 Flash1,121,000,900,660,41
Gemini 3.8 Flash1,171,000,890,670,47
Gemini 3.5 Flash-Lite1,070,980,900,690,40
Gemini 3.6 Flash *1,220,990,850,630,47
GPT-6 Luna1,251,010,970,710,45
GPT-6 Luna Pro1,271,021,000,740,40
GPT-6.1 Sol1,731,231,180,920,53
Claude Sonnet 5.51,221,040,930,700,39

Tabelle 8 zeigt auf das Portionsgewicht. Ein Wert von 1,00 bedeutet ein richtiges Gewicht. Alle acht Modelle ziehen Gewichte zu einer typischen Portion hin. Teller mit 400 bis 600 g kommen auf 0,63 bis 0,92, Teller ab 600 g auf 0,39 bis 0,53. Der Holdout ergibt 0,73 bis 0,80 und 0,43 bis 0,49, bei fünf Modellen.

Bei großen Tellern liegt eine Schätzung am häufigsten daneben. Eine Schätzung ersetzt das Wiegen nicht. Eine Küchenwaage und das Etikett liefern sicherere Zahlen.

Kleine Stücke kommen zu schwer heraus, mit wenig Folgen für die Kohlenhydrate

Unter 100 g reicht der Median im ersten Satz von 1,07 bis 1,73 und im Holdout von 0,92 bis 1,23. Allein auf gewogenen Tellern reicht er von 0,95 bis 1,73 und von 0,78 bis 1,06. Dieser Effekt ist schwächer als bei großen Tellern und hängt vom Satz ab. Er kostet auch wenig Kohlenhydrate. Gewogene Kirschtomaten mit 64 g kamen auf 80 bis 160 g, ihre 2,5 g Kohlenhydrate auf 4 bis 6 g.

Getränke

Ein Foto zeigt oft nicht, was in einem Glas ist. Ein Glas Kaffee hat im Protokoll 2,7 g Kohlenhydrate. Sechs Modelle lasen es als Karamellsauce oder Honig und antworteten 157 bis 453 g. Die zwei Luna-Modelle lasen es als Brühe oder braune Flüssigkeit und antworteten 2 g. Ohne diese Mahlzeit fällt der mittlere absolute Fehler der Gemini-Modelle auf 8,3 bis 9,4 g, während GPT-6 Luna bei 10,7 g bleibt.

Ein gesüßter Tee in einem Glas mit Teebeutel hat 65,6 g Kohlenhydrate im Protokoll. Alle acht Modelle antworteten 0 bis 1 g, weil man Zucker auf einem Foto nicht sieht.

Fehler in den Referenzwerten

Alle acht Modelle lagen bei 71 Mahlzeiten innerhalb von 10 g. Bei 19 Mahlzeiten schaffte das keines, und 15 davon sind SNAPMe-Fotos. Wir haben große Fehltreffer des ersten Satzes mit den Fotos verglichen und Fehler in den Referenzwerten gefunden. Wir haben keinen davon korrigiert, also senken sie den Anteil jedes Modells.

Was dieser Test nicht zeigt

Veröffentlichte Zahlen für Menschen stammen von anderen Mahlzeiten und anderen Regeln, deshalb lassen sie sich mit diesen Tabellen nicht vergleichen. Brazeau et al. (2013) untersuchten 50 Erwachsene mit Typ-1-Diabetes und 448 Mahlzeiten. Ihre Schätzungen wichen im Schnitt um 15,4 g oder 20,9 % von der Zählung einer Diätassistenz ab. Bei Meade und Rushton (2016) erreichten 61 Patienten 44 % in einem Test mit Lebensmittelmodellen und 59 % ohne die Lebensmittel, die sie als nie gegessen markierten. Eine richtige Antwort wich höchstens 3 g von einer Spanne oder 5 g von einem Einzelwert ab.

Vergleich mit veröffentlichten Arbeiten

Andere Gruppen haben KI-Modelle an Essen verglichen, und dieser Test schließt an diese Arbeiten an. Nur die ersten zwei Zeilen von Tabelle 9 nutzen denselben Datensatz auf ähnliche Weise. Die übrigen Zeilen nutzen andere Mahlzeiten, Referenzwerte und Maße, deshalb lassen sich ihre Zahlen nicht zeilenübergreifend vergleichen.

Tabelle 9. Veröffentlichte Arbeiten und dieser Test

ArbeitWas getestet wurdeErgebnis
Rodríguez-Jiménez et al., Nutrients 2025ChatGPT-5 in der Weboberfläche, 74 SNAPMe-Mahlzeiten, nur Foto. Die Autoren korrigierten einige Referenzwerte.Mittlerer absoluter Fehler 12,99 g, Median 8,75 g. Mit einer Notiz zur Mahlzeit: 11,29 g und 8,05 g.
Dieser Test, SNAPMe-HälfteAcht API-Modelle, 100 SNAPMe-Mahlzeiten, nur Foto. Referenzwerte unverändert.Gemini 3.6 Flash: mittlerer absoluter Fehler 13,7 g, Median 7,8 g. Gemini 3.7 Flash: 13,6 g und 6,4 g.
Nakagawa und Yamamoto, Nutrients 2026Sechs Modelle von drei Anbietern, 1.272 SNAPMe- und 887 NutriImage-Mahlzeiten, Prompt-Varianten.Bei SNAPMe sitzt die Unterschätzung in den größeren Mahlzeiten. Die Anweisung, größer zu schätzen, hob bei Modellen von Anthropic und Gemini 83 bis 100 % der Bilder an, bei OpenAI-Modellen 34 bis 39 %.
Jin et al., DiningBench, ACL 202629 Modelle, 1.650 Gerichte mit je etwa 5 Fotos. Der gesamte Benchmark enthält vor allem chinesische Gerichte. Die Referenzwerte stammen aus Händlerdaten oder von Gemini-3-Pro-Preview, von Hand geprüft.Mittlerer absoluter prozentualer Fehler bei Kohlenhydraten: Gemini-3-Pro-Preview 27,40 %, GPT-4.1 35,81 %, GPT-5 36,63 %, Claude-Sonnet-4.5 51,52 %.
Street, Diabettech 2026Preprint ohne Peer Review. Vier Modelle über Batch-APIs der Anbieter, 13 Fotos, 495 bis 561 Wiederholungen pro Foto, 26.904 Anfragen.Mediane Streuung auf einem Foto (Variationskoeffizient): Claude Sonnet 4.6 2,4 %, GPT-5.4 8,4 %, Gemini 3.1 Pro 10,3 %, Gemini 2.5 Pro 11,0 %. Claude Sonnet 4.6 hatte auch den kleinsten mittleren absoluten Fehler, insgesamt 11,6 g.
Zagaroli et al., Diabetes Obes Metab 2026ChatGPT, Gemini, Claude und DeepSeek an 124 Mahlzeiten, die als Text beschrieben waren, ohne Fotos. Die Referenzwerte kamen von Fachleuten aus der Klinik.Median der Kohlenhydrate: Fachleute 30,32 g, ChatGPT 30,75 g, Gemini 30,40 g, DeepSeek 29,75 g, Claude 29,25 g.
Tecce et al., Diabetes Care 2025ChatGPT-4o und Gemini Advanced gegen die Software MetaDieta. Den vollständigen Brief konnten wir nicht lesen, die Zahlen stammen aus einer Zusammenfassung von Type 1 Better.Fehler von 35 bis 45 % bei wenigen Angaben. Bei mittleren Angaben 18 % für ChatGPT und 29 % für Gemini. Bei vollständigen Angaben etwa 13 %.

Die Reihenfolge der Modelle ändert sich von Arbeit zu Arbeit. Claude Sonnet 4.5 hat den größten Fehler der vier aus DiningBench genannten Modelle. Claude Sonnet 4.6 zeigt im Preprint von Street die geringste Streuung und den kleinsten Fehler. Die Reihenfolge hängt von der Modellversion, dem Weg, dem Prompt und den Referenzwerten ab.

Interessenkonflikt

Ich, Maksim Danilchenko, habe diesen Test durchgeführt und diese Seite geschrieben. Ich entwickle Soba, eine App mit kostenpflichtigem Abo, die Kohlenhydrate aus Fotos schätzt, und habe Typ-1-Diabetes. Soba nutzt Gemini 3.6 Flash mit Reasoning low, eine der getesteten Konfigurationen. Der Prompt stammt von Soba. Ein Ergebnis zugunsten von Gemini passt zu meinem Geschäft, lies die Tabellen also mit diesem Wissen.

Sobas Einstellung liegt an 400 Mahlzeiten auf Platz fünf von sieben. Soba bleibt dabei, weil Gemini 3.7 Flash seinen Vorsprung im Holdout nicht hielt und Reasoning medium die Kosten verdoppelt. Sobas eigener API-Schlüssel hat die Läufe bezahlt. Daten und Skript sind öffentlich, du kannst also jede Tabelle prüfen.

So rechnest du nach

Leg das Skript und die Scan-Datei in einen Ordner und starte das Skript. Es braucht nur Python, dauert etwa 5 Sekunden und ruft kein Modell auf. Es gibt jede Zahl der Tabellen 1 bis 8 aus und die Ergebnisse, die im Text stehen. Wir haben es mit Python 3.11 und 3.13 getestet.

python3 reproduce.py

Eine zweite Fassung der Berechnung mit NumPy ergibt dieselben Anteile, Fehler und Anzahlen. Ihre Intervallgrenzen weichen in den Tabellen 1, 2, 5 und 6 um bis zu 0,3 Punkte ab. In Tabelle 3 weichen sie um bis zu 1,0 ab, weil dort eine Mahlzeit einem Punkt entspricht.

Die Dateien enthalten weder die Fotos noch den Prompt. Die Fotos bekommst du über die ID des Gerichts aus den beiden Datensätzen. Jede Auswertung kannst du nachprüfen, ein neuer Lauf der Modelle braucht deinen eigenen Prompt.

Die Datendateien stehen unter CC BY-SA 4.0, der Lizenz von SNAPMe. Wir haben 400 Mahlzeiten aus den beiden Datensätzen ausgewählt, die Referenzwerte auf drei Dezimalstellen gerundet und die Antworten der Modelle ergänzt.

So zitierst du diesen Test

Danilchenko M. Eight AI models compared on carb estimates from meal photos. Soba, November 2026. https://soba-app.com/accuracy/models/

@misc{danilchenko2026models,
  author = {Danilchenko, Maksim},
  title = {Eight {AI} models compared on carb estimates from meal photos},
  year = {2026},
  month = nov,
  howpublished = {Soba},
  url = {https://soba-app.com/accuracy/models/},
  note = {Runs of 7 October 2026}
}

Ein Satz zum Zitieren: „In einem Test mit 200 Essensfotos lagen acht KI-Modelle bei 53 bis 73 % der Mahlzeiten innerhalb von 10 g der Referenz-Kohlenhydrate, wobei fehlgeschlagene Scans als Fehltreffer zählen (Soba, November 2026).“

Wenn du die Reihenfolge der Modelle zitierst, nenne bitte das Intervall. Nenne bitte auch, dass der Autor Soba entwickelt, eine App, die eines dieser Modelle nutzt.

Quellen