CarbCam:工作原理是什么?

CarbCam 是如何工作的?

CarbCam 获取你的照片,将其发送给 AI 服务,接收对各成分的估算结果, 将数值与标准营养数据库进行校验,然后将结果展示给你。

流程概览

每次分析最多经过六个步骤:

1
拍照
2
裁剪
3
预检查
4
AI 分析
5
校验
6
保存

流程可视化演示:下方附有真实截图以供对比:

CarbCam,扫描标签页

1. 扫描标签页

CarbCam,AI 分析中

2. AI 分析

CarbCam,结果

3. 结果

流程详解

1 拍照与本地图像裁剪

照片最初完全保留在你的设备上。你可以裁剪、旋转,或重新拍摄。 在你点击“分析”之前不会上传任何内容。

2 服务器缓存查询(预检查)

在图片被发送给 AI 之前,应用会通过 SHA-512 哈希和感知哈希 检查服务器缓存中是否已存在相同或非常相似的照片。如果命中,你会立即得到 已保存的结果,无需再次调用 AI。 随后的确认步骤会将该缓存条目标记为已消耗(计入额度)。

3 上传给 AI 分析

如果没有命中缓存,(已裁剪的)照片会被发送到我们的分析端点。 该端点会调用视觉模型(Gemini、Claude 或 OpenAI,取决于你在应用设置中的选择)来描述图像,标注各个成分,并估算大致分量。

隐私:照片不会用于模型训练。 详情请见隐私政策
4 后台校验(仅在置信度较低时)

如果 AI 估算结果报告置信度较低,服务器会在后台 对营养数据库(USDA FoodData Central、Open Food Facts)进行交叉核查。校正后的数值 会写入缓存,下次匹配到相同或相似照片时,你会看到 改进后的结果。对于置信度较高的扫描,此步骤会被跳过。

但对于条形码,Open Food Facts / USDA 的比对始终会直接执行, 因为生产商营养标签在这里是主要数据来源。

5 由你编辑

你可以覆盖任意数值:分量、碳水、卡路里、FPE、成分。 保存时使用的是你的数值,而不是 AI 的估算值。 应用会将你的总碳水校正值(用户:X 克,AI:Y 克)作为差值保存,用于统计目的。

6 保存与 Nightscout 同步

本地保存在 SQLite 数据库中。也可选择通过Nightscout 同步写入你的 Nightscout 实例,但仅作为治疗记录表中的备注 (标签为 CarbCam),不作为主动的碳水/胰岛素治疗。 你的 Loop/AAPS/iAPS 计算不受 CarbCam 保存操作的影响,这一餐仅以备注形式可见。 如果你使用ns.10be.de 的托管 Nightscout,设置会格外简单:输入 Nightscout 网址和 API 密钥即可,完成。

如果你希望碳水数据主动作为治疗记录,请在扫描结果中使用分享按钮, 它会通过深度链接将碳水数值发送给 AAPS/AndroidAPS、Loop、iAPS 或 Trio,或打开系统分享菜单。

什么是 FPE?

FPE 代表 脂肪蛋白质单位。 它描述了脂肪和蛋白质中的能量以延迟的方式对血糖产生的影响。

FPE = (脂肪 × 9 + 蛋白质 × 4) ÷ 100

1 个 FPE 大约相当于 100 千卡来自脂肪和蛋白质的能量。示例:

  • 30 克脂肪 + 20 克蛋白质 = (270 + 80) ÷ 100 = 3.5 FPE

胰岛素泵用户常用 FPE 来设置延时大剂量参数(例如方波或双波)。 笔用户可以将 FPE 作为粗略指标,用于判断是否需要延迟加餐校正或小幅下午校正。

CarbCam 在结果卡片中以黄色标签显示 FPE。 营养数值配色如下:

  • Carbs 碳水化合物
  • kcal 卡路里
  • FPE 脂肪蛋白质单位
  • Fat 脂肪
  • Protein 蛋白质

餐食下方的血糖曲线

当配置了 Nightscout 后,CarbCam 会从你的 Nightscout 实例加载血糖数据, 并在历史标签页中每餐下方展示血糖曲线。 时间窗口因平台而异,会自动围绕这一餐进行选择。 结合 Nightscout,CarbCam 能够实现有针对性的餐后血糖追踪。

血糖曲线(Nightscout 数据)的功能特点:

  • 围绕这一餐的时间窗口(因平台而异)
  • 用餐时间的标记
  • 用颜色突出显示的峰值点(红/黄/绿,取决于数值高低)
  • 上升幅度和结束数值作为关键指标
  • IOB / COB 作为可选叠加线
这条曲线可以帮助你学习:你的身体对意面有什么反应?对披萨呢?对寿司呢? 通过历史记录中的对比功能,你可以叠加多条曲线进行比较。
血糖曲线需要有效的 Nightscout 连接。没有 Nightscout 时,此部分不会显示。 还没有 Nightscout?在 NS10BE 设置托管 Nightscout 服务,即可立即将 CarbCam 连接起来。

准确性

准确度因餐食类型而异:

按餐食类型划分的准确度
餐食类型 典型偏差 示例
清晰的分量 ±20% 米饭、意面、面包
复杂餐食 ±30% 炖菜、焗菜
非常不常见 ±40% 或更高 陌生的地区性菜肴
包装食品 ±5% 自动条形码识别(通过 Open Food Facts 获取生产商数值)
有助于提升准确度的做法:
  • 良好的光线与清晰的照片:不要让阴影遮住餐盘
  • 所有成分都清晰可见:不要让酱汁把意面完全淹没
  • 比例参照物:将盘子边缘、餐具或手放进画面中
  • 常见菜品:AI 对广为人知的菜品识别效果更好
会降低准确度的因素:
  • 自助餐盘上摆放着许多小份食物
  • 被酱汁大量覆盖的成分
  • 没有明确参考数据库的非常不常见的地区性菜肴
  • 从侧面斜角拍摄且没有比例参照物
这对你的大剂量意味着什么:
  • 对于普通餐食:将估算值作为起点,结合你自己的经验,必要时在保存前调整数值
  • 对于关键性的大剂量决策(极高碳水、低血糖风险):始终参考你自己的经验、数据库或包装信息
  • 使用胰岛素泵:积累经验,了解你的餐食通常会偏差多少,然后用你的个人系数校正估算值

离线时会发生什么?

没有网络连接时,以下功能可以正常使用:

  • 浏览和筛选历史记录
  • 手动创建和编辑条目
  • 查看统计标签页
  • 导出数据(CSV/JSON)
  • 拍照并加入队列,稍后进行分析

以下功能需要网络连接:

  • AI 分析(照片会被发送给提供商)
  • 自动条形码查询(Open Food Facts)
  • Nightscout 同步(血糖曲线、治疗记录上传)