# Project -- Image Text Detection (ITD)
## 專案介紹
* **ITD** 為使用者提供線上平台,讓用戶能夠上傳影片,並下載經過物件追蹤的影片以及相關物件詳細資訊。
* 使用者能夠快速獲得物件追蹤影片,並深入分析影片中物件的細節資訊。
[**專案 Demo 連結**](https://www.youtube.com/live/OqySkXc2ye0?t=1528s)
<!-- 
<center style="color:brown;">
點擊右上 註冊/登入 即可開始體驗服務。
</center>
</br>

<center style="color:brown;">
會員頁面提供影片下載連結,點擊下方上傳影片。
</center>
</br>

<center style="color:brown;">
上傳影片後稍待片刻。
</center>
<!-- [**專案連結**](https://leo145x.com) --> -->
[**專案原始碼連結**](https://github.com/Leo145x/ITD)
## 專案架構

## 詳細流程
1. 使用者上傳影片至 *GCP VM*,該伺服器接著將影片上傳至 *GCP Video Interlligence* 進行物件辨識。
2. *GCP VM* 將辨識結果逐幀繪製在原影片上,並將繪製後的影片與標籤檔上傳至 *AWS S3*,再透過 *AWS Cloud Front* 部署。
3. *GCP VM* 發出 request 至 *AWS EC2 (web sever)*,其包含部署連結以及用戶等資訊。
4. *AWS EC2 (web sever)* 利用 *AWS RDS (MySQL)* 更新用戶資料。
5. 透過 *Socket.IO* 及時通知用戶影片辨識已完成。
## 開發挑戰
### 1. 雙伺服器 :
> 使用 [*AWS EC2 免費方案*](https://aws.amazon.com/tw/ec2/pricing/),經嘗試後遇到該伺服器無法有效繪製影片或影響用戶體驗等情況。因此,另啟 *GCP VM* 作為影像處理專用伺服器。
> * 資源優化與任務分工
> * 降低伺服器租用成本
<span style="color:red">經驗學習 : </span>`跨域請求` `版本控制`
### 2. 流程改善 :
> 影片解析過程透過 *Python threading* 實現多執行緒處理,確保原影片上傳完成後,立即回應瀏覽器請求,從而避免 *Timeout* 。
> * 降低用戶體感等待時間
> * 避免大量長時間等待的請求
<span style="color:red">經驗學習 : </span>`多執行緒處理`
<!-- ## 系統框架開發相關經驗
### 背景與挑戰
在 Allxon (奧暢雲) 擔任後端工程師期間,我負責設計和維護 API。起初,我們的架構基於 AWS Lambda 並結合負載均衡器,但每個 API 的路徑和請求主體均需手動撰寫驗證邏輯。隨著系統功能的不斷擴展,這種做法逐漸顯現出維護上的困難,導致開發效率降低,並增加系統的技術債。
### 解決方案
為了提升架構的可維護性與開發效率,嘗試引入 Pydantic 作為自動化驗證工具。Pydantic 能夠實現對資料結構的嚴格驗證,並透過簡單定義正則表達式進行約束,從而大幅減少重複性的驗證程式碼。
### 成果與效益
這個改動顯著提升了系統的模組化和一致性,並加強程式碼的可讀性與可擴展性。整個開發過程變得更加高效,同時有效地減輕了技術債。 -->
<!-- </br> -->
<!-- > [name=Leo Hung][time=Tue, Nov 12, 2024 12:14 PM][color=red] -->