跳至主要內容

食品溯源與營養成分分析程式的困難

由AI產生的AI眼鏡營養成分分析

我之前寫過自己在做一個分析營養成分的Bot,用最簡單的方式追蹤每日、每週、每月的營養攝取狀況。做著做著,我發現一個問題:如果這個 Bot 要進一步給予建議,會踩到誰該給建議的界線。剛好最近食安新聞不斷,我想起自己多年前放棄的食品溯源專案,於是把原本分析營養成分的 Bot,延伸成一個自己動手做的食品溯源程式。這篇文章想分享的是這個延伸過程裡遇到的三個矛盾:營養分析的黑盒子問題、自己做溯源程式時撞到的資料難題,以及消費者實際採購行為與溯源理想之間的落差。

營養分析的黑盒子

目前市面上以AI分析營養成分的應用,有一塊我一直覺得模糊的區域:使用者無從得知分析依據為何。另外還有一個更根本的問題,使用者吃東西為什麼要先拍照才能吃?拍照分析一餐,本身就是打斷用餐過程,也不符合大部分人吃飯的日常邏輯。唯一真正說得通的應用場景,是把這個功能放進眼鏡裡,讓使用者所見即可分析,不需要額外動作。

即使先不談拍照這件事,營養分析Bot本身也有精準度的問題。脂肪與鈉含量是最難估算的兩項,AI會給出數字,但使用者不知道這個數字的計算依據,實際使用中也會遇到辨識失敗的案例,還需要「教會 AI 學習與記憶」歷次辨識的結果。

動手做自己的食品溯源程式

做到現在,大概能理解當初這類食品溯源計畫為什麼沒有做出大家都想用的成品。核心困難是各方資料庫格式不一致,在沒有 AI 協助的年代,清洗資料、做正規化本身就是一個工程量很大的任務。現在有AI協助,清洗與統一格式的速度快很多,但還是存有資料流失的風險。

台灣食藥署有提供開放資料下載,實際使用後我發現幾個資料本身的漏洞,而這些漏洞不是食藥署一個單位能單獨解決的:

  1. 進口商紀錄無延續管制:曾有食安風險新聞的進口商,依然可以繼續進口食品;
  2. 廠商自主登錄無強制力:部分食品不會主動登錄食藥署平台,登錄與否全靠廠商自願,沒有強制規範;
  3. 品牌名稱相近造成混淆:統一生機、統一生醫、義美生醫、義美生技等大廠的名稱相近,AI在判斷資料時,很難判斷該合併還是分開處理,還需要去工商登記查詢。

相對地,國內較大品牌像聯華、光泉、義美,通常會自建食品溯源網站,並在自家包裝上印刷條碼,消費者掃描條碼就能連結到來源與檢驗結果。這類大品牌的資料完整度高,我做溯源程式時,對於大品牌並建有溯源平台的資料則以品牌自建平台的資料為主,不會再抓下來。

使用行為的矛盾

整個使用流程是拍照或掃描、上傳程式、AI分析、產出結果。但這個流程背後有一個我不斷思考的問題:消費者實際的採購行為,真的支持這套流程嗎?

先看品牌與功效的取捨。消費者在便利商店買一盒無糖豆漿時,通常會先看品牌,還是先看蛋白質含量?還是單純圖方便好喝,或者價格才是第一考量?這決定了溯源資訊在採購當下有沒有機會被看到。

再看溯源行為本身的落差。有些超市會立牌標示馬鈴薯來自台灣哪個產區,或標明與哪位農夫契作,包裝蔬菜也常有標章或條碼可供溯源。但消費者在每一次採購裡,真的會駐足查詢嗎?就算查了,一般消費者讀得懂溯源網站上的檢驗報告嗎?傳統市場裡沒有包裝的食材,又還有哪些方法可以檢測?

最後是網路平台,特別是C2C賣場,更難掌控。還有社群平台如 Instagram、Threads、Facebook 上有不少「食品」廣告,這些食品的製造商可能來自中國,藉由集運方式將商品輸入台灣。相關單位無法管到這一塊。有些食品成分可能危害健康,但消費者無從得知,造成傷害時也無從索賠。

未來可能的應用

我試過各種方式想簡化操作流程,但目前還是無法讓這個程式變得更簡單、更直覺。不過我相信這類應用不久會出現,而且很可能出現在 AI 眼鏡上。針對這個想法,我得到以下資訊:

理論上可行,但要看是哪一種 AI 眼鏡,關鍵差異在於「有沒有開放的相機/開發者 API」。

核心邏輯可以搬過去:bot 現在的分析引擎本來就跟 Telegram 介面是分開的,Telegram 只是「拍照→傳圖片→收到分析結果」這個輸入輸出殼。只要眼鏡那端能把拍到的照片傳到某個後端,理論上就能接上現有的分析流程,不需要重寫辨識/查詢邏輯。

實際卡點在眼鏡本身:像 Ray-Ban Meta 這類消費級 AI 眼鏡目前是封閉生態,Meta AI 本身能辨識畫面內容,但沒有開放給第三方接自訂後端做這種客製化營養分析。少數有開發者 SDK 的眼鏡(例如某些 Android-based/XR 平台的眼鏡)理論上可以做到:使用者說「記錄這餐」或做個手勢觸發拍照 → 照片丟到自建後端 → 跑一樣的分析 → 語音或畫面回饋熱量/營養缺口。即時疊加顯示(像走到食物前直接在鏡片上看到熱量)技術上難度高很多,目前消費級眼鏡幾乎做不到即時準確辨識疊加。

重點是要找到一支開放相機串流/拍照 API 給第三方開發者用的眼鏡。

我讓 AI 做一張圖,模擬 AI 眼鏡看到食品並開始分析的畫面,畫面本身其實令人缺乏食欲。這也讓我重新思,使用者真正需要的,或許不是一張營養成分表,而是分析計算完使用者當日的飲食後,給出可以理解的建議。例如今天使用吃了很多肉類,系統會提示「今天還需要多補充蔬菜哦!」或是發現使用者攝取不足的蛋白質時,會主動提示「今天用餐可以再配些優酪乳、豆漿、牛奶」。這種具體、好懂的建議一定比一張難以解讀的營養成分表更有效,但這正是營養師的專業建議範疇,AI 不該越界代替營養師說這句話。

我的暫時性結論是,這件事真正卡住的不是技術,是誰有資格給建議。工具可以幫我清洗資料、比對條碼、算出熱量缺口,但「你今天該多吃點什麼」這句話,還是該留給營養師說。我會繼續做下去,但下一步要想清楚的,是這個程式該停在哪裡,把界線留給真正的專業。

食品安全的真正意義是「信任」

在製作應用時,我持續思考,消費者的行為與這個程式的意義,最終察覺「食品安全」是個表面議題,真正要探討的是整個供應鏈中,哪個管理環節鬆掉了、讓消費者失去信任,而不是急著課責。

消費者唯一有能力做的是「信任制度」,而不是擔心食品與營養成分,但不當管理、制度缺失造成危害身體健康,卻是所有人來承擔。貨架上的商品,在法令規範下,「原則上應該是安全的」,不需要消費者事後溯源,這才是主管機關應該做到,而不是把推給消費者或是生產者的責任。

留言

此網誌的熱門文章

為什麼我支持《數位中介服務法》草案

在經歷許多次反抗台灣政府所立的網路相關法案後,我其實沒想過除了《數位通傳法》草案外,我還會再支持另一部法律草案,雖然 《數位通傳法》草案還壓在某處,但如果有人讀過《數位通傳法》的草案,再讀這部《數位中介服務法》草案,就會知道這部草案的重要性,而且也可以顯示台灣網路使用者的成熟度,更重要的,這是我第一次看到引入國際網路治理多方利害關係人機制的法律草案,而且是用在正確的地方。 有興趣想知道我在讀法條時的筆記和當下的感想,可以看我這則  Tweet 。這篇不使用逐條讀法條的方式來寫,因為那會讓人昏昏欲睡,我也不去比對歐盟《數位服務法》,因為我在讀《數位服務法》草案時,該草案特別強調是加強歐盟 E-Commerce Directive  ,而不是取代它,而且更多著重在預防盜版、仿冒,保護消費者的法案。所以當有輿論提到參考自《數位服務法》的《數位中介服務法》草案限縮言論自由時,我其實是一頭問號的,但一直到今天我才有時間讀《數位中介服務法》草案,這篇文章出自於我的個人經驗和閱讀法案的心得,與擔任的職務無關。 如果最近注意一下網路的資訊,有幾件事該注意一下: 有許多人在社群平台,如Facebook或是其他網路看到一些廣告,而這些廣告可能是要你支持台灣農產品、台灣製的產品,結果你收到時,上面還寫著簡體字,通常這是所謂的一頁式廣告詐騙,而行政院的消費者保護會在 2019 年時就有新聞稿在警告「 一頁式廣告詐騙多 小心查證保障多 」,之後像公視或是其他單位都有相關的活動在提醒大家小心這類廣告。但目前這些廣告其實多數不易處理,因為不容易取證、保留證據,等到追查到時已經找不到對方了。 有不少親密照片與影片在情侶分手後,被報復性的上傳到情色網站或透過即時通訊傳到親友的帳號裡,或是被洩露個資,遭到公開的霸凌。 之前有一個專題:「 青春煉獄:網路獵騙性私密影像事件簿 」,光是讀完這個專題報導我就覺得受傷。 有人使用 Deep Fake 把台灣名人的臉部照片合成至色情影片再上傳至色情影片平台,今年 7 月才被判刑。 還有許多創作者藉由網路分享作品時,被人盜用,甚至有國外的使用者修改台灣人的作品去參與比賽還獲獎。 有一次打電話問某個部會,如果消費者在國外電子商務平台買東西,但資料被外洩怎麼辦?雖然政府願意協助,但衡量至國外打官司的時間和成本,就會讓人卻步。 有些行為在現實世界裡有法...

[movie]虛偽、傲慢與人性--Dogville

片名:厄夜變奏曲DOGVILLE 導演:拉斯馮提爾Lars von Trier 演員:Nicole Kidman… IMDB 花絮:厄夜的告白(Dogville Confession) 續集:命運變奏曲(Manderlay) 目前桌上放著的,是《在黑暗中漫舞》和《命運變奏曲》,克制著自己不要接著看下去,雖然我覺得看完再寫會比較完整,特別是看完《命運變奏曲》。昨晚已先看了《厄夜變奏曲》的花絮,在拍完這部電影後 Nicole Kidman還是沒能再接下去演《命運變奏曲》。 如果沒看過這部電影的人,不建議再繼續看下去,免得壞了看電影的興緻。 這部電影共分為九幕和一個序,沒有任何的「場景」,像是舞台劇般的在每一幕開始時有旁白,所謂的場景則象徵性的在攝影棚的地上劃出房子的地基、動物;在實體場景上,只有商店有門和展示櫃,看不見的McKay家有片落地窗,醫生有藥櫃,作家有書桌,七個孩子的果農家有張床和黑板…每個實際存在的物品都代表了住在那一「格」的居民的職業和對他們最重要的事物。也許因為沒有了場景,演員的表現反而被突顯了出來,劇情更容易讓人印象深刻。 在「序」這一段裡介紹了Dogville和裡面的人物。在第一幕到第五幕裡,從Grace來到這個貧瘠的村莊,而村長Tom的行為與用意也讓人難以忍受,到此為止,大部份村民看起來是善良的,如同在序中介紹的善良正直。雖說在看電影前已經有人提醒我要小心電影情節的黑暗面,在第六幕開始時也有字幕提醒,但在看到第六幕時就想關掉了。因為從這一幕開始,才開始看到什麼是人性,而從第六幕開始,才是真正的人生。 「傲慢(arrogance)」是最常出現在電影中的字詞,當Grace與Tom相遇時,她對Tom表示她必須自己教育自己,所以必須處罰自己不能進食;在第二幕裡,Grace認為Tom很「傲慢」而傲慢是不對的,一直到最後,第九幕,她到了車上依然與父親爭論「傲慢(arrogant)」。從車上兩個人的爭論裡,名字代表優美、優雅Grace終於顯露了她的本性: The Big Man:…but I, I call them dogs… Grace: The dogs only obey their nature. Why shouldn't we forgive them? 直到最後,她的決定讓整個村子燒光只剩下一隻狗,而她原諒了那隻連肉骨頭也不願施捨給她...

停不下來的更新

一直更新Blog的版型,我必須承認是一件很無聊的事,不過這次除了版型的更動外,連分類和文章內文也做了變動。 先說分類吧!在Blogger叫做Label,不過,Blogger在分類上有一些bugs,只能使用英文,以前這裡的分類大多都是中文分類,結果在link上就是一堆亂七八糟的亂碼,所以我把它改成英文,同時細分一些項目,把出版的文章和一些教學的文章分開來,雖然已經很久沒寫新的,不過既然放上來就做個分類。然而就在新舊label移轉之後,發現中文的label還會存在,而且還會出現莫名奇妙的幽靈數字,Blogger知道這是個bug,不過似乎一直沒有修復的跡象。所以在分類上就出現了如右圖一般的情況,在英文標籤裡會有文章,但是在中文標籤裡是沒有文章出現的,但奇怪的是,有些中文標籤已經不見了,然而在Beauty-Beta這個部落格裡,我也做了分類上的變動,由於以前用英文開頭的Label,所以在label的變動上倒是不用擔心會有這樣的情況。 再來是文章的內容,把以前的文章重新分類,標題前面的一些全形符號或是分類刪掉,除了一些比較特殊的,我會留著,例如壹陸壹,因為在label裡為了統一,我留著原本的E61,但人家的店名是壹陸壹,所以留下文章標題前面的中文分類,另外像是Entertainment項目裡,可能有音樂,可能有電影,就會在前面留下中文分類。 前簡單的CSS和HTML改成現在的XML,這無疑是讓我們再多學些東西,能有時間鑽研當然是好事,可是轉換後,我一直沒有時間去改,當然多半也是因為懶,到現在也是拿別人做好的版型去改配色而已,所以像裡面的設定、安裝的widget和analytics的javascript都要一個一個重新裝,上個星期幾乎每天都弄到天亮才睡,只為了整理這個blog。也因為之前在blog裡放了technorati的分類,所以還要修改以前的文章,把它們加入technorati,還有裡面的語法要更改,所以這個星期甚至下個星期都會一直收到這裡的更新訊息,對於不斷收到訊息干擾的朋友們,在這裡說聲抱歉。 在版面上因為blogger系統在feed接受上的更新,所以還有四個東西沒加進去,分別是最近的文章(Recent Post)、Comments(目前是用別人寫的widget)還有GVO的feed訂閱顯示、Beauty-Beta的訂閱顯示也都還沒放上去。 在Feed訂閱上,以前bl...