我对比测试了4款AI卡路里追踪器,持续了2周
为期14天的Nutrola、Cal AI、Foodvisor和SnapCalorie对比测试——同时记录四款应用的每一餐。每日记录准确性、速度、挫败感以及最终哪个应用提供最可靠的食物日志。
在两周内,我同时在四款不同的AI卡路里追踪器中记录了每一餐。 相同的餐食、相同的照片、相同的时间。Nutrola、Cal AI、Foodvisor和SnapCalorie——每天并行运行,持续14天。我使用厨房秤称量每一道自制餐,并根据USDA FoodData Central的参考值计算实际卡路里,作为基准。
目标很简单:找出哪款应用在现实的两周时间内能提供最可靠的食物日志。不是完美灯光下的精心挑选示范,而是真实生活——家庭烹饪、餐厅餐食、包装零食、咖啡外卖,以及偶尔的“我忘了拍照”的时刻。
接下来是测试结果。
设置与基本规则
设备: iPhone 15 Pro(用于SnapCalorie的LiDAR),安装并登录了四款应用。
称重协议: 所有自制食品在装盘前使用0.1克精度的厨房秤称重。卡路里基准使用USDA FoodData Central的值。餐厅餐食使用USDA值进行估算(这是一个固有的限制——餐厅的基准总是近似的)。
摄影: 同一张照片提交给四款应用。每餐拍摄一张俯视图,拍摄时使用可用的光线(未针对任何应用进行优化)。
修正协议: 对每款应用,我花最多30秒修正明显错误,使用应用提供的任何工具。这模拟了一个注意到错误但不想花费几分钟修正的真实用户。
我记录了什么: 每次记录的时间(秒表)、初始AI卡路里估算、最终记录的卡路里(修正后)、每日总计与基准的对比、显著的挫败感,以及任何产生显著差异的功能。
第一周:第1-7天
第1天(星期一):正常家庭烹饪日
早餐: 隔夜燕麦(80克燕麦、200毫升全脂牛奶、1根香蕉、1汤匙蜂蜜、15克杏仁)。基准:520卡。
| 应用 | 初始估算 | 修正后 | 时间 | 备注 |
|---|---|---|---|---|
| Cal AI | 340卡 | 340卡 | 4秒 | 完全漏掉了蜂蜜和杏仁。无法添加。 |
| SnapCalorie | 365卡 | 365卡 | 6秒 | 通过3D更好地估算了份量,但仍然漏掉了隐藏成分。 |
| Foodvisor | 380卡 | 420卡 | 15秒 | 识别了燕麦和香蕉。我手动搜索了蜂蜜。 |
| Nutrola | 410卡 | 505卡 | 18秒 | AI识别了燕麦和香蕉。我语音添加了“1汤匙蜂蜜和15克杏仁”。数据库匹配了这两项。 |
午餐: 超市包装希腊沙拉(有条形码)。基准:340卡(按标签)。
| 应用 | 初始估算 | 修正后 | 时间 | 备注 |
|---|---|---|---|---|
| Cal AI | 280卡 | 280卡 | 5秒 | 没有条形码选项。照片估算偏低(漏掉了调料)。 |
| SnapCalorie | 295卡 | 295卡 | 7秒 | 同样的问题。没有条形码。 |
| Foodvisor | 340卡 | 340卡 | 4秒 | 条形码扫描完全匹配。 |
| Nutrola | 340卡 | 340卡 | 3秒 | 条形码扫描。完全匹配。当天记录最快。 |
晚餐: 自制鸡肉炒菜(200克鸡腿肉、150克西兰花、100克彩椒、200克米饭、1.5汤匙芝麻油、2汤匙酱油)。基准:785卡。
| 应用 | 初始估算 | 修正后 | 时间 | 备注 |
|---|---|---|---|---|
| Cal AI | 490卡 | 490卡 | 5秒 | 完全漏掉了烹饪油。低估了295卡。 |
| SnapCalorie | 520卡 | 520卡 | 8秒 | 3D帮助估算米饭体积,但油仍然不可见。 |
| Foodvisor | 530卡 | 580卡 | 20秒 | 识别了炒菜。我手动添加了油,但只能找到“植物油”,而不是芝麻油。 |
| Nutrola | 560卡 | 755卡 | 22秒 | AI识别了鸡肉炒菜和米饭。我语音添加了“1.5汤匙芝麻油”。数据库有确切条目。接近基准。 |
第1天总计:
| 应用 | 记录总计 | 基准 | 误差 | 误差% |
|---|---|---|---|---|
| Cal AI | 1,576卡 | 2,105卡 | -529卡 | -25.1% |
| SnapCalorie | 1,648卡 | 2,105卡 | -457卡 | -21.7% |
| Foodvisor | 1,808卡 | 2,105卡 | -297卡 | -14.1% |
| Nutrola | 2,058卡 | 2,105卡 | -47卡 | -2.2% |
第1天设定了整个测试的模式。仅烹饪油的缺口就占据了照片应用大部分的误差。
第3天(星期三):餐厅午餐日
餐厅餐食是最具启发性的测试。我在一家印度餐厅吃了鸡肉咖喱配烤饼和米饭。无法称量这顿饭,但根据USDA的相似餐食,我估算基准约为950卡。
| 应用 | 估算 | 备注 |
|---|---|---|
| Cal AI | 620卡 | 明显低估。将其视为比实际份量小的餐食。 |
| SnapCalorie | 680卡 | 份量估算更好,但仍然偏低。漏掉了酱汁中的奶油/黄油。 |
| Foodvisor | 740卡 | 更接近。识别了“咖喱”,获取了更好的数据。 |
| Nutrola | 890卡 | AI识别了咖喱。餐厅风格的咖喱数据库条目包括典型的奶油/黄油成分。我确认了份量为“大”。 |
第5天(星期五):奶昔与咖啡挑战
早上的奶昔(香蕉、杏仁奶、花生酱、乳清蛋白、菠菜——在不透明瓶中)。基准:450卡。下午的拿铁(燕麦奶,大杯,2泵香草)。基准:约290卡。
奶昔结果:
| 应用 | 估算 | 备注 |
|---|---|---|
| Cal AI | 180卡 | 看到黑色瓶子,基本上是猜测。 |
| SnapCalorie | 210卡 | 3D测量了瓶子体积,但无法识别内容。 |
| Foodvisor | 195卡 | 同样的限制。看到容器,而不是内容。 |
| Nutrola | 435卡 | 我语音记录了配方。数据库匹配了每种成分。照片没有用(我跳过了)。 |
拿铁结果:
| 应用 | 估算 | 备注 |
|---|---|---|
| Cal AI | 130卡 | 被识别为“咖啡”。 |
| SnapCalorie | 150卡 | 测量了杯子体积,猜测为“拿铁”。 |
| Foodvisor | 160卡 | 被识别为“拿铁”,但假设使用了普通牛奶。 |
| Nutrola | 275卡 | 我语音记录了“大杯燕麦奶拿铁,2泵香草”。数据库有星巴克风格的燕麦奶拿铁条目。 |
这一天突显了语音记录的重要性。基于照片的追踪器对饮料和不透明容器几乎是盲目的。
第一周总结
| 指标 | Cal AI | SnapCalorie | Foodvisor | Nutrola |
|---|---|---|---|---|
| 平均每日记录卡路里 | 1,640卡 | 1,720卡 | 1,870卡 | 2,145卡 |
| 平均每日基准 | 2,180卡 | 2,180卡 | 2,180卡 | 2,180卡 |
| 平均每日误差 | -540卡 | -460卡 | -310卡 | -35卡 |
| 平均每日误差% | -24.8% | -21.1% | -14.2% | -1.6% |
| 平均每餐时间 | 5.2秒 | 7.1秒 | 16.4秒 | 17.8秒 |
| 有条形码的餐食 | 8 | 8 | 8 | 8 |
| 使用条形码的餐食 | 0 | 0 | 8 | 8 |
| 挫败时刻 | 12 | 9 | 5 | 2 |
第一周观察:
Cal AI始终是最快的,但准确性也始终最低。虽然速度在当下感觉不错,但每日总计却严重错误——每天低估540卡会完全消除典型的减重缺口。
SnapCalorie的3D扫描帮助估算了盘中餐食的份量,但未能解决隐形成分(油、隐藏成分、饮料)的根本问题。
Foodvisor的条形码扫描在包装食品方面相较于Cal AI和SnapCalorie具有显著优势。营养师功能存在,但我在实时中从未使用,因为反馈延迟对于日常决策来说不切实际。
Nutrola结合了语音记录和条形码扫描,弥补了两个最大的准确性缺口:隐形成分和包装食品。与Cal AI相比,每餐多出的12秒在实践中几乎没有感觉。
第二周:第8-14天
第8天(星期一):备餐日
我批量烹饪了五天的午餐:鸡胸肉、红薯和青豆。相同的餐食、相同的份量,每天记录。
这是一致性测试。相同的餐食记录五次,应该产生相同的卡路里数。
| 应用 | 第8天 | 第9天 | 第10天 | 第11天 | 第12天 | 范围 |
|---|---|---|---|---|---|---|
| Cal AI | 445 | 410 | 465 | 425 | 455 | 55卡差异 |
| SnapCalorie | 430 | 440 | 420 | 445 | 435 | 25卡差异 |
| Foodvisor | 480 | 480 | 485 | 480 | 480 | 5卡差异 |
| Nutrola | 495 | 495 | 495 | 495 | 495 | 0卡差异 |
基准(称重并计算):490卡。
Cal AI在相同餐食中的55卡差异直接源于AI仅架构——不同的照片产生了不同的估算。SnapCalorie的3D扫描减少了差异。Foodvisor的数据库支持使其几乎保持不变。Nutrola则完全一致,因为我每次都记录了相同的数据库条目(在第8天后保存为餐食模板)。
第11天(星期四):社交晚餐
在朋友家吃晚餐。多道菜品,共同分享,无法称量食物。这是任何卡路里追踪器最困难的真实场景。
菜品包括意大利培根面、凯撒沙拉、蒜蓉面包和提拉米苏。我大致估算我的份量,粗略计算基准约为1,200卡。
| 应用 | 估算 | 备注 |
|---|---|---|
| Cal AI | 680卡 | 只拍了一次盘子的照片。AI将其视为适中的意大利面餐。漏掉了甜点(在记得拍照之前就吃掉了)。 |
| SnapCalorie | 720卡 | 同样的盘子照片。3D帮助估算了意大利面的体积。也漏掉了甜点。 |
| Foodvisor | 810卡 | 拍摄了盘子,然后记得手动从数据库中添加提拉米苏。 |
| Nutrola | 1,080卡 | 拍摄了盘子。AI识别了意大利面和沙拉。我语音添加了“两个蒜蓉面包,带黄油”和“一片提拉米苏,约150克”。所有信息来自数据库。 |
社交晚餐暴露了仅依赖照片的工作流程的脆弱性。忘记拍摄一道菜(甜点)造成了200-400卡的差距,而仅依赖照片的应用无法弥补。Nutrola的语音记录允许在事后添加漏掉的菜品。
第14天(星期日):早午餐和零食日
这一天有丰盛的早午餐(班尼迪克蛋配烟熏三文鱼、土豆块、水果沙拉、橙汁和卡布奇诺)以及多个小零食。
零食特别具有启发性。我吃了一把混合坚果(估计180卡)、一根蛋白棒(条形码:210卡)、一个苹果(95卡)和一些黑巧克力(150卡)。这些快速零食容易被忽略或估算不准确。
| 应用 | 早午餐估算 | 零食总计 | 当天总计 | 基准 | 误差 |
|---|---|---|---|---|---|
| Cal AI | 580卡 | 320卡 | 1,890卡 | 2,450卡 | -560卡 |
| SnapCalorie | 620卡 | 340卡 | 1,960卡 | 2,450卡 | -490卡 |
| Foodvisor | 710卡 | 485卡 | 2,185卡 | 2,450卡 | -265卡 |
| Nutrola | 820卡 | 615卡 | 2,380卡 | 2,450卡 | -70卡 |
早午餐的荷兰酱是主要的差异因素——Cal AI和SnapCalorie几乎没有考虑到。蛋白棒的条形码扫描为Foodvisor和Nutrola提供了准确的数据。混合坚果需要语音描述(“一把混合坚果,大约40克”)才能准确记录。
第二周总结
| 指标 | Cal AI | SnapCalorie | Foodvisor | Nutrola |
|---|---|---|---|---|
| 平均每日记录卡路里 | 1,580卡 | 1,680卡 | 1,910卡 | 2,190卡 |
| 平均每日基准 | 2,220卡 | 2,220卡 | 2,220卡 | 2,220卡 |
| 平均每日误差 | -640卡 | -540卡 | -310卡 | -30卡 |
| 平均每日误差% | -28.8% | -24.3% | -14.0% | -1.4% |
| 平均每餐时间 | 5.0秒 | 6.8秒 | 15.8秒 | 16.2秒 |
第二周的误差稍微比第一周的AI应用更糟,因为出现了更复杂的餐食(餐厅、社交晚餐、早午餐)。随着我对语音记录的熟练程度提高,Nutrola的准确性在第二周实际上有所提升,并建立了保存餐食的库。
14天完整结果
| 指标 | Cal AI | SnapCalorie | Foodvisor | Nutrola |
|---|---|---|---|---|
| 14天总记录卡路里 | 22,540 | 23,800 | 26,460 | 30,345 |
| 总基准卡路里 | 30,800 | 30,800 | 30,800 | 30,800 |
| 总卡路里误差 | -8,260 | -7,000 | -4,340 | -455 |
| 平均每日误差% | -26.8% | -22.7% | -14.1% | -1.5% |
| 误差方向 | 始终低估 | 始终低估 | 始终低估 | 随机(有时高估,有时低估) |
| 单日最大误差 | -780卡 | -650卡 | -420卡 | -95卡 |
| 单日最佳误差 | -320卡 | -280卡 | -140卡 | +15卡 |
| 平均每餐时间 | 5.1秒 | 7.0秒 | 16.1秒 | 17.0秒 |
| 每日总追踪时间 | ~25秒 | ~35秒 | ~80秒 | ~85秒 |
| 使用条形码扫描的次数 | 0 | 0 | 16 | 16 |
| 使用语音记录的次数 | 0 | 0 | 0 | 38 |
| 忘记拍照的餐食 | 4 | 4 | 4 | 0(事后语音记录) |
关键发现
1. 低估偏差是真实且一致的
所有四款应用都低估了总卡路里摄入,但幅度差异巨大。Cal AI在14天内低估了8,260卡,相当于2.4磅的体脂——依赖Cal AI进行减重的用户会认为自己在两周内多减了2.4磅。
这种低估是系统性的,而非随机的,因为最常见的AI失误(隐形烹饪油、隐藏成分、酱汁低估)都导致了低计数,而非高计数。
2. 语音记录是卡路里追踪中被低估的功能
在14天内,语音记录占据了38个条目——主要是烹饪油、奶昔、咖啡饮料和漏拍的餐食。这38个语音记录代表了约5,200卡的卡路里,如果使用仅依赖照片的应用,这些卡路里将会丢失或严重低估。
3. 条形码扫描是最简单的准确性提升
在14天内进行了16次条形码扫描。每次只需2-3秒,产生99%以上的准确数据。Cal AI和SnapCalorie强迫对每一个包装产品进行照片估算——使用85%-92%的准确性方法,而实际上可以使用99%以上的准确性方法。
4. 实际速度差异微不足道
Cal AI(每天25秒)与Nutrola(每天85秒)之间的差异为60秒——每天额外多花一分钟的时间,换来25个百分点的准确性提升。换句话说:每天多花一分钟就能在两周内消除8,000卡的误差。
5. 一致性对趋势分析至关重要
Nutrola基于数据库的条目在14天内产生了平滑、可靠的卡路里趋势。Cal AI的可变估算则造成了噪声趋势,日常波动主要受到AI估算差异的影响,而非实际饮食模式的变化。如果你想识别周末饮食习惯是否与工作日不同,你需要一致的工作日基线——而仅依赖AI的追踪器无法提供这些。
结论
Cal AI确实快速且简单。对于那些希望零摩擦且不需要精确数字的人来说,它作为一种意识工具是有效的。但26.8%的平均每日误差使其不适合任何需要准确数据的目标。快速、简洁的体验被记录中的数字显著错误所削弱。
SnapCalorie是测试中技术上最有趣的应用。3D扫描并非花招——它确实改善了可见盘中食品的份量估算。但改进幅度有限(22.7%的误差对比Cal AI的26.8%),因为最大误差来自隐形成分,而非份量计算错误。对于仅依赖照片的应用,9-15欧元的定价很难证明其合理性。
Foodvisor占据了一个合理的中间地带。条形码扫描和部分数据库支持大大降低了相较于仅依赖AI的应用的误差。它在欧洲食品方面表现最佳,并具有专业的感觉。营养师功能是一个独特的提供,但延迟使其在实时追踪中不切实际。
Nutrola以显著的优势产生了最准确的食物日志——1.5%的平均误差对比竞争对手的14-27%。这种准确性并非来自更优秀的AI,而是因为经过验证的数据库捕捉了AI遗漏的内容,语音记录弥补了照片无法捕捉的部分,而条形码扫描为包装产品提供了确切数据。每月仅需2.50欧元的费用(免费试用后无广告),比它超越的每款应用都便宜。
每天多花一分钟是诚实的权衡。Nutrola并不是最快的应用。它每餐需要多花几秒钟,并且需要用户稍微更积极(确认数据库条目、语音记录隐形成分)。但结果是一个反映你实际饮食的食物日志——这正是卡路里追踪的全部意义。
经过14天的并行测试,结论非常明确:最可靠的AI卡路里追踪器并不是拥有最强AI的那款,而是能够意识到AI不足之处,并准备好经过验证的数据库、语音记录和条形码扫描来填补空白的那款应用。在本次测试中,这款应用就是Nutrola。