iT邦幫忙

2026 iThome 鐵人賽

DAY 2
0
Build on Google AI

給藥袋裝一張嘴:30 天用 Android 與 Google VLM 實作高齡語音用藥助手系列 第 2

Day 02|別讓長輩猜藥吃!高齡語音用藥助手的雙端系統架構設計

  • 分享至 

  • xImage
  •  

✏️【本日實作紀錄:系統架構設計與數據流繪製】

今天完成系統總體架構圖繪製與資料流規劃。前端使用 LINE 官方帳號,由長輩與家屬直接互動,搭配 Web 儀表板提供視覺化追蹤;Python 後端則負責 VLM 影像推理、gTTS 語音生成與 SQLite 資料庫管理。

一、 前言:為什麼選擇 LINE Bot 作為前端互動體驗?

昨天確定了「給藥袋裝一張嘴」的核心理念,利用 Google VLM 的多模態理解能力替長輩解讀藥袋資訊。

在針對高齡使用者的產品設計中,「降低學習成本」是成功的關鍵。如果要求長輩另外下載並學習操作一套新的 App,往往會因為介面複雜而放棄使用。因此選擇 LINE 官方帳號作為前端體驗層,這是大家日常最熟悉的工具:

  • 長輩端:只要像平時聊天一樣傳送藥袋照片,就能直接收聽白話語音,並回覆「已吃藥」完成打卡。
  • 家屬端:能即時收到服藥通知推播,並透過 Web 儀表板掌握長輩的歷史用藥歷程。

二、 系統總體架構圖 (System Architecture)

系統分為三層:LINE / Web 體驗層、Python Flask 邏輯運算層與 External Cloud Services 雲端服務層。

+-----------------------------------------------------------------+ 
|                   [ LINE App & Web 前端體驗層 ]                   |
|  - LINE 官方帳號對話介面 (長輩 / 家屬互動首選,零學習門檻)              |
|  - 拍照 / 圖片傳送 (藥袋照片上傳)                                    |
|  - 語音檔播放 (收聽 gTTS 生成白話語音)                               | 
|  - 「已吃藥」或「我吃藥了」打卡互動 (文字 / 按鈕打卡)                   |
|  - Web 關懷儀表板 (Tailwind CSS 視覺化呈現用藥歷程與打卡狀態)          |
+------------------------------------------------------------------+
                                   |
                         HTTP POST (LINE Webhook / REST API)
                                   v
+-------- ---------------------------------------------------------+
|                       [ Python Flask API 後端層 ]                 |
|  - RESTful API (/analyze-prescription, /callback, /dashboard)    |
|  - PIL 圖片預處理與格式轉換                                         |
|  - Google GenAI SDK (Gemini VLM 多模態推理)                        |
|  - Prompt 提示詞工程 (轉化白話文 + Structured JSON 結構化輸出)        |
|  - gTTS 語音檔生成 (自動轉為 .mp3 播報檔)                            |
|  - SQLite 資料庫 (prescriptions, medicines, intake_logs 三表持久化) |
|  - LINE Messaging API (雙向 Webhook 接收 + 自動化關懷推播)           |
+------------------------------------------------------------------+
                                   |
                         REST API / JSON Payload
                                   v
+------------------------------------------------------------------+
|                       [ External Cloud Services ]                |
|  - Google AI Studio (Gemini VLM Model)                           |
|  - LINE Messaging Platform (LINE 訊息傳輸平台)                     |
+------------------------------------------------------------------+

三、 端到端 (End-to-End) 資料流向解析

完整系統運作流程包含以下 5 個步驟:

  1. 照片上傳與接收 (LINE App / Web) — 長輩拍下藥袋照片並傳送至 LINE 官方帳號,系統透過 Webhook 自動將圖片傳送給 Python Flask API。

  2. VLM 多模態理解 (Python Backend & Gemini) — Python 後端呼叫 Google VLM API,配合「高齡友善 Prompt」,將專業醫囑(如「一天三次,飯後」)翻譯為溫柔白話中文(如「阿公,早中晚餐後記得配水吃一顆」),同時輸出標準 JSON。

  3. 語音生成與紀錄落盤 (Python & SQLite) — 後端將白話語音摘要轉為 .mp3 音訊檔,並將藥名、頻率、劑量與安全警語寫入 SQLite 資料庫。

  4. 即時關懷推播 (LINE Messaging API) — 後端將白話文摘要與語音播報連結推播給長輩與家屬,提供最直覺的對話式關懷。

  5. 雙向打卡與儀表板同步 (LINE Webhook & Web Dashboard) — 長輩吃完藥後在 LINE 聊天室回覆「已吃藥」或「我吃藥了」,系統透過 Webhook 自動接收並將狀態寫入 intake_logs 資料表,家屬可隨時透過網頁儀表板檢視最新狀況。

四、 架構的優勢

  • 零學習門檻:善用 LINE 既有生態系,長輩完全不需要學習新軟體。
  • 低耦合與高擴充性:後端專注於 AI 推理與業務邏輯。將來不論升級 Gemini VLM 模型或擴充 Web 介面,都不會影響現有的對話邏輯。
  • 雙向閉環機制:系統不只辨識藥單,更結合 Webhook 與 SQLite 實現「辨識 → 播報 → 服藥打卡 → 儀表板追蹤」的完整流程。

五、 本日小結與明日預告

今天完成了系統架構圖繪製與前後端職責分配。

明天(Day 03),將正式進入程式碼實作階段,建立 Python 虛擬環境,安裝 Google GenAI SDK 與 Flask,並寫出第一個 analyze-prescription API 端點。


上一篇
Day 01|給藥袋裝一張嘴:為什麼傳統 OCR 不夠,我們需要 Google VLM?
系列文
給藥袋裝一張嘴:30 天用 Android 與 Google VLM 實作高齡語音用藥助手2
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言