Soba

Сравнение моделей · октябрь 2026

Восемь моделей ИИ, 200 фото еды: от 53 до 73% оценок углеводов в пределах 10 г

Четыре модели Gemini Flash набрали от 67,5 до 73,0%, три модели OpenAI от 58,0 до 65,0%. Claude Sonnet 5.5 набрала 53,0%, если считать 41 сбой скана промахами, и 66,7% на сканах с ответом. Интервалы четырёх моделей Gemini пересекаются, поэтому этот тест не называет одну лучшую модель.

73,0%максимум у четырёх моделей Gemini Flash, они набрали от 67,5 до 73,0%

65,0%максимум у трёх моделей OpenAI, они набрали от 58,0 до 65,0%

53,0%Claude Sonnet 5.5 через OpenRouter и Azure, на сканах с ответом 66,7%

Одно фото на блюдо, один промпт, прогоны 7 октября 2026 года. Половина блюд: взвешенные тарелки из столовых. Другая половина: домашние фото с дневником питания в роли эталона. На одних взвешенных тарелках разброс от 57 до 82%. Автор делает Soba, а Soba использует Gemini 3.6 Flash. Оценка не заменяет взвешивание.

Перейти: методика, маршрут Claude, отложенный набор, где ошибаются все модели, ограничения, конфликт интересов, данные и скрипт, как цитировать.

Где оказалась каждая модель

Все восемь моделей получили одни и те же 200 фото и один и тот же промпт, по одному прогону. Сбой скана считается промахом в доле в пределах 10 г. Остальные столбцы с ошибками считаются только по сканам с ответом.

Таблица 1. Восемь моделей на первом наборе из 200 блюд

МодельВ пределах 10 г, 95-процентный интервалСредняя абсолютная ошибка, гСмещение, гОшибки больше 30 гСбои скановЦена скана, $Медианное время, с
Gemini 3.7 Flash73,0%
от 66,9 до 78,8
9,5−1,05,5%00,00363,7
Gemini 3.8 Flash71,5%
от 65,4 до 77,4
9,9−0,87,0%00,00304,8
Gemini 3.5 Flash-Lite69,0%
от 63,0 до 75,0
10,2+0,46,0%00,00172,1
Gemini 3.6 Flash *67,5%
от 61,5 до 73,5
10,1−1,45,5%00,00283,3
GPT-6 Luna65,0%
от 58,3 до 71,5
10,7+1,28,0%00,00036,9
GPT-6 Luna Pro63,0%
от 56,1 до 69,9
11,1+1,98,0%00,001011,7
GPT-6.1 Sol58,0%
от 51,0 до 64,9
14,9+10,111,5%00,007113,1
Claude Sonnet 5.553,0%
от 46,2 до 59,9
10,9+1,16,3%410,01456,0
Claude Sonnet 5.5, только сканы с ответом66,7%
от 59,7 до 74,1
10,9+1,16,3%00,01385,2

* Эту модель использует Soba, с reasoning low. Звёздочка отмечает её во всех таблицах. Вторая строка доли: её 95-процентный интервал. Ошибки больше 30 г даны как доля сканов с ответом.

Доля блюд в пределах 10 г с 95-процентными интервалами, три группы: первый набор, все 400 блюд и отложенный набор. На первом наборе доли идут от 73,0% у Gemini 3.7 Flash до 53,0% у Claude Sonnet 5.5, большинство интервалов пересекается. Все значения есть в таблицах 1, 5 и 6.
Каждая линия показывает 95-процентный интервал. Разрыв меньше линии может быть шумом, а таблица 2 проверяет каждую пару на одних и тех же блюдах. Ромбы показывают один и тот же ответ 10 г на любое блюдо.

Что мы измеряли

Скан отправляет модели одно фото и спрашивает, что на тарелке. Модель отвечает чистыми углеводами и клетчаткой по каждому продукту. Мы складываем их, потому что в датасетах указаны общие углеводы. Затем сравниваем сумму с эталонным значением блюда.

Главная мера: доля блюд, где разница не больше 10 г. Границу 10 г выбрали мы, а по файлу с данными можно проверить любую другую.

Данные

Фото и эталонные значения взяты из двух открытых научных датасетов. В каждом наборе из 200 блюд по 100 блюд из каждого датасета.

Nutrition5k: взвешенные тарелки

Тарелки Nutrition5k собраны в столовых Google. Каждый ингредиент взвешен, а каждое фото сделано неподвижной камерой строго сверху. Это самые надёжные эталонные значения в тесте. Лицензия CC BY 4.0.

SNAPMe: домашние фото и дневник питания

SNAPMe собрали Министерство сельского хозяйства США и Калифорнийский университет в Дейвисе. 95 человек в США фотографировали свои блюда перед едой и вели дневник питания в ASA24, инструменте для оценки рациона. Эталонное значение равно сумме строк дневника, связанных с фото, поэтому в нём есть ошибки дневника. Лицензия CC BY-SA 4.0.

Издатель называет бенчмарки оценки питательных веществ одним из назначений датасета и просит не обучать на этом небольшом наборе модели. Этот тест ничего не обучает. На этой странице и в файлах с данными нет фото SNAPMe.

Как скрипт отбирал блюда

Скрипт с фиксированным зерном брал по 25 блюд из каждой четверти диапазона углеводов в каждом датасете. Исходный набор: 505 тарелок из официальной тестовой части Nutrition5k и 1457 фото SNAPMe, снятых до еды. От одного участника SNAPMe скрипт брал не больше 2 фото. Тарелки из одного десятиминутного окна часто похожи, поэтому для первого набора он брал 1 тарелку на окно, а для отложенного до 3.

Отложенный набор скрипт выбрал тем же способом. С первым набором у него нет общих фото, блюд и десятиминутных окон, но участники SNAPMe могут встречаться в обоих. Медиана эталонного значения 20,3 г в первом наборе и 19,1 г в отложенном.

Методика и протокол промпта

Каждый скан отправил одно фото и один и тот же промпт через OpenRouter 7 октября 2026 года. Подсказок, данных о глубине и последующих правок не было. Мы уменьшили каждое фото до 1024 пикселей по длинной стороне, качество JPEG 70. Код теста задавал русский язык ответа.

Промпт словами

Это промпт, который Soba использовала в октябре 2026 года. Его текст мы не публикуем и описываем здесь. Он просит модель сделать следующее:

Мы написали и настроили этот промпт на Gemini, поэтому он может давать преимущество Gemini.

Интервалы

95-процентные интервалы получены кластерным бутстрепом с 10 000 повторов и зерном 20261007. Кластером служит один участник SNAPMe или одно десятиминутное окно Nutrition5k. Скрипт повторно выбирает кластеры внутри каждого датасета, и оба датасета весят одинаково. Разницы между моделями используют одни и те же повторы на одних и тех же блюдах.

Поправку на множественные сравнения мы не делали. Восемь моделей дают 28 пар, так что одна или две пары могут исключить ноль случайно.

Результаты на 200 блюдах: какие разрывы держатся

Таблица 2 сравнивает модели блюдо за блюдом. Жирным выделена разница, 95-процентный интервал которой исключает ноль. Минус значит, что модель в строке набрала меньше, чем модель в столбце.

Таблица 2. Разницы на первом наборе, в пунктах

МодельРазница с Gemini 3.7 Flash, пунктыРазница с Gemini 3.8 Flash, пунктыРазница с Gemini 3.5 Flash-Lite, пунктыРазница с Gemini 3.6 Flash, пункты
Gemini 3.7 Flashбаза+1,5
от −2,5 до +5,5
+4,0
от −1,4 до +9,4
+5,5
от +0,9 до +10,3
Gemini 3.8 Flash−1,5
от −5,5 до +2,5
база+2,5
от −2,5 до +7,7
+4,0
от −0,5 до +8,6
Gemini 3.5 Flash-Lite−4,0
от −9,4 до +1,4
−2,5
от −7,7 до +2,5
база+1,5
от −3,0 до +6,0
Gemini 3.6 Flash *−5,5
от −10,3 до −0,9
−4,0
от −8,6 до +0,5
−1,5
от −6,0 до +3,0
база
GPT-6 Luna−8,0
от −14,5 до −1,5
−6,5
от −13,2 до +0,4
−4,0
от −10,5 до +2,7
−2,5
от −9,5 до +4,7
GPT-6 Luna Pro−10,0
от −17,1 до −3,0
−8,5
от −15,5 до −1,5
−6,0
от −13,0 до +1,0
−4,5
от −12,0 до +2,9
GPT-6.1 Sol−15,0
от −22,1 до −7,7
−13,5
от −20,7 до −6,0
−11,0
от −17,5 до −4,6
−9,5
от −16,1 до −2,7
Claude Sonnet 5.5−20,0
от −26,6 до −13,1
−18,5
от −25,0 до −11,8
−16,0
от −22,4 до −9,5
−14,5
от −20,9 до −8,0

Повторные прогоны показывают шум. Gemini 3.6, 3.7 и 3.8 Flash прошли эти фото дважды. Их доли изменились с 67,5 до 67,0%, с 73,0 до 74,5% и с 71,5 до 73,0%. Исход совпал на доле блюд от 94,5 до 95,5%. Медианный разрыв между двумя ответами на одно фото около 1 г, самый большой 59,5 г.

Таблица 3. Тот же прогон по датасетам

МодельNutrition5k, взвешено: в пределах 10 гNutrition5k: средняя абсолютная ошибка, гSNAPMe, дневник: в пределах 10 гSNAPMe: средняя абсолютная ошибка, г
Gemini 3.7 Flash82,0%
от 74,0 до 89,0
5,464,0%
от 54,5 до 73,2
13,6
Gemini 3.8 Flash80,0%
от 72,0 до 87,0
5,963,0%
от 53,5 до 72,1
13,9
Gemini 3.5 Flash-Lite81,0%
от 73,0 до 88,0
5,757,0%
от 47,1 до 66,7
14,7
Gemini 3.6 Flash *80,0%
от 72,0 до 87,0
6,455,0%
от 45,5 до 64,4
13,7
GPT-6 Luna71,0%
от 62,0 до 80,0
8,659,0%
от 49,0 до 68,6
12,7
GPT-6 Luna Pro66,0%
от 57,0 до 75,0
9,360,0%
от 49,5 до 69,6
12,9
GPT-6.1 Sol60,0%
от 50,0 до 70,0
11,156,0%
от 46,0 до 66,0
18,6
Claude Sonnet 5.557,0%
от 47,0 до 67,0
6,849,0%
от 39,4 до 58,6
14,7

Разрыв между Gemini и OpenAI находится на взвешенных тарелках. Там четыре модели Gemini Flash набирают от 80 до 82%, а модели OpenAI от 60 до 71%. GPT-6 Luna Pro и GPT-6.1 Sol ниже Gemini 3.6 Flash на 14 и 20 пунктов, их интервалы исключают ноль.

На домашних фото модели OpenAI набирают от 56 до 60%, это внутри диапазона Gemini от 55 до 64%. Там только Gemini 3.7 и 3.8 Flash отличаются от Gemini 3.6 Flash с интервалами без нуля, на +9 и +8 пунктов. Домашние фото сложнее для всех моделей, а дневники добавляют свои ошибки.

Восемь точечных графиков, по одному на модель: по горизонтали эталонные углеводы, по вертикали оценка. Точки Gemini держатся у диагонали примерно до 50 г, дальше уходят ниже неё. У GPT-6.1 Sol много точек выше диагонали.
Все сканы первого набора с ответом. Точки внутри закрашенной полосы попали в пределы 10 г, точки ниже пунктира занижены. Треугольник у верхнего края отмечает оценку больше 150 г и подписан её значением. У сбоев скана точки нет.

Другие прогоны

Другие прогоны на этих фото меняли протокол, поэтому в таблицы не вошли. В них были другие версии промпта, отключённая температура, reasoning high, подсказки и данные о глубине. Страница точности рассказывает о подсказках, глубине и более позднем коде Soba, который набрал 68,5% на 400 блюдах там, где таблица 5 показывает 68,9%. Девятая модель, Gemini 3.1 Pro Preview, прошла на более позднем коде без температуры и набрала 66,0% (от 59,3 до 72,5). В наших записях есть ещё модель Qwen, которую мы убрали после короткой пробы. Сырых данных от неё мы не сохранили, поэтому цифр по ней здесь нет.

Claude Sonnet 5.5 через OpenRouter и Azure

Сбои сканов есть только у Claude Sonnet 5.5, поэтому у неё два взгляда. Если считать сбои промахами, она набирает 53,0%. На 159 сканах с ответом она набирает 66,7%. Первый взгляд показывает, что человек получит по этому маршруту. Второй показывает модель, когда она отвечает.

OpenRouter отправил все 286 запросов в Azure, и каждый вернул HTTP 200 с обычным завершением. В 86 из 200 первых попыток в ответе был один продукт с пустым названием и 0 г, а название блюда было заполнено. Наша проверка отклонила такие ответы и отправила один повтор.

Таблица 4. Все модели на блюдах, где Claude ответила

Модель159 блюд: в пределах 10 г159 блюд: средняя абсолютная ошибка, гРазница с Claude, пункты154 блюда: в пределах 10 г154 блюда: средняя абсолютная ошибка, г
Gemini 3.7 Flash73,0%
от 66,7 до 79,9
10,1+6,3
от 0,0 до +12,8
72,1%10,3
Gemini 3.8 Flash73,0%
от 66,7 до 79,6
10,3+6,3
от 0,0 до +12,8
72,1%10,5
Gemini 3.5 Flash-Lite71,7%
от 65,4 до 78,7
10,2+5,0
от −1,0 до +11,7
70,8%10,5
Gemini 3.6 Flash *69,2%
от 62,9 до 76,4
10,1+2,5
от −3,6 до +9,1
68,2%10,4
GPT-6 Luna67,3%
от 60,4 до 74,8
10,0+0,6
от −6,9 до +8,2
68,2%9,7
GPT-6 Luna Pro64,8%
от 57,3 до 72,2
10,5−1,9
от −10,0 до +5,9
66,2%10,2
GPT-6.1 Sol62,9%
от 55,1 до 70,8
14,5−3,8
от −11,7 до +3,7
64,3%14,3
Claude Sonnet 5.566,7%
от 59,7 до 74,1
10,9база67,5%10,6

На 159 блюдах Gemini 3.7 и 3.8 Flash набирают 73,0%. Это на 6,3 пункта выше Claude с интервалом от 0,0 до +12,8, а все остальные разницы включают ноль. Без 5 заглушек, на 154 блюдах, Claude набирает 67,5%, и все разницы включают ноль. Значит, на блюдах, где Claude ответила, она в пределах интервалов на уровне остальных моделей.

У обоих взглядов есть ограничения. Цифра 53,0% может описывать маршрут и мало говорить о модели. Другой маршрут мы не пробовали и не знаем, откуда взялись пустые продукты. Цифра 66,7% оставляет в стороне 41 блюдо, а оставшиеся 159 немного проще. Остальные семь моделей прибавляют на них от 0,0 до 4,9 пункта. Повторы к тому же стоят дороже: $0,0113 за скан с одним запросом и $0,0189 с двумя.

В отдельном препринте Claude Sonnet 4.6 через пакетный API Anthropic вернула разобранные продукты на всех запросах (Street, таблица 9). Там другая версия модели и другой маршрут, поэтому этот результат он не объясняет.

Семь конфигураций на всех 400 блюдах

Таблица 5 объединяет первый и отложенный наборы. В ней каждая конфигурация, которая прошла все 400 блюд: пять настроек Gemini Flash, Gemini 3.5 Flash-Lite и GPT-6 Luna. Gemini 3.6, 3.7 и 3.8 Flash с reasoning low прошли первый набор дважды, поэтому два прогона усредняются по блюду. Цена и время считаются по всем сканам конфигурации.

Таблица 5. Каждая конфигурация на всех 400 блюдах

МодельВ пределах 10 г, 95-процентный интервалСредняя абсолютная ошибка, гСмещение, гОшибки больше 30 гСбои скановЦена скана, $Медианное время, сРазница с Gemini 3.6 Flash, low, пункты
Gemini 3.6 Flash, medium73,0%
от 68,8 до 77,1
9,4−2,75,5%00,00596,6+4,1
от +1,6 до +6,7
Gemini 3.7 Flash, medium72,5%
от 68,2 до 76,5
9,3−3,06,8%00,00605,8+3,6
от +0,2 до +7,1
Gemini 3.7 Flash, low72,1%
от 67,9 до 76,3
9,3−2,36,0%00,00343,7+3,2
от +0,3 до +6,4
Gemini 3.8 Flash, low69,6%
от 65,1 до 74,1
9,8−2,27,2%00,00305,0+0,8
от −2,3 до +3,9
Gemini 3.6 Flash, low *68,9%
от 64,6 до 73,1
9,5−2,05,8%00,00313,4база
Gemini 3.5 Flash-Lite, low68,8%
от 64,3 до 73,2
10,0−0,97,8%00,00172,2−0,1
от −3,5 до +3,4
GPT-6 Luna, low63,2%
от 58,2 до 68,2
11,4+0,510,2%00,00037,6−5,6
от −10,3 до −1,0

Три конфигурации выше настройки Soba, Gemini 3.6 Flash с reasoning low, с интервалами без нуля: +4,1, +3,6 и +3,2 пункта. GPT-6 Luna ниже неё на 5,6 пункта, интервал от −10,3 до −1,0.

Две проверки ослабляют эти прибавки. Gemini 3.7 Flash лидировала на первом наборе среди восьми моделей, поэтому первый набор её завышает. На одном отложенном наборе её преимущество над Gemini 3.6 Flash равно 0,0 пункта.

Reasoning medium у Gemini 3.6 Flash прибавляет в основном на границе 10 г. В пределах 5 г он набирает 49,0% против 50,2%, а ошибок больше 30 г остаётся 22 против 23. Он к тому же удваивает цену, $0,0059 против $0,0031, и время, 6,6 с против 3,4 с.

Отложенный набор: проверка на других блюдах

Ошибки мы разбирали и промпт настраивали только на первом наборе. Отложенный набор служил проверкой, и эта страница не разбирает его отдельные блюда. GPT-6 Luna Pro, GPT-6.1 Sol и Claude Sonnet 5.5 его не проходили.

Таблица 6. Семь конфигураций на отложенном наборе из 200 блюд

МодельВ пределах 10 г, 95-процентный интервалСредняя абсолютная ошибка, гСмещение, гОшибки больше 30 гСбои скановЦена скана, $Медианное время, сРазница с Gemini 3.6 Flash, low, пункты
Gemini 3.6 Flash, medium73,0%
от 67,2 до 78,7
9,1−3,76,0%00,00616,6+2,5
от −1,0 до +5,9
Gemini 3.6 Flash, low *70,5%
от 64,5 до 76,4
9,1−2,96,0%00,00333,7база
Gemini 3.7 Flash, low70,5%
от 64,3 до 76,4
9,1−3,66,5%00,00343,80,0
от −4,6 до +4,6
Gemini 3.7 Flash, medium68,5%
от 62,1 до 74,5
9,5−4,07,0%00,00615,8−2,0
от −6,7 до +2,8
Gemini 3.5 Flash-Lite, low68,5%
от 62,2 до 74,8
9,9−2,29,5%00,00172,3−2,0
от −7,5 до +3,5
Gemini 3.8 Flash, low67,0%
от 60,3 до 73,6
9,7−3,47,5%00,00315,1−3,5
от −8,0 до +1,0
GPT-6 Luna, low61,5%
от 54,3 до 68,6
12,0−0,112,5%00,00048,2−9,0
от −15,6 до −2,6

Файл с данными перечисляет блюда отложенного набора, так что они больше не закрыты. Следующему тесту нужны новые блюда.

Где ошибаются все модели

Размер блюда двигает долю сильнее, чем выбор модели. При углеводах меньше 15 г восемь моделей набирают от 75 до 93%. При 60 г и больше они набирают от 18 до 45%. По всем блюдам разрыв между моделями 20 пунктов.

Таблица 7. Доля в пределах 10 г по эталонным углеводам, первый набор

МодельМеньше 15 г
81 блюдо
От 15 до 30 г
51 блюдо
От 30 до 60 г
46 блюд
60 г и больше
22 блюда
Средняя ошибка от 60 г, гЗанижено от 60 г
Gemini 3.7 Flash90%67%70%32%−23,620 из 22
Gemini 3.8 Flash93%73%54%27%−23,520 из 22
Gemini 3.5 Flash-Lite86%65%59%36%−21,117 из 22
Gemini 3.6 Flash *85%71%57%18%−27,421 из 22
GPT-6 Luna86%59%43%45%−6,411 из 22
GPT-6 Luna Pro84%53%48%41%−6,816 из 22
GPT-6.1 Sol80%47%48%23%+2,210 из 22
Claude Sonnet 5.575%45%37%23%−21,211 из 15

Большие тарелки выходят заниженными

При 60 г и больше Gemini 3.6, 3.7 и 3.8 Flash занижают в среднем на величину от 23,5 до 27,4 г. Заниженными выходят 20 или 21 блюдо из 22. Gemini 3.5 Flash-Lite и Claude Sonnet 5.5 занижают примерно на 21 г. Средние OpenAI ближе к нулю, от −6,8 до +2,2 г, потому что большие ошибки идут в обе стороны. У GPT-6.1 Sol они идут от −65,6 до +69,9 г. Их доли в этой группе остаются от 23 до 45%.

Отложенный набор это подтверждает. На его 20 блюдах с 60 г и больше пять моделей занижают в среднем на величину от 19,3 до 24,7 г. Заниженными выходят от 14 до 18 блюд из 20. Более высокая доля GPT-6 Luna в этой группе не повторилась: 10 блюд из 22 на первом наборе, 5 из 20 на отложенном.

Таблица 8. Оценка веса, делённая на эталонный вес, медиана, первый набор

МодельМеньше 100 г
53 блюда
От 100 до 200 г
44 блюда
От 200 до 400 г
73 блюда
От 400 до 600 г
25 блюд
600 г и больше
5 блюд
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

Таблица 8 указывает на вес порции. Значение 1,00 означает верный вес. Все восемь моделей тянут вес к типичной порции. Тарелки от 400 до 600 г выходят на уровне от 0,63 до 0,92, а тарелки от 600 г на уровне от 0,39 до 0,53. На отложенном наборе это от 0,73 до 0,80 и от 0,43 до 0,49 у пяти моделей.

На больших тарелках оценка промахивается чаще всего. Оценка не заменяет взвешивание. Кухонные весы и этикетка дают более надёжные цифры.

Мелкие продукты выходят тяжелее, но углеводы меняются мало

При весе меньше 100 г медиана идёт от 1,07 до 1,73 на первом наборе и от 0,92 до 1,23 на отложенном. На одних взвешенных тарелках она идёт от 0,95 до 1,73 и от 0,78 до 1,06. Этот эффект слабее, чем на больших тарелках, и зависит от набора. Углеводов он меняет мало. Взвешенные помидоры черри на 64 г вышли на уровне от 80 до 160 г, а их 2,5 г углеводов от 4 до 6 г.

Напитки

Фото часто не показывает, что в стакане. В банке кофе по дневнику 2,7 г углеводов. Шесть моделей приняли её за карамельный соус или мёд и ответили от 157 до 453 г. Две модели Luna приняли её за бульон или коричневую жидкость и ответили 2 г. Без этого блюда средняя абсолютная ошибка моделей Gemini падает до значений от 8,3 до 9,4 г, а у GPT-6 Luna остаётся 10,7 г.

В сладком чае в банке с чайным пакетиком по дневнику 65,6 г углеводов. Все восемь моделей ответили от 0 до 1 г, потому что сахара на фото не видно.

Ошибки в эталонных значениях

Все восемь моделей попали в пределы 10 г на 71 блюде. Ни одна не попала на 19 блюдах, и 15 из них взяты из SNAPMe. Мы сверили крупные промахи первого набора с фото и нашли ошибки в эталонных значениях. Мы не исправляли ни одну, поэтому они снижают долю всех моделей.

Чего этот тест не показывает

Опубликованные цифры для людей получены на других блюдах и по другим правилам, поэтому с этими таблицами они не сравниваются. Brazeau и соавторы (2013) изучили 50 взрослых с диабетом 1 типа и 448 блюд. Их оценки отличались от подсчёта диетолога в среднем на 15,4 г, или 20,9%. У Meade и Rushton (2016) 61 пациент набрал 44% в тесте с муляжами еды и 59% без продуктов, которые отметил как те, что не ест никогда. Верный ответ отличался не больше чем на 3 г от диапазона или на 5 г от одного значения.

Сравнение с опубликованными работами

Другие группы тоже сравнивали модели ИИ на еде, так что этот тест дополняет уже существующие работы. Только первые две строки таблицы 9 используют один датасет похожим образом. В остальных строках другие блюда, эталоны и метрики, поэтому их цифры между строками не сравниваются.

Таблица 9. Опубликованные работы и этот тест

РаботаЧто проверялиРезультат
Rodríguez-Jiménez и соавторы, Nutrients 2025ChatGPT-5 в веб-интерфейсе, 74 блюда SNAPMe, только фото. Авторы исправили часть эталонных значений.Средняя абсолютная ошибка 12,99 г, медиана 8,75 г. С заметкой о блюде: 11,29 г и 8,05 г.
Этот тест, половина SNAPMeВосемь моделей через API, 100 блюд SNAPMe, только фото. Эталонные значения без правок.Gemini 3.6 Flash: средняя абсолютная ошибка 13,7 г, медиана 7,8 г. Gemini 3.7 Flash: 13,6 г и 6,4 г.
Nakagawa и Yamamoto, Nutrients 2026Шесть моделей трёх поставщиков, 1272 блюда SNAPMe и 887 блюд NutriImage, варианты промпта.На SNAPMe занижение сосредоточено в более крупных блюдах. Указание оценивать больше подняло от 83 до 100% изображений у моделей Anthropic и Gemini и от 34 до 39% у моделей OpenAI.
Jin и соавторы, DiningBench, ACL 202629 моделей, 1650 блюд, примерно по 5 фото на блюдо. В бенчмарке в целом в основном китайская еда. Эталонные значения взяты у продавцов или от Gemini-3-Pro-Preview и проверены вручную.Средняя абсолютная ошибка в процентах по углеводам: Gemini-3-Pro-Preview 27,40%, GPT-4.1 35,81%, GPT-5 36,63%, Claude-Sonnet-4.5 51,52%.
Street, Diabettech 2026Препринт без рецензирования. Четыре модели через пакетные API поставщиков, 13 фото, от 495 до 561 повтора на фото, 26 904 запроса.Медианный разброс на одном фото (коэффициент вариации): 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 также самая низкая средняя абсолютная ошибка, 11,6 г в целом.
Zagaroli и соавторы, Diabetes Obes Metab 2026ChatGPT, Gemini, Claude и DeepSeek на 124 блюдах, описанных текстом, без фото. Эталонные значения дали клиницисты.Медиана углеводов: клиницисты 30,32 г, ChatGPT 30,75 г, Gemini 30,40 г, DeepSeek 29,75 г, Claude 29,25 г.
Tecce и соавторы, Diabetes Care 2025ChatGPT-4o и Gemini Advanced в сравнении с программой MetaDieta. Полный текст письма мы прочитать не смогли, цифры взяты из пересказа Type 1 Better.Ошибки от 35 до 45% при минимуме данных. При среднем объёме данных 18% у ChatGPT и 29% у Gemini. При полных данных около 13%.

Порядок моделей меняется от работы к работе. У Claude Sonnet 4.5 самая большая ошибка из четырёх моделей, приведённых из DiningBench. У Claude Sonnet 4.6 самый маленький разброс и самая низкая ошибка в препринте Street. Порядок зависит от версии модели, маршрута, промпта и эталонных значений.

Конфликт интересов

Этот тест провёл и эту страницу написал я, Максим Данильченко. Я делаю Soba, приложение с платной подпиской, которое оценивает углеводы по фото, и у меня диабет 1 типа. Soba использует Gemini 3.6 Flash с reasoning low, одну из проверенных конфигураций. Промпт взят из Soba. Результат в пользу Gemini выгоден моему делу, учитывайте это при чтении таблиц.

Настройка Soba занимает пятое место из семи на 400 блюдах. Soba остаётся на ней, потому что Gemini 3.7 Flash не удержала преимущество на отложенном наборе, а reasoning medium удваивает цену. Прогоны оплачены собственным ключом API Soba. Данные и скрипт открыты, поэтому каждую таблицу можно проверить.

Как воспроизвести

Положите скрипт и файл со сканами в одну папку и запустите скрипт. Ему нужен только Python, он работает около 5 секунд и не обращается к моделям. Он печатает все числа таблиц с 1 по 8 и результаты из текста. Мы проверили его на Python 3.11 и 3.13.

python3 reproduce.py

Вторая версия расчётов на NumPy даёт те же доли, ошибки и количества. Её границы интервалов отличаются на величину до 0,3 пункта в таблицах 1, 2, 5 и 6. В таблице 3 они отличаются на величину до 1,0, потому что там одно блюдо равно одному пункту.

В файлах нет фото и промпта. Фото можно получить из двух датасетов по идентификатору блюда. Любой расчёт можно проверить, а для нового прогона моделей нужен свой промпт.

Файлы с данными распространяются по CC BY-SA 4.0, лицензии SNAPMe. Мы выбрали 400 блюд из двух датасетов, округлили эталонные значения до трёх знаков и добавили ответы моделей.

Как цитировать

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}
}

Фраза для цитаты: «В тесте на 200 фото еды восемь моделей ИИ попали в пределы 10 г от эталонных углеводов на доле блюд от 53 до 73%, сбои сканов считаются промахами (Soba, ноябрь 2026)».

Если цитируете порядок моделей, добавьте интервал. Укажите также, что автор делает Soba, приложение на одной из этих моделей.

Источники