Files
Document_translator_V2_nodo…/README.md
beabigegg 4cace93934 NO docker
2025-10-02 18:50:53 +08:00

412 lines
9.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 <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
```
---
**🎉 完成部署後,系統即可正式使用!**