TechMoon 科技月球
WordPress、SEO 與 AI 工具實測指南
TechMoon 科技月球
WordPress、SEO 與 AI 工具實測指南

OpenHealth 是開源 AI 健康資料助手,把健檢報告與血液檢驗解析成結構化資料,再讓 AI 答覆你的健康提問。實測發現三個入口資料命運大不同:自架版資料留在本機但要先補安全預設,主站報告落在公開雲端儲存,免帳號的 Clinic 門診站更把 727 筆含出生年月日的諮詢紀錄攤在任何人面前。
用 AI 摘要這篇文章:
健檢報告拿到的時候是一本 PDF,血液檢驗單是一張照片,身高體重散在不同 App 裡,想問 AI「這幾年的數字到底說了什麼」,它卻什麼都不記得。OpenHealth 就是衝著這個痛點做的開源工具:把這些資料收進一個資料庫,解析成結構化檔案,再讓大型語言模型拿著你的資料答覆你的問題。專案在 GitHub 上有 3,954 顆星、採 AGPL-3.0 授權,2025 年初上架。
結論先講。OpenHealth 現在其實有三個入口,而三個入口的資料命運完全不同。自己用 Docker 自架的版本,資料確實只待在你自己的機器上,這條路值得走,但出廠預設留了幾個安全洞要自己補;官方主站要註冊帳號,而且從原始碼看,你上傳的報告檔案會落到標成公開的雲端儲存空間;至於免帳號的 Clinic 門診站,方便是真的,代價是你的症狀描述與出生年月日會進一份任何人都能翻閱的諮詢清單,我打開的時候上面有 727 筆。
先把它的工作機制講清楚,後面的判斷才有力道。
OpenHealth 支援的資料來源有五類:血液檢驗結果、健檢報告、個人體格資料、家族病史與目前症狀。上傳 PDF 或圖片後,系統在伺服器端做解析:文件的文字抽取,自架版走隨附的 docling 容器,雲端部署改呼叫 Upstage 的文件辨識服務;圖片則可以選擇交給視覺模型辨識,把檢驗項目名稱與數值抽成結構化資料存進資料庫。之後你開一個聊天室,模型便拿這批結構化資料當上下文,答覆你關於自己健康的提問。
解析這步比看上去講究。出廠的解析提示詞要求模型同時讀文件文字與報告圖片,兩邊交叉核對:文字抽出現亂碼或格式錯亂時以圖片為準,圖片看不清時以文字為準;血壓這種多數值項目要拆成收縮壓與舒張壓分開存放;日期統一成年月日格式;參考範圍與頁碼不得混進檢驗值。也就是說,它賣的「智慧解析」本體是一套寫得頗仔細的提示詞工程,成敗取決於你選的解析模型強不強,這點對照它的星數與包裝,算是務實的設計。
模型這層是自帶金鑰的設計。出廠預設的供應商有 OpenAI、Anthropic、Google 與 Ollama 四家,前三者是雲端 API,Ollama 則讓你在本機跑開源模型。隱私等級因此取決於你選哪條模型路線,工具本身並不自動幫你選。這套設計與 writing-helper 這類自帶金鑰的寫作工作台、ChatWise 這種自帶金鑰的桌機聊天用戶端 是同一個思路:工具開源、模型自選、金鑰自己管。
這個專案的出身也值得一提。組織倉庫裡另有一個小型的 Flask 服務,是當年為 ChatGPT 的 GPT 動作做的後端,功能是讓 GPT 讀寫你的健康紀錄與健身課表,可以看出專案最早是從聊天機器人外掛起家,後來才長成完整的平台。主要倉庫累積 275 次提交、九位貢獻者、程式語言幾乎全是 TypeScript,團隊在 README 掛了 Discord 社群、Reddit 討論版,甚至一個可以直接預約會議的行事曆連結,溝通大門開得相當大。

架構上要特別注意一件事:它不是純瀏覽器工具,而是完整的伺服器應用。一套 docker compose 會起三個容器,Postgres 資料庫、docling 解析服務、Next.js 應用本體,使用者用帳號密碼註冊登入,健檢資料與聊天紀錄都存在資料庫裡。docling 是 IBM 團隊開源的文件解析專案,健檢 PDF 的文字抽取就交給它。換句話說,「自架」的意思是這一整套跑在你自己的機器上,而不是「處理只發生在瀏覽器裡」。這個區別在後面談主站時會再出現。
官方在主站之外另開了一個 Clinic 門診站,標語是與 AI 醫生問診,不必排隊、免費、全神貫注。實際打開,問診流程是一份十三題的問卷,從症狀描述、出生日期、性別、身高體重一路問到用藥與過敏,完全不需要註冊帳號,填完就由 AI 醫生生成一份帶主訴、症狀、診斷與建議的諮詢紀錄。題目設計看得出美國醫療問診單的影子,例如問卷裡有族群背景題,選項是美國人口普查那套分類,對台灣使用者來說會有點錯置感,但整份問卷的症狀、持續時間、嚴重度、用藥史結構是通的。體驗確實順,順到讓人忘了問一件事:這些紀錄後來去了哪。

答案就在同一個網站的 My History 頁。用一條不帶任何登入狀態的連線抓這一頁,伺服器直接送出完整的諮詢歷史:727 筆紀錄,每一筆都有主訴、症狀描述、出生年月日、性別、身高體重,以及 AI 給出的診斷段與建議。時間軸從 2025 年 3 月 10 日一路排到 2026 年 9 月 23 日,最舊幾筆集中在同一個小時內、格式像上線前的測試,而網頁存檔服務第一次收錄這個站也是同一天,也就是說,網站開站以來的完整諮詢史都在這份任何人可見的清單裡,而非近期一批或示範資料。內容看得出多半是真實使用者的輸入,有人拿家裡的狗做測試,主訴是狗頭痛,生日欄填小狗的出生日,身高 20 公分、體重 15 公斤,這筆紀錄就這樣和人的病況排在一起。對照首頁那個 1,031 人以上受助的計數,實際列出的紀錄數與之同一量級,數字對得上,攤開的程度卻是行銷頁不會告訴你的。
公平地說,這也可能是刻意的設計選擇。首頁寫著由病人社群共建,站方或許把公開的諮詢史當成某種社群展示。但出生年月日加上症狀描述的組合,對健康資料來說是重量級的個人資訊,把它放進任何人都能下載的清單,與產品另一端「健康是你自己的責任」的隱私敘事,中間有一段不小的落差。Clinic 站本身沒有公開原始碼,組織倉庫裡找不到對應的程式,所以它的內部實作無法對照,只能就行為層描述。
順帶一提,這個門診站的行銷數字也停在了專案的黃金期。首頁宣稱 30 位以上 AI 醫生,實際名單頁數出來是 25 位;宣稱 3.1k 以上 GitHub 星數,專案實際已經來到 3,954 顆;1,031 人以上受助於是自報數字。頁面上多位醫師人設的頭像圖已經失效,露出替代文字,整站還掛著 Amplitude 統計服務。這些細節單獨看都小事,疊起來就是一幅缺乏維護的樣貌。
OpenHealth 最有爭議的設計,藏在一個看起來最無害的檔案裡。
打開倉庫的出廠設定檔,預設的助理模式是一整排醫師角色:開頭就是你是一位世界級醫師,採系統化、以病人為中心的方法診斷與治療健康問題,另外還有家醫科、骨科、內科,以及一個直接叫最佳醫師的模式。Clinic 站的 25 位人設更熱鬧,有以整合醫學聞名的 Andrew Weil 為名的專家、功能性醫學的 Mark Hyman 專家,部分人設帶評分與評價數,其中腫瘤科人設掛著 1.0 分與一則評價。

把提示詞寫成醫師角色,與把模型變成醫師,是兩件事。公開諮詢紀錄也印證了這點:727 筆裡有近三百筆的診斷欄寫著資訊不足,無法給出特定診斷,建議繼續觀察。模型的實際工作是把你的症狀問卷整理成摘要與就醫建議,這對慢病管理的資料整理有幫助,但它不是醫療器材,沒有醫師資格,用藥、劑量、藥物交互作用與急症處置都不該交給它,這條線與我們之前整理 AI 醫師問診工具 時畫的是同一條。站方自己在每頁底部寫的免責聲明倒是誠實:AI 會犯錯,別盲信,緊急情況請打當地急救電話。這段話與世界級醫師的包裝擺在一起,讀者自己要知道聽哪一個。
這條邊界也是挑這類工具的核心判準:資料整理、趨勢觀察、看診前先備好的問題清單,是可以交給 AI 的部分;診斷與治療決策,永遠是人的範圍。
再看病源資料最完整的主站。開啟首頁會被直接導向登入頁,要註冊帳號才能使用,帳號就是一組帳號密碼,沒有接第三方登入。這點在首頁是透明的,值得停下來看的,是登入之後資料的去向,而這要翻原始碼才有答案。
主站是這套開源程式碼的雲端部署(README 自己把主站標為完整平台入口),而倉庫裡的雲端部署分支處理上傳檔案的方式值得每個使用者知道:健檢 PDF 與報告圖片上傳後,檔案以公開存取屬性寫入雲端儲存空間(檔名取自檔案內容的雜湊值再附加隨機後綴),拿到連結的人不需要登入就能下載。結構化後的檢驗數值進站方資料庫,原始檔留在儲存空間。文件解析也是同一個方向:雲端部署的解析走 Upstage 的文件辨識 API,健檢 PDF 的內容會交給這家第三方雲端服務;把解析留在本機的 docling 選項,只有自架版才有。
模型金鑰的處理也值得一個註腳。你填入的各家 API 金鑰會以 AES 加密存在站方資料庫,加密用的金鑰在站方伺服器上,這是合理的設計;但供應商清單端點會把解密後的金鑰原封交給瀏覽器,對填過金鑰的人來說,暴露面比「存在站方」四個字聽起來更大。另有一件對多數人更實際的事:主站聊天用的是站方自己的模型金鑰,自帶金鑰主要在自架場景派上用場。
統計與對話也同理。雲端版本的統計服務是開啟的,帶自動事件捕捉與使用者識別碼;對話要送模型,模型若是雲端 API,內容自然也出機。這不是說主站偷做什麼,而是說它的隱私樣貌與自架版完全不同。資料在你自己的機器、在站方的資料庫、在模型商的伺服器,是三種不同的信任假設,選入口之前先想清楚自己接受哪一種。
自架版是三個入口裡唯一能讓資料不出家門的選擇,也是我認為值得用的那一個。照 README 的三行指令把容器拉起來,瀏覽器打開本機的 3000 埠就是完整的介面:註冊一個自己的帳號、上傳報告、開聊天室,介面與操作流程和主站同一套程式,只是這台機器是你自己的,資料要往哪去從此由你決定。上傳的原始檔落在應用程式掛載的資料卷,結構化資料與聊天紀錄進本機的 Postgres,沒有任何一站往外送,前提是你接受它的出廠預設有幾處必須自己動手。
最短的安裝路徑上就有一個坑。教學讓你把範本環境檔複製成設定檔直接啟動,而範本檔裡寫死了一把登入憑證密鑰與一把資料加密金鑰。加密金鑰的用途是加密儲存你填入的模型 API 金鑰,用公開範本裡那把等於用全世界都看得到的鎖。文件後段有教怎麼換,指令也給了,一行亂數產生器就能生出新金鑰,但最短路徑不會帶你經過那一段。
路由的鑑權覆蓋是更實際的問題。逐檔讀應用程式碼會發現,上傳檔案的下載路由沒有登入檢查,任何人知道檔名格式就能取檔;個別健檢資料的讀取、修改、刪除端點同樣缺檢查。這件事不是只有我看到,2026 年 5 月底有人提交了一份修補,把補上驗證與擁有權檢查的程式碼寫好送進倉庫,四個月過去,那份修補沒有被合併,也沒有任何一位維護者留言。聊天訊息的讀取端點也是同樣的寫法。這對純本機使用的影響有限,但你若打算把自架實例暴露到網路,就等於把健檢資料端點裸放。
還有一件功課要自己做:官方文件沒有教你加反向代理與驗證層,這一步得自己來。
把這幾件事補完,自架版的三層都乾淨:資料庫在本機、解析容器在本機、模型走 Ollama 也在本機,統計服務在沒填統計金鑰的情況下連初始化都不會發生。想連視覺解析都留在本機,把解析器選成 Ollama 的視覺模型即可,文件也提醒了 Mac 上容器要指向本機模型服務的特殊寫法。這是整套產品裡唯一配得上隱私承諾的組合,跑起來之後,健檢報告從上傳、解析到提問,全程不出你的區域網路。
最後一個該影響你決策的事實是時間。
主要分支的最後一次功能提交停在 2025 年 3 月 17 日,之後唯一的一次動作是 2026 年 1 月併入一枚 React 安全漏洞修補,版本發行停在 2025 年 2 月的 v0.2.0。那次修補本身也是一個訊號:會動的只有被動的安全修補,主動的功能開發與問題處理都停了。問題追蹤區自那之後基本都是社群單向留言:Windows 容器安裝失敗的通報、語言檔貢獻、安全修補,多數掛著零答覆,連前面提到那份附完整修法的鑑權修補也一樣。Clinic 站頭像失效、行銷星數停在凍結前的 3.1k,都是同一件事的側面。
對使用者的意義很直接:它能用,但別期待修洞與新功能的節奏。自架的好處是版本凍結也凍得住風險,你跑的就是那一份程式碼,不會半夜被改;代價是上面那些安全洞,等官方修等不到,要自己補或自己繞。
介面語言方面,它提供十種語言,中文只有簡體版,沒有繁體中文,台灣使用者要嘛接受簡體介面,要嘛改用英文介面。
最後把問題拉開頭的地方:要不要把健檢報告交給 OpenHealth。
願意動手的人,自架是唯一推薦的路線:整套跑在自己機器上,模型走本機,換掉範本金鑰、補上路由鑑權、不直接暴露公網,它就是目前少見的把健康資料整理這件事做對方向的開源作品,搭配 Open MedKit 那種家庭藥箱管理或 Wellally 那類個人健康紀錄的自架專案,可以把一家人的健康資料都收在自己手裡。只想快速體驗問診流程的人,Clinic 站可以用,但只放無關緊要的測試內容,永遠假設你填的每個字都會被陌生人看到,出生年月日這種欄位尤其別填真的。主站介於兩者之間,功能最完整,代價是帳號、報告進雲端儲存與統計服務,交出去之前想清楚那份信任。
至於不該用的情況,也一句話講完:需要診斷、用藥調整或急症處置的時候,對象是醫療院所,這些從來不是 AI 助手的範圍。OpenHealth 的價值在把散落的數字收攏、把你該問醫生的問題先整理好,這件事它做得不錯,前提是,你先替自己的資料選對了入口。