跳到主要內容

用 NotebookLM AI 打造 Pikmin 蘑菇重生計算機

有玩《Pikmin Bloom》的玩家都知道,遊戲中的大蘑菇(例如「一般 神秘蘑菇」或「一般 紅色蘑菇」)被推毀後需要一段時間才會重生 。為了精準掌握下一次搶菇的時機,我決定透過 NotebookLM 的協助, 動手寫一個小工具:只要上傳包含挑戰剩餘時間(如「剩下20 分 47 秒」或「剩下1 小時 1 分 58 秒」)的遊戲截圖 ,系統就能自動推算出精確到秒的重生時間。 一開始我只上傳了一張 Pikmin 打菇的截圖, AI 就根據我的要求自動根據左上角的系統時間與圖中剩餘時間等資訊, 告訴我要安裝相關 OCR 套件, 並開發出第一個版本的程式, 這個程式已經大致完成了我的需求, 但離實用還有一小段距離, 所以在持續改進的開發過程中,我遇到了幾個有趣且經典的技術挑戰(對於這些影線處理, OCR, 圖片 EXIF info 等知識, 我是沒有太多的經驗, 但在 AI 一步一步的引導下完成了我的需求),在此與大家分享: 



一、 影像預處理:拯救低迷的 OCR 辨識率 一開始,我直接將遊戲截圖丟給 Tesseract OCR 引擎,但辨識結果慘不忍睹。原因是遊戲畫面背景太過複雜(充滿草地、花朵與蘑菇發光特效) ,且文字是白色的。 為了解決這個問題,AI 引入了 OpenCV 進行影像預處理。先將圖片精準裁切,只保留左下角的血條與時間區域,接著轉為灰階並放大兩倍,最後使用二值化(經過測試閾值 200 得到不錯的效果)並反轉顏色。這個步驟成功將複雜的畫面轉換成 Tesseract 最容易辨識的「白底黑字」,大幅提升了準確率, 但在做更多的不同截圖的測試, 閾值 200 並不能成功轉換成 OCR 能辨識的黑白圖, 因此我請 AI 調整成以 200 為基礎, 如果辨識失敗, 在調整成 210, 190, 220, 180 如果都失敗才判定無法辨識(下圖是調整後的圖形)。 


二、 對抗 OCR 的奇妙誤判與高容錯 Regex 解決了影像問題,接著是文字解析。遊戲字體中的無襯線數字「1」非常容易被誤判為英文字母 l、I、直線 |,甚至在辨識「1 小時」時被讀成 ]小時 。 為此,我設計了一套高容錯率的正規表達式 (Regex):(?:([0-9lIi|\]\[]+)\s*小?\s*時\s*)?(?:([0-9lIi|\]\[]+)\s*分\s*)?([0-9lIi|\]\[]+)\s*秒。它將「小時」與「分」設為可選 (Optional),並搭配一個自訂的清理函式,把所有形狀像「1」的干擾字元強制替換回數字 1,完美避開了 OCR 的各種奇妙誤判, 此外就算是二值化轉換後的圖, 人可以辨識, 但 OCR 還是常常辨識失敗, 我詢問 NotebookLM 後, AI 給了幾個非常有用的建議, 包含: 修改 PSM 參數 --psm 11、移除英文語言包(因為我的皮克敏是繁體中文版, 讓 OCR 專注繁體中文的辨識)、改 OCR Engine Mode 為 --oem 1 (用人工神經網路引擎)與設定 DPI 參數為 --dpi 300。 經過這些修改後, 果然大幅度的提高二值化轉換後圖的辨識成功率。

三、 尋找真相(從 Metadata 挖掘「截圖的精準時間」 計算重生時間需要一個基準點):如同我前面提到, AI 一開始根據左上角的時間作爲現在時間的基準來計算, 菇菇摧毀時間與菇菇重生時間, 但 iphone 螢幕的顯示時間並不含秒數, 對於搶菇實在沒有太多的幫助, 因此我要求 AI 改成用圖片的產生時間當做現在時間。最初 AI 使用前端 JavaScript 抓取檔案的最後修改時間,但這在圖檔經過通訊軟體傳輸或網頁上傳時往往會失真。 為了追求極致準確,AI 改用 Pillow (PIL) 套件深入挖掘圖檔的 Metadata。程式會優先讀取圖片底層的 EXIF 標籤(如 36867 DateTimeOriginal),或是 iOS 截圖特有的 PNG tEXt chunk(Creation Time)。如果這些資訊不幸遺失,才會退回使用前端傳遞的修改時間作為保底。 

四、使用 NotebookLM 開發心得:

1. 在沒有相關背景知識(影像處理、OCR 、圖片資訊等) 僅使用一個下午的時間, 就完成了約四個版本解決了大部分開發過程所遇到的問題, 隔天又根據新的想法(自動調整二階化參數) 又花了約半個小時就完成目前版本, 中間花最多的時間是我測試所花的時間, AI 開發產生程式的速度非常的迅速。

2. 開發過程, AI 主動幫我加入許多實用的功能, 例如: 給我產生處理過後的二階化後的圖片的選項, 讓我可以更快知道後續 OCR 可能遇到的問題、在網頁上顯示 OCR 後, 系統判斷的結果(可參考上圖)、在沒有給太多資訊下(僅上傳皮克敏打蘑菇時的截圖), 從網路上找到皮克敏的背景知識協助開發。 

 3. 本文的主架構, 是根據我與 NotebookLM 的對話開發過程, 我請 AI 幫我總結寫成此文的主匡架後再修改了一些內容完成。

最終,我使用 Flask 將這整套邏輯包裝成了一個輕量級的 Web App。這個專案不僅解決了遊戲痛點,更是一趟結合了 OpenCV 影像處理、Regex 除錯與檔案 Metadata 解析的有趣實踐。科技,果然就該用在這些讓生活(與遊戲)更美好的小地方!

未來我還想增加一些功能, 目前想到的是判斷出下次重生菇的時間後, 可以一鍵加入網頁倒數時間, 更方便打菇。

如果你對我的程式有興趣, 可以參考:
https://github.com/wkliu/Pikmin_Mashroom_Calculator

留言

這個網誌中的熱門文章

用 Antigravity CLI 將截圖中的表格轉換成可編輯的 xlsx

下午參加了一個證券公司辦的線上講座, 用我很熟悉的 Webex, 主題是: "AI算力引路、應用爆發台股5萬點財富超前部署!", 講座內容很豐富, 講者也分享了幾個券商研究部門的分析資料, 如下圖: 我看了想之後再研究分析一下, 當下立刻截圖, 想說之後再手動鍵入 google sheets (是的我沒花錢買 Microsoft Excel), 後續講者又分享的好幾個不同的表格, 我也儘可能的都截圖下來。 會議結束後, 看到好多個截圖, 裡面有密密麻麻的資料, 突然想到如果用 AI 來幫我轉成可編輯的 google sheets 應該會很快完成, 順便也試試 AI 的圖形辨識能力。 因此我就用了 Antigravity CLI 下了一句 prompt: " 請幫我把此目錄下的 PNG 檔案內容的表格轉換成 google sheets 的格式, 每個 PNG 產生一個對應的 google sheets. " 果然在一連串的 yes confirm 後, 就幫我都轉好了, 同時他還幫我寫好了一支程式。 Antigravity 不是去呼叫 Gemini api 幫我把一個一個的截圖(PNG格式)轉成 google sheets 的檔案, 而是幫我寫的一支程式, 並且幫我把他們輸出成為 xlsx 與 csv 格式。 比較特別的是我原本以為這支程式是先用 OCR library 去辨識我給的截圖, 但我去看了程式, 原來他已經將辨識後的文字直接放在程式中的陣列中, 然後用 library 轉成我要的格式, 所以有可能是圖形辨識的部分, 還是用雲端的 Gemini, 得到的資料才用地端的程式輸出成我要的格式。 輸出的效果非常的不錯, 我簡單的比對一下, 內容都正確, 以下是輸出的結果: 全覽圖轉換的效果也很不錯: 下次你如果也有大量的會議截圖, 你也可以利用 AI 來幫你轉成你方便處理的格式, 沒有一定要用 Antigravity CLI, OpenAI, Anthorpic 也都有類似的工具可以幫你完成。

用 Antigravity CLI 開發一個監控台積電台股與美股的儀表板

 前言: 偶然在 Youtube 上看到一個即時監控台積電(TSMC)的頻道, 我立刻截圖, 如下圖: 想利用 Antigravity CLI 做一個類似的功能, 因此把這張截圖請 agy cli 幫忙完成, 果然不到幾分鐘就完成了。 後來, 我又加了幾個功能: 1. 新增了一個 Competitor Pulse 區塊, 加入美股的 Intel 與韓股的 Samsung. 2. 新增了美股或台股交易期間, 每三分鐘更新即時行情(agy cli 自動幫我在非交易期間, 每五分鐘更新一次。) 3. 原本只有顯示台股與美股交易時間的區塊, 我請 agy cli 幫我放台股的大盤指數與櫃買指數, 與美股的紐約證券指數, Nasdaq 指數及費城半導體指數。 結果如下圖: 整個過程花了不到三小時就完成了, Vibe coding 實在太厲害了。 我也請 agy cli 根據這次的開發幫我寫一個針對有 python 程式設計者寫一個 Blog, 結果如下: # 🚀 從零打造「台積電 ADR 跨國套利監控儀表板」:Python 實戰與大盤指數 API 踩坑記 大家好!身為一個關注台股與美股的投資人/開發者,你是否曾想過即時監控 **台積電(2330.TW)** 與其在美股發行的 **TSMC ADR(TSM)** 之間的折溢價(跨國套利空間)? 今天這篇文章將帶領大家使用 Python,從零開始打造一個 **極具科技感、支援交易時間與非交易時間雙模式更新、並整合美台關鍵大盤指數** 的網頁儀表板。 這篇文章特別適合 **具備基本 Python 開發經驗** ,想嘗試金融 API 串接、自動化背景排程,或是對前端 CSS 排版感興趣的朋友! --- ## 💡 為什麼要監控 TSMC ADR 折溢價? 台積電(2330)普通股在台灣上市,而 TSM ADR 則在美國紐約證交所(NYSE)交易。兩者有著 **1 單位 ADR = 5 股普通股** 的固定換算比例。 由於兩地交易時間不同,加上匯率波動,美股 ADR 的價格換算回台幣後,往往與台股有著數個百分點的「折溢價差」(通常 ADR 會有溢價)。這個價差往往是隔天台股開盤時的重要指標! 我們的公式非常簡單: 1. **ADR 折算台幣價** = $ \ frac { \ text {ADR 收盤價 (USD)}...