# PANJIT Document Translator V2 ## 🎯 系統概述 企業級文檔翻譯系統,支援多種文檔格式的智能翻譯,包含 OCR 圖像識別和對話上下文連貫性功能。 ### 核心功能 - ✅ **多格式支援**:DOCX、DOC、PDF、PPTX、XLSX、XLS 文檔翻譯 - ✅ **智能 OCR**:掃描 PDF 自動識別,含圖像預處理增強 - ✅ **對話持續性**:維持翻譯上下文,確保長文檔術語一致性 - ✅ **多語言輸出**:單語言翻譯檔 + 多語言組合檔 - ✅ **混合認證**:API 認證為主,LDAP 備援 - ✅ **異步處理**:Celery + Redis 批量任務隊列 - ✅ **快取機制**:OCR 快取 + 翻譯快取,避免重複處理 ### 支援的翻譯語言 中文(繁體)、中文(簡體)、英文、日文、韓文、法文、德文、西班牙文、俄文、阿拉伯文、葡萄牙文、義大利文、泰文、越南文 --- ## 📋 系統需求 ### 必要軟體 | 軟體 | 版本要求 | 下載位置 | |------|---------|---------| | **Python** | ≥ 3.8 | https://www.python.org/downloads/ | | **Node.js** | ≥ 16.0 | https://nodejs.org/ | | **Redis** | ≥ 5.0 | https://github.com/tporadowski/redis/releases | ### 硬體需求 - **CPU**: 4 核心以上 (推薦) - **記憶體**: ≥ 8GB (推薦 16GB) - **硬碟空間**: ≥ 20GB ### 網路需求 - 可連線至外部 MySQL 資料庫 (mysql.theaken.com:33306) - 可連線至 Dify API (外部翻譯服務) - 可連線至 LDAP 伺服器 (panjit.com.tw:389) --- ## 🚀 快速部署 ### 一鍵自動部署(推薦) ```batch # 執行完整部署腳本 deploy_venv.bat ``` 此腳本會自動完成: 1. 建立 Python 虛擬環境 2. 安裝 Python 後端依賴 3. 安裝前端依賴並建置 4. 建立必要目錄 5. 複製前端建置產物 ### 手動部署步驟 ```batch # 1. 建立虛擬環境 setup_venv.bat # 2. 安裝 Python 依賴 install_python_dependencies.bat # 3. 安裝前端依賴並建置 install_frontend_dependencies.bat # 4. 建立必要目錄 mkdir uploads cache logs app\static # 5. 複製前端建置產物 xcopy /E /I /Y frontend\dist app\static ``` --- ## 🔧 環境配置 ### 1. 環境變數配置 (.env) 主要配置項(已預設): ```bash # 服務端口 SERVICE_PORT=12010 # 資料庫配置 DATABASE_URL=mysql+pymysql://A060:WLeSCi0yhtc7@mysql.theaken.com:33306/db_A060 # Redis 配置 REDIS_URL=redis://localhost:6379/0 # LDAP 配置 LDAP_SERVER=panjit.com.tw LDAP_PORT=389 # SMTP 郵件配置 SMTP_SERVER=mail.panjit.com.tw SMTP_PORT=25 ``` 💡 **提示**: - 專案已包含完整的環境配置,可直接使用 - 如需修改:`SECRET_KEY` 和 `JWT_SECRET_KEY` 可自訂金鑰 - API 配置已內建於 `api.txt`,無需額外設定 --- ## 🎬 啟動與停止 ### 啟動所有服務 ```batch # 一鍵啟動(推薦) start_all.bat ``` 會自動啟動 4 個服務,每個在獨立終端視窗: 1. Redis Server (端口 6379) 2. Flask Backend (端口 12010) 3. Celery Worker (任務處理器) 4. Celery Beat (定時任務) 啟動後自動開啟瀏覽器: http://localhost:12010 ### 分別啟動服務 ```batch # 視窗 1: Redis start_redis.bat # 視窗 2: 後端 start_backend.bat # 視窗 3: Worker start_celery_worker.bat # 視窗 4: Beat start_celery_beat.bat ``` ### 停止所有服務 ```batch stop_all.bat ``` --- ## 📊 系統架構 ### 服務組成 ``` 用戶瀏覽器 (http://localhost:12010) ↓ Flask Backend (端口 12010) ├── API 路由處理 ├── 靜態檔案服務 ├── JWT 認證 └── 檔案上傳管理 ↓ Redis (端口 6379) ├── 訊息佇列 ├── 任務快取 └── 翻譯快取 ↓ Celery Worker ← 處理翻譯任務 ↓ MySQL Database (遠端: mysql.theaken.com:33306) ``` ### 端口佔用 | 服務 | 端口 | 說明 | |------|------|------| | **Flask Backend** | 12010 | 主要 API 服務與前端 | | **Redis** | 6379 | 訊息佇列與快取 | | **MySQL** (遠端) | 33306 | 資料庫 | | **LDAP** (遠端) | 389 | 認證服務 | --- ## 📦 技術棧 ### 後端核心套件 ``` Flask==3.0.0 # Web 框架 Celery==5.3.4 # 異步任務佇列 redis==5.0.1 # Redis 客戶端 SQLAlchemy==2.0.23 # ORM PyMySQL==1.1.0 # MySQL 驅動 PyMuPDF>=1.23.0 # PDF 處理 opencv-python-headless==4.8.1.78 # 圖像處理 python-docx==1.1.0 # Word 文檔 python-pptx==0.6.23 # PowerPoint openpyxl==3.1.2 # Excel ldap3==2.9.1 # LDAP 認證 ``` 完整清單請參考 `requirements.txt` ### 前端核心套件 ```json { "vue": "^3.3.4", // Vue.js 3 "element-plus": "^2.3.8", // UI 組件庫 "axios": "^1.4.0", // HTTP 客戶端 "pinia": "^2.1.6", // 狀態管理 "echarts": "^5.4.3", // 圖表庫 "vite": "^4.4.0" // 建置工具 } ``` 完整清單請參考 `frontend/package.json` --- ## 📂 輸出格式說明 ### 單語言翻譯檔案 | 輸入格式 | 輸出格式 | 檔名範例 | |---------|---------|---------| | `.docx` | `.docx` | `translated_報告_en_20241002.docx` | | `.pdf` | `.docx` | `translated_文件_ja_20241002.docx` | | `.xlsx` | `.xlsx` | `translated_表格_zh-CN_20241002.xlsx` | | `.pptx` | `.pptx` | `translated_簡報_ko_20241002.pptx` | ### 組合多語言檔案 當選擇多個目標語言時,自動產生組合檔案: **檔名格式**: `combined_{檔名}_multilang_{timestamp}.{副檔名}` **內容結構**: ``` 原文段落1 [英文翻譯] [日文翻譯] 原文段落2 [英文翻譯] [日文翻譯] ``` --- ## 🗂️ 目錄結構 ``` Document_translator_V2_nodocker/ │ ├── app/ # 後端應用程式 │ ├── models/ # 資料模型 │ ├── api/ # API 路由 │ ├── services/ # 業務邏輯 │ ├── tasks/ # Celery 任務 │ ├── utils/ # 工具函數 │ └── static/ # 前端建置產物 │ ├── frontend/ # 前端源碼 │ ├── src/ # 源碼 │ ├── dist/ # 建置產物 │ └── package.json # 依賴清單 │ ├── venv/ # Python 虛擬環境 ├── uploads/ # 檔案上傳目錄 ├── cache/ # 快取目錄 ├── logs/ # 日誌目錄 │ ├── .env # 環境變數 ├── api.txt # Dify API 配置 ├── requirements.txt # Python 依賴 ├── database_schema.sql # 資料庫建置腳本 │ ├── deploy_venv.bat # 一鍵部署 ├── setup_venv.bat # 建立虛擬環境 ├── install_python_dependencies.bat ├── install_frontend_dependencies.bat │ ├── start_all.bat # 啟動所有服務 ├── start_redis.bat ├── start_backend.bat ├── start_celery_worker.bat ├── start_celery_beat.bat ├── stop_all.bat # 停止所有服務 │ ├── README.md # 本文件 └── README_VENV_DEPLOYMENT.md # 詳細部署手冊 ``` --- ## ✅ 部署驗證 ### 檢查服務狀態 ```batch # Redis redis-cli ping # 預期: PONG # 後端 API curl http://localhost:12010/api/health # 預期: {"status":"healthy"} # 前端 # 開啟瀏覽器: http://localhost:12010 ``` ### 功能測試 1. 登入系統 (使用 LDAP 帳號) 2. 上傳測試文檔 3. 選擇目標語言 4. 提交翻譯任務 5. 檢查任務狀態 6. 下載翻譯結果 --- ## 🐛 故障排除 ### Redis 啟動失敗 ```batch # 安裝 Redis (Chocolatey) choco install redis-64 # 或手動下載 # https://github.com/tporadowski/redis/releases ``` ### 端口被佔用 ```batch # 查找佔用進程 netstat -ano | findstr :12010 # 終止進程 taskkill /F /PID # 或停止所有服務 stop_all.bat ``` ### 資料庫連線失敗 檢查 `.env` 中資料庫配置,確認網路可連線至 `mysql.theaken.com:33306` ### 翻譯任務失敗 1. 檢查 `api.txt` 中 Dify API 配置 2. 查看 Celery Worker 終端的錯誤訊息 3. 確認網路可連線至 Dify API --- ## 🔐 安全建議 ### 生產環境檢查清單 - [ ] 修改 `SECRET_KEY` 和 `JWT_SECRET_KEY` - [ ] 確認資料庫密碼安全性 - [ ] 配置防火牆,僅開放必要端口 - [ ] 定期更新套件依賴 - [ ] 配置日誌輪替 - [ ] 定期備份資料庫和檔案 - [ ] 設定檔案自動清理 --- ## 📞 技術資訊 ### 系統資訊 - **版本**: Document Translator V2 - **服務端口**: 12010 - **Python**: ≥ 3.8 - **Node.js**: ≥ 16 - **核心框架**: Flask 3.0, Vue.js 3, Celery 5.3 ### 聯絡資訊 - **管理員**: ymirliu@panjit.com.tw - **詳細文件**: README_VENV_DEPLOYMENT.md --- ## 📝 快速指令 ```batch # 部署 deploy_venv.bat # 啟動 start_all.bat # 停止 stop_all.bat # 訪問 http://localhost:12010 ``` --- **🎉 完成部署後,系統即可正式使用!**