feat: 新增 OCRmyPDF 轉換引擎 (v0.1.14)
## 新功能 - OCRmyPDF 轉換引擎:將掃描版 PDF 轉換為可搜尋 PDF - 支援 7 種語言:en, zh-TW, zh, ja, ko, de, fr - 與 PDFMathTranslate 風格一致的 UI 格式 (pdf-<lang>) - 自動偵測頁面方向並旋轉 - 自動校正傾斜 - 跳過已有文字層的頁面 - 詳細的 5 階段處理進度輸出 ## 建置 - Dockerfile:安裝 ocrmypdf 與 Tesseract OCR 語言包 ## 文件 - 更新 OCR 功能文件 - 文件目錄結構改為中文名稱 ## 測試 - 修復 BabelDOC 和 PDFMathTranslate 測試的 OCR mock - 所有 345 個測試通過
This commit is contained in:
parent
f24eec070c
commit
a06df23b1d
53 changed files with 1427 additions and 675 deletions
273
docs/部署指南/Docker.md
Normal file
273
docs/部署指南/Docker.md
Normal file
|
|
@ -0,0 +1,273 @@
|
|||
# Docker 部署指南
|
||||
|
||||
本文件說明如何使用 Docker 部署 ConvertX-CN。
|
||||
|
||||
---
|
||||
|
||||
## Docker Image 版本
|
||||
|
||||
### 官方預建版(推薦)
|
||||
|
||||
| Tag | 說明 |
|
||||
| ----------------------------- | ---------- |
|
||||
| `convertx/convertx-cn:latest` | 最新穩定版 |
|
||||
| `convertx/convertx-cn:v0.1.x` | 指定版本號 |
|
||||
|
||||
**內建功能:**
|
||||
|
||||
- ✅ 核心轉換工具(FFmpeg、LibreOffice、ImageMagick 等)
|
||||
- ✅ OCR 支援:英文、繁/簡中文、日文、韓文、德文、法文
|
||||
- ✅ 字型:Noto CJK、Liberation、自訂中文字型
|
||||
- ✅ TexLive(支援 CJK/德/法)
|
||||
|
||||
**Image 大小:約 4-6 GB**
|
||||
|
||||
### 完整版(自行 Build)
|
||||
|
||||
使用 `Dockerfile.full` 自行建構,適合需要:
|
||||
|
||||
- 65 種 OCR 語言
|
||||
- 完整 TexLive
|
||||
- 額外字型套件
|
||||
|
||||
```bash
|
||||
docker build -f Dockerfile.full -t convertx-cn-full .
|
||||
```
|
||||
|
||||
> ⚠️ 注意:Image 大小可能超過 **10GB**,Build 時間約 **30-60 分鐘**
|
||||
|
||||
---
|
||||
|
||||
## Docker Run
|
||||
|
||||
### 基本啟動
|
||||
|
||||
```bash
|
||||
docker run -d \
|
||||
--name convertx-cn \
|
||||
--restart unless-stopped \
|
||||
-p 3000:3000 \
|
||||
-v ./data:/app/data \
|
||||
-e TZ=Asia/Taipei \
|
||||
-e JWT_SECRET=你的隨機字串至少32字元 \
|
||||
convertx/convertx-cn:latest
|
||||
```
|
||||
|
||||
### 參數說明
|
||||
|
||||
| 參數 | 說明 |
|
||||
| -------------------------- | ---------- |
|
||||
| `-d` | 背景執行 |
|
||||
| `--name convertx-cn` | 容器名稱 |
|
||||
| `--restart unless-stopped` | 自動重啟 |
|
||||
| `-p 3000:3000` | 連接埠映射 |
|
||||
| `-v ./data:/app/data` | 資料持久化 |
|
||||
| `-e TZ=Asia/Taipei` | 時區設定 |
|
||||
|
||||
### 進階選項
|
||||
|
||||
```bash
|
||||
docker run -d \
|
||||
--name convertx-cn \
|
||||
--restart unless-stopped \
|
||||
-p 3000:3000 \
|
||||
-v ./data:/app/data \
|
||||
-e TZ=Asia/Taipei \
|
||||
-e JWT_SECRET=你的隨機字串 \
|
||||
-e ACCOUNT_REGISTRATION=false \
|
||||
-e HTTP_ALLOWED=true \
|
||||
-e AUTO_DELETE_EVERY_N_HOURS=24 \
|
||||
convertx/convertx-cn:latest
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 資料持久化
|
||||
|
||||
### Volume 結構
|
||||
|
||||
```
|
||||
./data/
|
||||
├── convertx.db # SQLite 資料庫
|
||||
├── uploads/ # 上傳的原始檔案
|
||||
└── output/ # 轉換後的檔案
|
||||
```
|
||||
|
||||
### 建立資料夾
|
||||
|
||||
**重要**:請務必先建立資料夾,否則 Docker 會建立匿名 volume。
|
||||
|
||||
**Linux / macOS:**
|
||||
|
||||
```bash
|
||||
mkdir -p ~/convertx-cn/data
|
||||
```
|
||||
|
||||
**Windows PowerShell:**
|
||||
|
||||
```powershell
|
||||
mkdir C:\convertx-cn\data
|
||||
```
|
||||
|
||||
### 備份與還原
|
||||
|
||||
**備份:**
|
||||
|
||||
```bash
|
||||
tar -czvf convertx-backup-$(date +%Y%m%d).tar.gz ./data
|
||||
```
|
||||
|
||||
**還原:**
|
||||
|
||||
```bash
|
||||
tar -xzvf convertx-backup-20260120.tar.gz
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 硬體加速
|
||||
|
||||
### NVIDIA GPU (CUDA/NVENC)
|
||||
|
||||
1. 安裝 [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html)
|
||||
|
||||
2. Docker Compose 配置:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
convertx:
|
||||
image: convertx/convertx-cn:latest
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: all
|
||||
capabilities: [gpu]
|
||||
environment:
|
||||
- FFMPEG_ARGS=-hwaccel cuda -hwaccel_output_format cuda
|
||||
- FFMPEG_OUTPUT_ARGS=-c:v h264_nvenc -preset fast
|
||||
```
|
||||
|
||||
### Intel Quick Sync Video (QSV)
|
||||
|
||||
```yaml
|
||||
services:
|
||||
convertx:
|
||||
image: convertx/convertx-cn:latest
|
||||
devices:
|
||||
- /dev/dri:/dev/dri
|
||||
environment:
|
||||
- FFMPEG_ARGS=-hwaccel qsv
|
||||
- FFMPEG_OUTPUT_ARGS=-c:v h264_qsv -preset faster
|
||||
```
|
||||
|
||||
### AMD VAAPI
|
||||
|
||||
```yaml
|
||||
services:
|
||||
convertx:
|
||||
image: convertx/convertx-cn:latest
|
||||
devices:
|
||||
- /dev/dri:/dev/dri
|
||||
environment:
|
||||
- FFMPEG_ARGS=-hwaccel vaapi -hwaccel_device /dev/dri/renderD128
|
||||
- FFMPEG_OUTPUT_ARGS=-c:v h264_vaapi
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 資源限制
|
||||
|
||||
### 記憶體限制
|
||||
|
||||
```yaml
|
||||
services:
|
||||
convertx:
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 4G
|
||||
reservations:
|
||||
memory: 2G
|
||||
```
|
||||
|
||||
### CPU 限制
|
||||
|
||||
```yaml
|
||||
services:
|
||||
convertx:
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: "2"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 版本更新
|
||||
|
||||
**1. 拉取最新版本:**
|
||||
|
||||
```bash
|
||||
docker pull convertx/convertx-cn:latest
|
||||
```
|
||||
|
||||
**2. 停止並移除舊容器:**
|
||||
|
||||
```bash
|
||||
docker stop convertx-cn
|
||||
docker rm convertx-cn
|
||||
```
|
||||
|
||||
**3. 重新啟動(使用相同的參數):**
|
||||
|
||||
```bash
|
||||
docker run -d --name convertx-cn ...
|
||||
```
|
||||
|
||||
或使用 Docker Compose:
|
||||
|
||||
```bash
|
||||
docker compose pull
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 疑難排解
|
||||
|
||||
### 查看日誌
|
||||
|
||||
```bash
|
||||
docker logs convertx-cn
|
||||
```
|
||||
|
||||
持續追蹤日誌:
|
||||
|
||||
```bash
|
||||
docker logs -f convertx-cn
|
||||
```
|
||||
|
||||
### 進入容器
|
||||
|
||||
```bash
|
||||
docker exec -it convertx-cn /bin/bash
|
||||
```
|
||||
|
||||
### 常見問題
|
||||
|
||||
| 問題 | 解決方法 |
|
||||
| ----------- | ------------------------------ |
|
||||
| 啟動失敗 | 檢查日誌 `docker logs` |
|
||||
| Port 被占用 | 改用其他 port `-p 8080:3000` |
|
||||
| 權限錯誤 | `chmod -R 777 ./data` |
|
||||
| 記憶體不足 | 增加記憶體限制或減少同時轉換數 |
|
||||
|
||||
---
|
||||
|
||||
## 相關文件
|
||||
|
||||
- [Docker Compose 詳解](docker-compose.md)
|
||||
- [反向代理設定](反向代理.md)
|
||||
- [環境變數設定](../配置設定/環境變數.md)
|
||||
Loading…
Add table
Add a link
Reference in a new issue