[{"data":1,"prerenderedAt":278},["ShallowReactive",2],{"blog-ru-kak-rabotaet-raspoznavanie-blyud-po-foto":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"slug":10,"date":11,"cover":12,"category":13,"tags":14,"translationSlug":20,"body":21,"_type":272,"_id":273,"_source":274,"_file":275,"_stem":276,"_extension":277},"\u002Fru\u002Fblog\u002F2026-06-13-kak-rabotaet-raspoznavanie-blyud-po-foto","blog",false,"","Как мы сделали распознавание блюд по фото — что под капотом","Технический разбор фоторежима в NutriApp — какие подходы мы попробовали, на чём в итоге остановились, что работает не идеально и куда планируем двигаться. Без маркетингового глянца.","kak-rabotaet-raspoznavanie-blyud-po-foto","2026-06-13","\u002Fblog\u002Fimages\u002Fkak-rabotaet-raspoznavanie-blyud-po-foto\u002Fcover.jpg","dev-log",[15,16,17,18,19],"распознавание","AI","фото","продукт","технологии","how-food-photo-recognition-works",{"type":22,"children":23,"toc":263},"root",[24,32,39,44,49,54,60,79,89,99,104,110,119,124,130,142,153,164,175,181,193,198,204,209,244,258],{"type":25,"tag":26,"props":27,"children":28},"element","p",{},[29],{"type":30,"value":31},"text","Сегодня — про то, как устроено распознавание блюд по фото в NutriApp. Без маркетингового глянца, а как оно работает на самом деле: что мы пробовали, что взлетело, а что — нет.",{"type":25,"tag":33,"props":34,"children":36},"h2",{"id":35},"зачем-оно-вообще",[37],{"type":30,"value":38},"Зачем оно вообще",{"type":25,"tag":26,"props":40,"children":41},{},[42],{"type":30,"value":43},"В классических трекерах ввод приёма пищи занимает 1-3 минуты на блюдо. Нужно открыть поиск, выбрать продукт из 47 одинаковых названий, поставить граммовку, повторить для каждого ингредиента. За день это 5-10 минут «лишней» работы.",{"type":25,"tag":26,"props":45,"children":46},{},[47],{"type":30,"value":48},"На третий день большинство людей это бросают. Не потому, что лень — а потому, что цена ввода становится больше, чем польза от подсчёта.",{"type":25,"tag":26,"props":50,"children":51},{},[52],{"type":30,"value":53},"Идея фоторежима — снизить эту цену до 20 секунд: сфоткал тарелку, приложение разложило её на ингредиенты с оценкой граммовки, ты быстро правишь и сохраняешь.",{"type":25,"tag":33,"props":55,"children":57},{"id":56},"что-мы-пробовали",[58],{"type":30,"value":59},"Что мы пробовали",{"type":25,"tag":26,"props":61,"children":62},{},[63,69,71,77],{"type":25,"tag":64,"props":65,"children":66},"strong",{},[67],{"type":30,"value":68},"Готовые сервисы распознавания изображений (Google Vision, Clarifai).",{"type":30,"value":70}," Они умеют сказать, что на картинке «pizza» или «salad bowl», но не разбивают блюдо на ингредиенты с граммовкой. Для подсчёта калорий это бесполезно — нам нужно не название блюда, а ",{"type":25,"tag":72,"props":73,"children":74},"em",{},[75],{"type":30,"value":76},"состав",{"type":30,"value":78}," с массой.",{"type":25,"tag":26,"props":80,"children":81},{},[82,87],{"type":25,"tag":64,"props":83,"children":84},{},[85],{"type":30,"value":86},"Своя CV-модель.",{"type":30,"value":88}," Идея — собрать датасет российских блюд (борщ, гречка, котлеты по-киевски) и обучить модель. Быстро поняли: для приемлемой точности нужны сотни тысяч размеченных тарелок, разметка стоит миллионы. Для нашего размера команды это нереалистично.",{"type":25,"tag":26,"props":90,"children":91},{},[92,97],{"type":25,"tag":64,"props":93,"children":94},{},[95],{"type":30,"value":96},"Vision-модели от Anthropic.",{"type":30,"value":98}," Попали в задачу. Модель смотрит на фото тарелки, как человек: «куриная грудка ~120 г + рис ~150 г + овощной салат ~80 г», и возвращает структурированный JSON, который мы кладём в приём пищи. Никакого fine-tuning — общая модель, грамотный prompt, и она вытягивает домашнюю еду, кафе, фастфуд, простые ресторанные тарелки.",{"type":25,"tag":26,"props":100,"children":101},{},[102],{"type":30,"value":103},"На этом и остановились.",{"type":25,"tag":33,"props":105,"children":107},{"id":106},"как-это-выглядит-в-приложении",[108],{"type":30,"value":109},"Как это выглядит в приложении",{"type":25,"tag":26,"props":111,"children":112},{},[113],{"type":25,"tag":114,"props":115,"children":118},"img",{"alt":116,"src":117},"Распознавание блюда по фото — NutriApp","\u002Fblog\u002Fimages\u002Fkak-rabotaet-raspoznavanie-blyud-po-foto\u002Frecognize-screen.webp",[],{"type":25,"tag":26,"props":120,"children":121},{},[122],{"type":30,"value":123},"Загружаешь фото — получаешь подпись («запечённая куриная грудка, нарезанная ломтиками, с салатом из свежих листьев, брокколи и красного лука»), список ингредиентов с граммовкой и БЖУ, выбираешь тип приёма пищи (завтрак \u002F обед \u002F ужин \u002F перекус) и сохраняешь. На каждом ингредиенте можно подправить вес одним движением.",{"type":25,"tag":33,"props":125,"children":127},{"id":126},"что-не-работает-идеально",[128],{"type":30,"value":129},"Что не работает идеально",{"type":25,"tag":26,"props":131,"children":132},{},[133,135,140],{"type":30,"value":134},"— ",{"type":25,"tag":64,"props":136,"children":137},{},[138],{"type":30,"value":139},"Граммовка по фото — это всегда оценка.",{"type":30,"value":141}," Промах ±15-20 г по каждому ингредиенту — норма. Поэтому в приложении после распознавания обязательный шаг ручной правки: ты видишь предложенные граммы и можешь поправить.",{"type":25,"tag":26,"props":143,"children":144},{},[145,146,151],{"type":30,"value":134},{"type":25,"tag":64,"props":147,"children":148},{},[149],{"type":30,"value":150},"Сложные многокомпонентные блюда распознаются хуже простых.",{"type":30,"value":152}," Запеканки, мультислойные сэндвичи, домашние тушения, где ингредиенты «спрятаны» друг под другом — модель часто видит только верхний слой.",{"type":25,"tag":26,"props":154,"children":155},{},[156,157,162],{"type":30,"value":134},{"type":25,"tag":64,"props":158,"children":159},{},[160],{"type":30,"value":161},"Тёмный фон, плохой свет, странные ракурсы — режут точность.",{"type":30,"value":163}," Лучше всего работает top-down или 3\u002F4 на нейтральном фоне при дневном свете.",{"type":25,"tag":26,"props":165,"children":166},{},[167,168,173],{"type":30,"value":134},{"type":25,"tag":64,"props":169,"children":170},{},[171],{"type":30,"value":172},"Региональные специфические блюда.",{"type":30,"value":174}," Узбекская манты, плов, домашние пельмени — модель видит «meat dumplings» и угадывает граммовку по среднему. Это нормально для базы, но если нужна точность — лучше вручную через каталог.",{"type":25,"tag":33,"props":176,"children":178},{"id":177},"что-зашло",[179],{"type":30,"value":180},"Что зашло",{"type":25,"tag":26,"props":182,"children":183},{},[184,186,191],{"type":30,"value":185},"Для «обычного дня» — миска овсянки, тарелка с курицей и гарниром, бутерброд с кофе — фоторежим экономит реальные минуты. И главное: ",{"type":25,"tag":64,"props":187,"children":188},{},[189],{"type":30,"value":190},"люди стали считать чаще",{"type":30,"value":192},", потому что барьер на ввод приёма пищи упал.",{"type":25,"tag":26,"props":194,"children":195},{},[196],{"type":30,"value":197},"В аналитике это видно прямо: пользователи, которые активно пользуются фоторежимом, удерживаются в приложении в разы дольше, чем те, кто вводит только через каталог. Логично: цена ввода — главный барьер в трекинге калорий.",{"type":25,"tag":33,"props":199,"children":201},{"id":200},"куда-идём-дальше",[202],{"type":30,"value":203},"Куда идём дальше",{"type":25,"tag":26,"props":205,"children":206},{},[207],{"type":30,"value":208},"В планах:",{"type":25,"tag":210,"props":211,"children":212},"ul",{},[213,224,234],{"type":25,"tag":214,"props":215,"children":216},"li",{},[217,222],{"type":25,"tag":64,"props":218,"children":219},{},[220],{"type":30,"value":221},"Улучшить оценку граммовки для домашних блюд",{"type":30,"value":223}," — борщ, плов, рагу. Здесь поможет связка vision + база рецептов: модель видит «борщ», а мы достаём типичный состав и подгоняем граммовку под объём тарелки.",{"type":25,"tag":214,"props":225,"children":226},{},[227,232],{"type":25,"tag":64,"props":228,"children":229},{},[230],{"type":30,"value":231},"Сохранять «свои» блюда.",{"type":30,"value":233}," Если ты часто ешь одно и то же — не нужно каждый раз заново распознавать. Один раз сфоткал — сохранил как шаблон — потом одним кликом.",{"type":25,"tag":214,"props":235,"children":236},{},[237,242],{"type":25,"tag":64,"props":238,"children":239},{},[240],{"type":30,"value":241},"Распознавание упаковки.",{"type":30,"value":243}," Сфоткал состав с пачки — мы парсим калорийность и БЖУ, создаём продукт в базе. Особенно для производителей, которых нет в общем каталоге.",{"type":25,"tag":26,"props":245,"children":246},{},[247,249,256],{"type":30,"value":248},"Если интересно попробовать — ",{"type":25,"tag":250,"props":251,"children":253},"a",{"href":252},"\u002F",[254],{"type":30,"value":255},"открыть NutriApp",{"type":30,"value":257},". Фоторежим есть в бесплатном тарифе с дневным лимитом, на платных — без лимитов.",{"type":25,"tag":26,"props":259,"children":260},{},[261],{"type":30,"value":262},"А если ты часто пользуешься аналогичными инструментами и видишь, что у нас работает хуже, чем у конкурентов, — расскажи в комментариях. Мы реально дорабатываем по таким репортам.",{"title":7,"searchDepth":264,"depth":264,"links":265},2,[266,267,268,269,270,271],{"id":35,"depth":264,"text":38},{"id":56,"depth":264,"text":59},{"id":106,"depth":264,"text":109},{"id":126,"depth":264,"text":129},{"id":177,"depth":264,"text":180},{"id":200,"depth":264,"text":203},"markdown","content:ru:blog:2026-06-13-kak-rabotaet-raspoznavanie-blyud-po-foto.md","content","ru\u002Fblog\u002F2026-06-13-kak-rabotaet-raspoznavanie-blyud-po-foto.md","ru\u002Fblog\u002F2026-06-13-kak-rabotaet-raspoznavanie-blyud-po-foto","md",1781331365402]