扫条码算热量:营养成分表没告诉你的事
先说结论: 扫条码是记录包装食品最准的方式,因为数字来自厂家的标签,不是估算。但标签算的是厂家自己定义的"每份"或"每100克",按国家标准有些数值低于门槛可以标成"0",而它对"你吃了这包里的多少"只字不提。扫完再补一句量,几乎就准了;只扫不补,有时反而比拍照偏得更远。
它是怎么工作的
包装上的条码是商品编号(国内是以69开头的商品条码,欧洲是EAN,美国是UPC),不是营养数据。App用摄像头读出这串码,再去一个把码和商品、标签对应起来的数据库里查。数据库大致有三类:
- 厂家提供的数据。 直接来自品牌,准确,但覆盖有缺口。
- 公共数据库,例如Open Food Facts。 由用户填充,数百万条商品,在欧洲尤其强,任何App都能免费用。配方一变,条目就旧了。
- App自己的数据。 MyFitnessPal那两千万条大多是用户上传的,覆盖广,错条目的比例也高。
覆盖范围有强烈的地域性。国产商品,国内App找到的概率明显更高。扫了没结果,不是扫描器坏了,是数据库有洞——这时候拍一张营养成分表,或者直接说出商品名。
扫出来能准确拿到什么
热量、蛋白质、碳水、脂肪,以及标签上印的一切:糖、膳食纤维、钠、饱和脂肪,有时还有维生素。所以条码是拿到多数App会忽略的那三项——糖、纤维、钠——最好的输入方式,因为它们以照片永远做不到的方式印在了标签上。
CalMePlease在扫描时会把这些自动填进十项指标里。只看四项营养素的App会把它们丢掉。
中国标签要先看懂两件事
第一,能量单位是千焦。 按国家标准GB 28050,预包装食品的营养成分表必须标注能量以及蛋白质、脂肪、碳水化合物、钠这"1+4"项,能量以千焦(kJ)表示,并给出营养素参考值百分比(NRV%)。而我们日常说的"大卡"是千卡:1大卡≈4.184千焦。看到"1450千焦"要先除以4.184,约等于347大卡。这一步没做,误差就是四倍多。有些标签会同时标出千卡,但不是必须的。
第二,看清是"每100克"还是"每份"。 标准允许按每100克、每100毫升或每份标示。同一包薯片,按100克标和按一份30克标,数字差三倍多。App有时会把100克的数值当成一份带出来,大包装尤其要确认它是按什么算的。
标签藏起来的几件事
1. "每份"不是你的量
所有标签都以某个"份"为基准,而这一份多大由厂家决定。一包100克的零食可能写成"3份";一瓶500毫升的饮料可能按250毫升标示。扫完直接接受默认值,你记下的就是实际吃掉的三分之一。
解决办法: 扫完之后把量说出来。"一整包""半瓶""150克"。在CalMePlease里说一句就行。扫描出的错误,大多数不是标签错,而是量错。
2. "0"是有门槛的
国家标准允许在低于一定含量时标示为"0"。也就是说,标着"0"的那一项不等于绝对没有,只是低于可以标零的门槛。单次差别很小,但如果你一天里多次少量食用同一类产品——比如反复用某种喷雾油或者调味料——这部分就完全不会出现在你的记录里。
3. "生重"和"熟重"
面条、大米、燕麦这些会吸水的东西,标签按干重标示。生米100克约350大卡,蒸熟的米饭100克约130大卡。扫了包装、记下熟重,误差接近三倍。
解决办法: 熟食按熟重记到熟食条目上,或者按干重记你实际下锅的量。
4. 允许误差
标准承认实测值与标示值之间存在允许的偏差范围,各国都是如此。独立检测中,包装食品的实测热量高于标示值10%到20%的情况会定期出现。
5. 配方会改
厂家会调整配方,而数据库里的条目可能是三年前的。手上的标签和扫描结果对不上时,以手上的标签为准。
便利店和常见包装的几个具体坑
把上面的规则落到日常最常买的几类东西上,坑的位置相当固定。
饭团和三明治。 通常是"每份即整包",这一类反而最省事,扫完直接记就行。要注意的是同一系列不同口味差别不小,别用上次的记录顶替这次。
酸奶和乳饮料。 大杯装经常按100克标示,而你一次喝掉的是一整杯。另外"乳酸菌饮料"和"酸奶"是两类东西,前者的糖通常高得多,名字看起来却很接近。
方便面。 标签一般把面饼和调料包分开标,或者只标面饼。整包吃完的话,油包和粉包都要算进去,两者加起来常常占总热量的三分之一以上。
坚果和果干。 这类东西的密度高,一小把就接近一份,而"一小把"在不同人手里差一倍。这是最值得称一次、记住大概是多少的一类。
大瓶饮料。 按250毫升标示的500毫升装很常见。喝完整瓶就要乘以2,这一步漏掉,一天就少记100到200大卡。
条码、拍照、语音:什么时候用哪个
| 情况 | 最合适的输入 | 原因 |
|---|---|---|
| 包装食品全部吃完 | 条码 | 和标签一样准 |
| 包装食品吃了一部分 | 条码+说出量 | 对吃掉的比例,和标签一样准 |
| 家常菜 | 拍照+语音补充 | 没有条码,AI给组成部分命名 |
| 在外面吃、外卖 | 拍照+语音补充 | 油和糖藏着 |
| 没有包装的零食 | 语音 | 最快 |
| 自己煮的饭或面 | 条码+熟重 | 标签按干重 |
规律是这样的:条码对"印出来的东西"准确,量由你补;拍照估算量,看不见的东西由你补;语音则两样都靠你的记忆补。
哪些App免费扫条码
| App | 免费版的条码 |
|---|---|
| CalMePlease | 支持 |
| Cronometer | 支持 |
| Cal AI | 支持 |
| 薄荷健康 | 支持 |
| 食物库 | 支持 |
| MyFitnessPal | 仅会员(2022年起) |
可以照做的顺序
- 扫一下。
- 看清它是按什么算的(每份?每100克?干重?),能量单位是千焦还是千卡。
- 用你自己的单位说出吃了多少。
- 如果查不到这个商品,拍营养成分表或者说出商品名。不要随便挑一条"差不多"的条目——最大的误差就是从这里来的。
- 米饭和面条按熟重记到熟食条目上。
五步里有两步是关于量的。这就是全部的教训:标签是准的,变量是你的分量。
常见问题
扫条码比拍照准吗? 对包装食品是的。对"你吃了多少"不是——扫描不知道你吃的是一份还是一整包。
为什么App里的热量和包装上不一样? 可能是配方改了而条目还是旧的,可能是把每100克的数值当成了每份,也可能是别人录错了。以手上的标签为准。另外注意有没有把千焦当成千卡看。
千焦怎么换算成大卡? 除以4.184。1000千焦约等于239大卡。
这些App用的是什么数据库? 厂家数据、Open Food Facts和用户自建条目的混合,覆盖范围有地域差异。国产商品用国内App命中率更高。
除了热量,糖和钠也能扫出来吗? 可以,因为它们印在标签上。CalMePlease每次扫描都会把糖、钠和膳食纤维作为十项指标的一部分记下来。
没有条码的东西怎么办? 拍营养成分表,或者说出名称。蔬菜、水果、生鲜肉和面包房的产品都没有条码。
延伸阅读:AI是怎么认出食物的 · 用语音记录饮食
CalMePlease免费版支持扫条码,并把标签上的糖、钠和膳食纤维计入每餐十项指标。在App Store获取。