:::

不知道怎麼下後設資料?用AI幫你添增索引關鍵字  / Don't Know How to Add Metadata? Use AI to Write Keywords

6月 09, 2025 , , 0 Comments Edit Copy Download

2025-0121-020842.png

我開發了一個家用的倉儲管理系統來記錄家裡物品的收納位置和存量。為了讓我更容易用搜尋找到物品,我使用Google Gemini來解析物品的照片,以此來添增後設資料(metadata),提高它被檢索找到的機會。使用下來意外地好用,但也有些限制。這篇就記錄一下這種用AI識別照片添增物品後設資料的心得吧。

I developed a home inventory management system to track the location and quantity of items in my house. To make searching for items easier, I use Google Gemini to analyze photos of the items, adding metadata to increase their searchability. It's surprisingly effective, but it also has some limitations. This post documents my experience using AI image recognition to enhance item metadata.


物品管理APP / Inventory Management App

image3.png

這各物品管理的APP是我用AppSheet創建的應用程式,只供我們家私人共用,不開放其他人取用。它可以用網頁或AppSheet的APP開啟。

image4.png

AppSheet可以讓我們用關鍵字檢索物品的後設資料。例如我搜尋「剪刀」,可供檢索的後設資料裡面只要有包含「剪刀」兩個字的物品,通通都可以檢索出來。

2025-0121-003203.png

然而大多時候,我們找物品用的名稱,通常都跟記錄在後設資料的名稱不一樣。像上圖的眼鏡,你會怎麼稱呼它呢?我是把它登記為「迷因墨鏡」啦。

image2.png

但對其他人來說可能不是如此。別人可能看眼鏡上的光影像是「像素」,所以用「像素」來檢索。這時候居然能夠找到這個眼鏡,為什麼呢?

image1.png

因為背後AI幫它增加了另一個名稱「像素墨鏡」,因此這樣就能夠順利把它找出來了。太神奇了,AI到底是怎麽做的呢?


系統架構與原理 / System Architecture and Principles

20250101_BLOG_Gemini_.note-crop-cropped.png

上圖是一般使用AppSheet的時候的架構圖。我們使用者用手機的APP、或是電腦的網頁來上傳物品的照片,並在表單填上簡單地敘述。接著AppSheet應用程式會跟Google Sheet連接,把相關資訊存入Google Sheet,檔案則是會擺在Google Sheet旁邊的Google Drive資料夾底下。

但是在這個架構下,我們必須完整輸入描述物品的後設資料,不然搜尋的時候就找不出來。

20250101_BLOG_Gemini_.notae-crop-cropped.png

接下來我們把AI的部分加上去。除了完整個系統架構會變成如下:

  1. 使用者輸入物品照片跟簡單描述。
  2. AppSheet應用程式先把基本資訊保存到Google Sheet中。
  3. AppSheet進入API排隊機制,決定呼叫Gemini的延後時間。
  4. AppSheet將照片跟描述傳送給Gemini呼叫機制。
  5. Gemini呼叫機制將資料重整與打包、設定必要的提示詞後,執行呼叫Gemini API。
  6. Gemini呼叫機制從Gemini取得結果之後,再回傳給AppSheet。
  7. AppSheet將Gemini產生的後設資料保存到Google Sheet。

2025-0121-010651.png

AppSheet的Bots功能能讓我們在資料有所更新的時候執行RESTful呼叫。呼叫時可以將AppSheet的資料,甚至是照片檔案,用POST的方式傳送到Apps Script。

然而,實際上我們不能直接用AppSheet呼叫Gemini的RESTful API。這是因為AppSheet會將符合需要呼叫的RESTful API的資料,全部同時發出請求。如果我更新10筆資料,那麼在跟App Sheet同步的時候,App Sheet會同時發出10筆請求。如果我們直接將這些請求送給Gemini,那一下子就會因為短期內過多請求而觸發Rate Limitation而被停用。

2025-0121-010846.png

因此,我在AppSheet真正呼叫Gemini的開頭加上了一個API排隊機制跟延遲執行的功能。如果現在請求很多,那AppSheet會收到一個排隊號碼,並依照排隊號碼的數字延後執行的時間。App Sheet的延遲最多可以延後到30天,之後再執行後續的動作。在記錄資料的當下,我並沒有急著需要檢索的情況,所以可以讓App Sheet延後詢問Gemini的請求。

2025-0121-011303.png

API排隊機制是用Google Sheet跟Apps Script撰寫而成,本身也可以用RESTful API的形式呼叫。

2025-0121-011447.png

後面請Gemini分析圖片跟組成提示詞的部分,也是使用Apps Script撰寫。其中呼叫Gemini的方式可以用Apps Script內建的UrlFetchApp來進行:

const url = apiUrl +"?key=" + key
let result =  UrlFetchApp.fetch(url,options)

options參數必須包含提示詞跟圖片的Base64資訊,構成如下:

var headers = {
    "Content-Type": "application/json"
};

var requestBody = {
    "contents": [
        {
            "parts": [
                {
                    "text": getSystemPrompt(title)
                },
                {    
                    'inline_data':{
                        'mime_type': 'image/jpeg',
                        'data': base64Image
                    }
                }
            ]
        }
    ]
};
var options = {
    "method": "POST",
    "headers": headers,
    "payload": JSON.stringify(requestBody)
};

是說上面程式碼的部分我是用inline_data來上傳圖片資訊,不過現在似乎還有GeminiWithFiles的功能可以使用。未來有需要再來用吧。

在getSystemPrompt(title)裡,我除了輸入物品的基本敘述之外,也請Gemini以商店老闆的角度,描述商品品項以及分類。提示詞如下:

`你網路購物平臺的商品管理者。你的工作是根據圖片來填寫三個欄位:

1. 商品名稱:為這張圖片訂定一個商品名稱。${titleDescription}如果有實際上的商品,請用此商品作為名稱。
2. 品項:您描述它的品項。例如顏色、材質、大小等。如果有多種品項,請用「, 」隔開。
3. 分類:列出架位分類名稱。如果有上層與下層分類,中間請用「/」隔開。

最後用JSON格式輸出。

舉例:
\`\`\`\`

  "商品名稱": "可微波矽膠摺疊保鮮盒",
  "品項": "綠色, 中型",
  "分類": "居家生活/餐廚用具"
}
\`\`\`\`

只要給我「商品名稱」、「品項」、「分類」訊息即可,不要列出其他事項。請用繁體中文或是英文描述。請使用臺灣人習慣的用詞。

根據以下這張圖片。請列出「商品名稱」、「品項」、「分類」。`

不過儘管要求Gemini產生JSON格式,但它有時候仍不會產生完整的JSON。Apps Script有部分程式碼是在修正JSON格式錯誤的情況。


成果展示 / Results Demonstration

接下來就讓我們來看看Gemini看待圖片會給出什麼建議吧。

能夠識別圖片的文字 / Recognizing Text in Photographs

2025-0121-012504.png

我給Gemini的資訊是「口紅膠」,而Gemini產生的建議是:

商品名稱: Pentel 膠水
品項: 旋轉式, 固體膠
分類: 文具/膠類

口紅膠上的「Pentel」文字被正確識別出來了。Gemini好厲害。

2025-0121-013050.png

我給Gemini的資訊是「網片連接器」,而Gemini產生的建議是:

商品名稱: 鐵網片專用連接器
品項: 白色, 8入
分類: 居家生活/收納用品

它有看出包裝上的「8個」資訊。雖然這對搜尋比較沒有幫助就是了。

2025-0121-013336.png

我給Gemini的資訊是「電源延長線 旋轉開關 2P母*4 磁吸」,而Gemini產生的建議是:

商品名稱: eleoon 電源延長線
品項: 白色, 4孔
分類: 居家生活/3C家電/電源延長線

其實延長線上面的文字是「Elevon」,Gemini識別錯誤了,可惜。

靠照片跟物品描述產生的正確名稱 / The Correct Name Generated Based on Photos and Item Descriptions

2025-0121-013602.png

你知道上面這個東西叫做什麼名字嗎?

我給Gemini的資訊是「水管轉接頭 四分外 快速內」,而Gemini產生的建議是:

商品名稱: 快接式水管接頭
品項: 白色
分類: 居家生活/五金材料/水管/水管接頭

沒有錯,正確名稱是「快接式水管接頭」。

2025-0121-013722.png

這包在塑膠袋裡面的一堆東西是什麼呢?

我給Gemini的資訊是「浴簾 勾」,而Gemini產生的建議是:

商品名稱: 浴簾掛環
品項: 白色
分類: 居家生活/浴室用品

對,其實它不是「勾」,應該說「掛環」才對。Gemini老師我錯了。

2025-0121-014015.png

這個...要怎麼稱呼它呢?

我給Gemini的資訊是「掛籃 網格」,而Gemini產生的建議是:

商品名稱: 網狀晾衣袋
品項: 綠色
分類: 居家生活

哦哦對,網狀!而且Gemini也幫我把綠色標示上去了。

描述錯誤的例子 / Examples of Misrepresentation

當然,Gemini看走眼的情況還是很常見。讓我們來看看那些東西會讓Gemini看錯。

2025-0121-013920.png

我給Gemini的資訊是「旋轉衣架」,而Gemini產生的建議是:

商品名稱: 圍巾環形掛架
品項: 不鏽鋼
分類: 居家生活/收納整理

它其實是拿來掛被子或大件衣物的,不是拿來掛圍巾的喔。

2025-0121-014233.png

我給Gemini的資訊是「SIGG瑞士西格隨身瓶 使用說明書」,而Gemini產生的建議是:

商品名稱: 瑞士國鐵局 使用說明書
品項: 紙質
分類: 交通工具/週邊

跟瑞士國鐵局好像差的有點多,真是令人哭笑不得。

2025-0121-014451.png

我給Gemini的資訊是「洗鼻器 舊型」,而Gemini產生的建議是:

商品名稱: 塑膠水管接頭
品項: 綠色, 多種尺寸
分類: 居家生活/五金材料/水管管件

說是塑膠水管...好像也沒錯啦。但我都跟Gemini說這是洗鼻器了。

2025-0121-014653.png

我給Gemini的資訊是「電源延長線 甜甜圈」,而Gemini產生的建議是:

商品名稱: 電話線捲線器
品項: 白色
分類: 3C家電/電話周邊

就說是電源延長線了呀。

個人資訊拒絕識別 / Refusal to Identify Personal Information

最後我們要注意的是,Gemini會拒絕識別可能含有個人資訊的照片。

unnamed.jpg

這個藥袋上包含了病狀跟醫師的名字,被Gemini拒絕識別。

2025-0121-015128.png

這是一個普通的痠痛乳膏,但Gemini對於這種藥品類的照片,大多也都會拒絕識別。

2025-0121-015044.png

這是一把熱溶膠槍,但是Gemini似乎覺得這是危險物品,因此也拒絕識別。

Gemini拒絕識別的時候,API會傳回錯誤資訊,但它只會跟你說「SAFETY」的原因拒絕分析,而不會明確說明原因。我在上面的Gemini呼叫機制有部分的程式碼也在處理這種情況。


結語 / Conclusion

2025-0121-015432.png

這篇描述了我是如何使用Gemini來添增描述家裡物品的後設資料。Gemini為部分物品添增了有用的額外資訊,這能讓搜尋時更容易被找到。但也有物品Gemini會描述錯誤,而包含個人資訊的物品更是會被Gemini拒絕。

儘管如此,有了Gemini添增的後設資料,它依然為我整理物品帶來極大的便利。舉例來說,我通常不會在手動輸入時描述物品的顏色。但我要求Gemini分析的品項裡,顏色是很常出現的分析結果。因此如果我不確定這東西要怎麼搜尋的話,搜尋顏色可能會是最容易找到的關鍵字。

是說一開始我在Gemini的提示詞加上品項跟分類的分析,其實是想要用在AppSheet裡面的其他欄位。AppSheet可以讓物品添增標籤跟分類,讓我們能夠更仔細地組織物品的瀏覽結構。但後來我發現還是直接用搜尋就好了。家裡的物品以收納地點作為分類,這樣就很夠用了。加上其他的分類架構只會添增整理物品的困擾而已。

2025-0121-020235.png

當然,你也可以用類似的提示詞,開啟Gemini直接去問他。不過像是這篇這樣把Gemini整合到日常工作的流程中,讓AI協助我們處理資訊更有效率,這才是我認為理想中的AI使用形式。


這篇關於使用AI添增後設資料的做法就到這裡為止了。文章最後要來問大家的是,你覺得Gemini描述物品的成果如何呢?

  • 1. 很不錯!我只要輸入一點文字,它自己就可以幫我補上很多資訊耶!
  • 2. 還好吧。Gemini添增的大部分資訊都跟我描述的一樣,幫助在哪裡?
  • 3. 不可採信。Gemini居然給我錯誤的描述,未來我不小心因此搞錯了怎麼辦?誰負責?
  • 4. 還可以更好吧?提示詞好像還有很多改進的空間?
  • 5. 其他:歡迎在下面留言,分享你的看法吧!