AI: как модель читает страницу меню и оценивает каждую позицию
Снимок страницы меню превращается в список блюд с калорийностью и КБЖУ. Со стороны это выглядит как одно действие, но операций две, и ошибаются они по-разному: одна читает текст с фотографии, другая догадывается, что стоит за прочитанным названием. Первая почти не ошибается. Вторая ошибается всегда, и вопрос только в том, насколько.
Две операции, а не одна
Разбор страницы меню распадается на два независимых шага, и путать их не стоит — они лечатся разным.
- Прочитать названия. Модель видит фотографию и выписывает строки: «Борщ украинский со сметаной», «Салат «Цезарь» с курицей». Это распознавание текста, и на читаемом снимке оно работает почти безошибочно.
- Оценить каждое название. Для каждой строки — калорийность, белки, жиры, углеводы и вес порции. Здесь нет ни фотографии блюда, ни рецепта, ни весов: есть название и всё, что модель знает о блюдах с таким названием.
Похожая, но не та же цепочка работает при съёмке тарелки: там модель узнаёт блюдо по виду и отдельно оценивает вес по объёму в кадре. Разбор той цепочки — в материале про распознавание еды по фотографии.
Почему названия не переводятся
Модель выписывает названия ровно так, как они напечатаны, в языке самого меню. Это не экономия усилий, а требование: человек держит эту карту в руках и сверяет ответ с ней построчно. «Салат «Цезарь» с курицей», превращённый в «Куриный салат», ломает единственный способ сопоставить выдачу с бумагой — и ломает молча, потому что список остаётся правдивым и бесполезным.
По той же причине сохраняется порядок позиций и заголовки разделов: «Супы», «Горячее». Пересортировка по калорийности выглядела бы удобной, но карту в руках при этом больше не пролистать.
Где накапливается ошибка
Погрешность приходит из второго шага, и у неё три источника разной величины.
| Источник | Насколько велик |
|---|---|
| Рецепт конкретной кухни | Наибольший. Количество масла и сливок не задано названием, а именно оно двигает число |
| Вес порции | Существенный. «Паста» — это и 220 г, и 400 г |
| Состав блюда с непрозрачным названием | Переменный. «Фирменный салат шефа» не сообщает вообще ничего |
Первые два складываются: блюдо в полтора раза жирнее ожидаемого и в полтора раза больше по весу даёт двукратное расхождение. Это предел того, что стоит ожидать от оценки по названию, и он не сокращается доработкой модели — сокращается только измерением, которого здесь нет.
Вес порции модель называет явно, и это сделано ради проверяемости: «600 ккал» не оспорить, а «600 ккал за 400 г» уже видно и можно поправить. Как оценивать вес самостоятельно — в материале про вес порции.
Что делать с непрозрачными названиями
Строка «Фирменное блюдо по-домашнему» не содержит сведений о еде. Честный ответ на неё — не число, а признание, что оценки нет: позиция остаётся в списке с пустыми значениями вместо правдоподобной выдумки.
Это сознательный выбор в пользу дырки в списке. Укоротить меню на нераспознанную строку значило бы соврать о том, что в нём есть; подставить среднее число — соврать о самом блюде. Пустое поле сообщает ровно то, что произошло.
Чего этот разбор не делает
- Не измеряет. Ни одного измерения в цепочке нет — есть чтение и оценка.
- Не знает про кухню. Замена ингредиента, фирменный соус, количество масла у конкретного повара остаются за кадром.
- Не заменяет вопрос про аллергены. Состав по названию не определить: «паста карбонара» не содержит слова «яйцо», хотя яйцо в ней есть. Как спрашивать про аллергены — отдельный материал, и это тот случай, когда цена ошибки несопоставима с удобством.
- Не отменяет фотографию тарелки. Когда блюдо приносят, его можно снять — и это уже другая, более точная задача.
Как снимать, чтобы прочиталось
Читаемость снимка влияет на первый шаг, и только на него: если строка распозналась, дальше её качество на оценку не влияет. Что помогает:
- снимать страницу целиком, а не наискось через стол;
- ловить свет так, чтобы не было бликов от ламинированной страницы;
- разворот на две страницы лучше снять двумя кадрами: мелкий шрифт на краю кадра читается хуже;
- длинную карту — по разделам, а не всю за раз.
Коротко
- Операций две: прочитать названия и оценить их. Первая надёжна, вторая — оценка.
- Названия сохраняются как напечатаны, чтобы список сверялся с картой построчно.
- Главный источник погрешности — рецепт кухни и вес порции, а не качество распознавания.
- Неоценённая позиция остаётся пустой, а не заполняется правдоподобным числом.
Частые вопросы
- Как приложение определяет калорийность блюда по фотографии меню?
- В два шага. Сначала с фотографии считываются названия позиций — это распознавание текста, и на читаемом снимке оно почти безошибочно. Затем по каждому названию даётся оценка калорийности и КБЖУ: рецепта и веса порции модель не видит, она отвечает на вопрос, сколько обычно бывает в блюде с таким названием.
- Почему названия блюд не переводятся на мой язык?
- Потому что человек держит карту в руках и сверяет выдачу с ней построчно. Переведённое или сокращённое название перестаёт совпадать со строкой в меню, и список остаётся правдивым, но бесполезным. По той же причине сохраняется исходный порядок позиций и заголовки разделов.
- Какая точность у оценки калорийности по меню?
- Это оценка порядка величины. Наибольшую погрешность дают рецепт конкретной кухни и вес порции: блюдо в полтора раза жирнее ожидаемого и в полтора раза больше по весу даёт двукратное расхождение. Для сравнения позиций между собой этого достаточно, для точного учёта — нет.
- Что происходит, если название блюда ничего не говорит о его составе?
- Позиция остаётся в списке с пустыми значениями. Подставить правдоподобное число значило бы соврать о блюде, а выбросить строку — соврать о том, что есть в меню. Пустое поле честно сообщает, что оценки нет.
Читайте также
- Как нейросеть узнаёт еду на фотографии — Фотография тарелки превращается в число на экране за несколько секунд, и со стороны это выглядит как измерение.
- Как узнать калорийность блюда, если в меню её не написали — В меню чаще всего только название и цена.
- Как определить вес порции без весов — Вес порции — самая неточная величина в любом подсчёте, включая разбор по фотографии.
- КБЖУ в приложениях доставки: откуда берутся цифры в карточке блюда — В карточке блюда под фотографией стоят четыре числа, и выглядят они как измерение.
Материал носит справочный и информационный характер. Он не является медицинской рекомендацией, диагностикой, назначением лечения или диеты и не заменяет консультацию врача. При заболеваниях, беременности, приёме лекарств и любых состояниях, требующих контроля рациона, решения о питании принимаются с врачом.
Сведения о нормах, регламентах и исследованиях приведены по состоянию на момент подготовки материала и могут измениться; их актуальность следует проверять по первоисточникам. Материал не является рекламой, публичной офертой или индивидуальной консультацией. Автор и владелец сайта не несут ответственности за решения, принятые на основании этого текста.