Nutrola食品数据库的构建:从USDA数据到1200万条验证记录

Nutrola中的每一卡路里数据都有其来源。本文将详细介绍食品数据库的构建、验证和维护过程,以及其准确性的重要性。

Medically reviewed by Dr. Emily Torres, Registered Dietitian Nutritionist (RDN)

当你在卡路里追踪应用中搜索“烤鸡胸肉”,看到“每100克165卡路里”时,这个数字并不是凭空而来的。它是经过测量和验证的,某人认为这个数据足够准确,才会展示给数百万基于此数据做出健康决策的用户。

食品数据库的质量是每个卡路里追踪应用背后看不见的基础。如果数据库错误,那么基于它构建的一切都会出错:你的每日卡路里总数、宏观营养素分解、每周趋势、教练的建议,最终影响到你的结果。然而,大多数用户从未考虑过这些数字的来源,而大多数应用也从未对此进行解释。

本文将详细描述Nutrola的食品数据库是如何构建的,从其政府数据基础到如今的1200万条验证记录。同时,它还将解释为什么不同应用之间数据库的质量差异如此巨大,以及这对你追踪准确性意味着什么。

基础:USDA FoodData Central

每个严谨的营养数据库都始于美国农业部(USDA)。自1890年代以来,USDA就开始测量食品的营养成分,其现代数据库FoodData Central代表了世界上最全面、经过严格验证的食品成分数据集合。

FoodData Central包含多个数据集。SR Legacy提供约7600种常见食品的详细营养成分,每一种都经过实验室分析,而非估算。食品经过实际购买,按照标准化协议准备,并使用经过验证的分析化学方法进行分析。Foundation Foods是其更新、更详细的继任者,提供变异性、样本量以及关于品种、品系、来源和收获季节的元数据。FNDDS涵盖常见的混合菜肴和食谱,配有与家庭测量相关的份量数据。Branded Foods则通过与Label Insight(现为NielsenIQ)的合作获取包装食品数据。

Nutrola吸收这四个数据集,将其标准化为一致的架构,并交叉引用条目以解决差异。当SR Legacy和Foundation Foods都包含同一项数据时,Foundation Foods的值优先,因为它们基于更近期的分析。

这个USDA基础提供了大约400,000个独特的食品条目。这是一个良好的起点,但对于现代卡路里追踪应用来说远远不够。大多数人并不吃“鸡肉,肉胸,熟,烤”。他们吃的是Chick-fil-A的三明治,Trader Joe's的冷冻餐,或者是祖母从另一个国家带来的自制菜肴。涵盖人们实际饮食的全范围,需要远远超出政府数据的范畴。

添加品牌食品数据

品牌食品层是数据库最大的单一扩展。带有营养成分标签的包装食品在美国和其他发达国家的典型饮食中占据重要部分,用户期望在搜索时找到他们特定的产品。

Nutrola通过多个渠道获取品牌食品数据。

直接制造商合作提供最高质量的品牌数据。当制造商直接分享营养数据时,这些数据来自于生成营养成分标签所使用的实验室分析。Nutrola与数百家食品制造商保持数据共享协议。

条形码数据库集成通过开源条形码数据库、政府食品标签注册和商业数据提供商捕获大量产品。当用户扫描一个未识别的条形码时,系统会启动验证工作流程,确保该条目在向所有用户开放之前经过验证。

标签扫描和OCR从实际的营养成分标签中构建条目。每个通过OCR生成的条目都经过验证,检查常见的提取错误:误读的小数点、数字颠倒以及超出合理范围的数值。

定期刷新周期确保品牌数据保持最新。制造商定期重新配方。Nutrola对高销量产品进行季度刷新,对更广泛的目录进行年度刷新,并标记值发生变化的条目。

这个品牌食品层为数据库增加了大约150万条条目,每条都与特定的UPC/EAN条形码和产品标识符相连。

用户贡献的条目与准确性问题

大多数大型卡路里追踪数据库在很大程度上依赖于众包数据,即用户手动输入标签、食谱或个人估算的营养信息。这种方法扩展迅速,但也是营养追踪行业中数据库错误的最大来源。

众包食品数据存在的问题已被广泛记录。2020年,Evenepoel等人在《营养学》杂志上发表的综述发现,众包营养数据库中的宏观营养素值错误率在15%到25%之间。这些错误的类型包括:

**数据输入错误。**用户输入52克蛋白质而不是5.2克。小数点错误使一份酸奶的蛋白质看起来与整只鸡胸肉相当。这些错误很常见,因为手动数据输入本质上容易出错,而大多数众包系统在条目发布前没有机制来捕捉这些错误。

**重复和冲突条目。**在大型众包数据库中搜索“香蕉”,你可能会发现三十个不同卡路里值的条目。有些列出小香蕉,有些列出中等香蕉,还有些列出大香蕉。有些包括香蕉皮的重量,有些则不包括。有些是准确的,有些则完全错误。用户不得不猜测哪个条目是正确的,而他们没有可靠的方法来做出判断。

**过时的产品信息。**用户在2022年提交了一款燕麦棒的数据。制造商在2024年重新配方,减少了糖分并增加了纤维。旧条目在数据库中无限期保留,导致选择它的用户获取错误的值。

**估算而非测量。**一些用户提交的条目根本不是基于标签数据,而是用户对食品营养成分的个人估算。这些条目可能与实际值偏差50%或更多。

**不一致的份量大小。**一个“熟米饭”的条目使用100克的份量,另一个使用一杯,另一个则使用“一个份量”而未定义其含义。选择这些条目的用户可能没有注意到份量大小的差异,导致错误在餐食中累积。

Nutrola接受用户贡献的条目,因为它们对于捕捉人们饮食的多样性至关重要,包括地方菜肴、特定餐厅的菜品和不在任何官方数据库中的自制食谱。然而,每个用户贡献的条目在广泛可用之前都要经过验证流程。该条目可以立即被创建者使用,但在经过验证之前不会展示给其他用户。

验证流程

Nutrola中的每个食品条目,无论其来源如何,都必须经过多阶段的验证流程,才能进入公共数据库。

**第一阶段:自动合理性检查。**算法检查提交的营养值是否符合已知限制。卡路里必须与声明的宏观营养素(蛋白质、碳水化合物、脂肪)在定义的容差范围内一致。Atwater系统提供转换因子:每克蛋白质4卡路里,每克碳水化合物4卡路里,每克脂肪9卡路里,每克酒精7卡路里。如果用户提交的条目声称有200卡路里、30克蛋白质、20克碳水化合物和15克脂肪,计算出的卡路里值是335,而不是200。该条目将被标记为待审查。

这一阶段还检查食品类别内的不合理值。一个水果条目声称每份含有40克脂肪,一个蔬菜条目声称每100克含有60克蛋白质,或者任何单一宏观营养素超过份量总重的条目都会被自动标记。这些检查捕捉到大多数数据输入错误,包括小数点错误和单位混淆。

**第二阶段:交叉引用匹配。**系统将提交的条目与现有的相同或相似食品条目进行比较。如果USDA数据库中有“切达奶酪”的参考条目,而用户提交的品牌切达奶酪条目的卡路里值比USDA参考低40%,该条目将被标记为待人工审查。小的偏差是可以接受的,因为品牌产品会有所不同,而大的偏差则可能表明错误。

**第三阶段:营养师审查。**通过自动检查但属于高重要性类别的条目,例如主食、高搜索量项目或边缘合理性评分的条目,将被转入营养师审查队列。Nutrola的注册营养师和食品科学家的团队会根据权威来源检查这些条目,交叉核对制造商网站、多个国家的政府数据库和已发布的食品成分表中的值。

**第四阶段:社区共识。**对于已在数据库中存在一段时间的条目,使用模式提供了额外的质量信号。如果许多用户选择了某个条目且没有人报告其不准确,那就是一个积极信号。如果用户频繁选择某个条目然后立即编辑其值,这种模式则表明原始条目可能存在错误。这些行为信号反馈到审查流程中,浮现出可能存在问题的条目以供重新审查。

营养师审查流程

人类审查层是验证数据库与众包数据库之间的区别。自动检查能够捕捉明显的错误,但微妙的不准确性需要人类判断。

Nutrola的营养师审查团队采用优先级系统。食品的审查优先级基于搜索量、错误概率和营养重要性。水的卡路里计数(应为零)出现错误没有实际后果,而橄榄油的卡路里计数错误,作为一种高卡路里常见食品,可能会使用户的每日总数偏差数百卡路里。

单个条目的审查流程包括识别最权威的来源(原料的USDA实验室数据、品牌产品的制造商数据、餐厅菜品的已发布营养信息),将所有报告的营养成分与该来源进行比较,评估份量大小的准确性,并检查搜索元数据,以便用户能够找到该条目。

像传统地方菜肴这样没有标准化食谱的复杂条目可能需要30分钟或更长时间的研究。简单的品牌产品验证则在一分钟内完成。团队优先审查高影响条目,将审查时间集中在能够最大程度提高整体数据库准确性的地方。

如何捕捉和纠正错误

没有一个拥有1200万条条目的数据库是完全没有错误的。目标不是完美,而是随着时间的推移系统性地减少错误,并在发现错误时迅速纠正。

Nutrola使用多种错误检测机制并行运行。

**用户报告。**应用中的每个食品条目都有“报告问题”选项。用户可以标记条目为卡路里不正确、宏观营养素错误、信息过时、份量大小不正确或其他问题。报告根据数量和严重性进行分类。对低量条目的单个报告进入标准审查队列。对高量条目的多个报告则触发立即审查。

**自动异常检测。**统计模型监控数据库中显著偏离其食品类别规范的条目。如果数据库中所有奶酪条目的平均卡路里密度为每100克350卡路里,而某个奶酪产品声称每100克仅有35卡路里,则会自动标记该条目。这些模型持续运行,捕捉到个别用户可能未注意或报告的错误。

**条形码扫描验证。**当用户扫描产品条形码时,返回的数据会与最新的制造商数据进行比较。如果制造商更新了其营养信息,而数据库条目尚未刷新,则会触发更新工作流程。

**跨数据库对账。**Nutrola定期将其条目与USDA数据库、国际食品成分数据库和合作伙伴数据源的更新版本进行交叉引用。与参考来源偏离的条目会被标记以供审查和纠正。

**营养一致性审计。**定期审计检查每个食品类别中的随机样本,检查内部一致性。这些审计发现了错误集群,例如由于列映射错误而导致的进口条目中纤维值与糖值混淆的情况。

一旦确认错误,纠正措施会立即应用并传播给所有用户。最近记录了受影响食品的用户会收到通知,允许他们查看并调整自己的记录。

国际美食的区域食品数据库

仅基于美国数据构建的食品数据库对于全球用户群体来说是不够的。一个在日本搜索“饭团”的用户需要准确的结果。在印度搜索“达尔玛卡尼”的用户需要反映实际准备方法和使用的食材的条目,而不是美国化的餐厅改编。

Nutrola整合了来自30多个国家和地区的政府数据库的食品成分数据。

**欧洲:**EuroFIR网络协调各欧洲国家的数据。来自英国(McCance和Widdowson's)、德国(Bundeslebensmittelschluessel)和法国(CIQUAL)的国家数据库提供地方食品和本地品牌产品的条目。

**东亚:**日本的食品成分标准表、韩国的国家标准食品成分数据库和中国的食品成分表为区域特定食品提供数千条条目,包括特定准备方式的变种。蒸米饭与炒米饭、原豆腐与炸豆腐之间的差异并不微小,这些数据库捕捉到了这些细微差别。

**南亚:**印度国家营养研究所提供了独特于次大陆的食品数据,包括地方谷物、豆类制品和营养成分与其西方对应物不同的乳制品,如奶酪和酥油。

**拉丁美洲及中东/非洲:**来自巴西(TACO)、墨西哥(BDCA)和中东及非洲各地区数据库的食品成分表为如小米、因杰拉、以芝麻酱为基础的菜肴和北美数据库中缺失的地方准备提供数据。

整合这些来源并非简单的数据导入。不同国家使用不同的分析方法、营养定义和份量惯例。在美国,一个“杯”是240毫升,在日本是200毫升,在澳大利亚是250毫升。Nutrola的数据工程团队维护一个标准化层,将所有进入的国际数据转换为一致的标准:公制单位、标准化的营养定义和统一的食品分类代码。

数据库来源比较

下表总结了每个主要数据来源对Nutrola食品数据库的贡献特征。

来源 条目 准确性 覆盖范围 更新频率 限制
USDA FoodData Central ~400,000 非常高(实验室分析) 对生鲜商品和美国品牌食品强 年度主要发布,持续更新 国际食品有限,餐厅项目有限
制造商标签 ~1,500,000 高(受监管,FDA审核) 对包装食品极好 根据制造商不同;Nutrola每季度刷新 仅覆盖包装产品,允许20%FDA偏差
国际政府数据库 ~2,000,000 高(实验室分析,因国而异) 对地方食品极好 年度或更少 各国标准不一致,部分过时
众包(用户贡献) ~6,000,000 可变(验证前错误率15-25%) 包括小众项目的最广泛覆盖 持续 需要验证流程;原始数据不可靠
营养师验证 ~2,100,000 非常高(交叉引用,人为审核) 根据搜索量优先 持续优先审查 资源密集,无法覆盖每个条目

这些来源并不是相互排斥的。单个食品项目可能来自多个来源。当存在冲突时,解决优先级为:USDA或同等政府实验室数据优先,其次是制造商数据,再次是营养师验证数据,最后是经过验证的众包数据。这个优先级确保了最严格验证的数据总是优先考虑。

为什么准确性比规模更重要

一些竞争应用宣传其数据库规模达到1500万、2000万甚至3000万条。没有质量的规模是毫无意义的,甚至可能是有害的。

一个拥有3000万条条目且错误率为20%的数据库包含600万条错误条目。一个用户如果记录了其中一条错误条目,便会对其准确性充满信心地追踪错误数据。错误会累积:如果一个常用早餐条目将蛋白质高估了10克,而你每周吃五次,那么你相信自己每月摄入的蛋白质比实际多了200克。如果你根据这些数据减少其他地方的蛋白质摄入,后续的影响是显而易见的。

这就是为什么Nutrola优先考虑经过验证的条目数量而非原始条目数量。一个不存在的条目是中性的,而一个存在但错误的条目则是积极有害的。

数据库的增长

数据库并不是静态的。它通过多个渠道不断增长。自动系统监控条形码扫描请求,识别用户搜索但尚不存在的产品,并优先添加高需求项目。用户提交的条目包括地方菜肴、餐厅项目和任何官方数据库未覆盖的自制食谱。制造商合作确保当大型连锁推出新菜单项目时,营养数据在发布当天即可使用。定期的USDA和国际数据库发布也会在可用时被吸收。

常见问题解答

Nutrola的食品数据库与其他应用相比准确性如何?

Nutrola的验证条目在宏观营养素方面的平均准确性在实验室测量值的5%以内,基于内部审计将条目与独立分析数据进行比较。未经验证的众包数据库通常显示15%到25%的错误率。差异源于每个条目在广泛可用之前必须经过的验证流程。

当我扫描条形码而未找到产品时会发生什么?

应用会提示你输入标签上的营养信息。你的条目会立即可供你使用,然后进入验证流程,待审核后再展示给其他用户。高需求产品会被优先快速审核。

数据库更新的频率如何?

持续更新。用户贡献的条目每天处理。品牌产品数据对高销量产品每季度刷新。USDA和国际发布会在发布后两周内被纳入。错误修正通常在确认后的24到48小时内应用。

我可以信任餐厅餐点的卡路里计数吗?

对于发布官方营养数据的大型连锁,条目直接来源于其自身的测量,准确性与连锁的官方数据相同。对于独立餐厅,条目是基于食谱的估算,存在更大的不确定性。Nutrola会标记餐厅条目并提供信心指标,以便你了解数据是否来自官方来源或估算。

为什么Nutrola有时显示的值与我食品标签上的不同?

常见原因有三个:制造商可能已重新配方、份量定义可能不同,或者营养成分四舍五入规则导致小的差异(通常在5到10卡路里内)。通过应用报告差异会触发更新。

Nutrola如何处理自制食谱?

你可以通过将经过验证的数据库中的单个成分条目组合来构建自定义食谱条目,并根据份量进行调整。由于成分条目是经过验证的,主要的错误来源是份量测量,而不是数据本身的问题。

Nutrola的数据库与开源替代品有什么不同?

像Open Food Facts这样的开源数据库提供有价值的数据,但没有系统性验证。条目由志愿者提交并在没有合理性检查或营养师审核的情况下发布。Nutrola将开源数据作为众多输入之一,所有导入的条目都要经过与其他来源相同的验证流程。

持续的工作

构建食品数据库不是一个有终点的项目。食品在变化。新产品推出。旧产品被重新配方或停产。分析方法不断改进。

今天Nutrola数据库中的1200万条条目在一年后将不会是相同的。有些会被更新,有些会被移除,还有数十万条新条目将被添加。验证流程将捕捉到早期版本中遗漏的错误。营养师审查团队将不断提高经过人工验证的条目的比例。

没有人下载卡路里追踪应用是因为他们对食品成分数据标准化感到兴奋。然而,每一个准确的卡路里计数、每一个可靠的宏观营养素分解、每一个可信的每日总数都依赖于这个基础设施在每个搜索结果中正确、无形地运作。当你记录午餐时数字是正确的,这不是偶然,而是一个专门构建的系统确保它们正确的结果。

准备好改变您的营养追踪方式了吗?

加入成千上万已通过 Nutrola 改变健康之旅的用户!