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:
Your Name 2026-01-23 16:28:33 +08:00
parent f24eec070c
commit a06df23b1d
53 changed files with 1427 additions and 675 deletions

View file

@ -1,255 +0,0 @@
# 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。
```bash
# Linux / macOS
mkdir -p ~/convertx-cn/data
# Windows PowerShell
mkdir C:\convertx-cn\data
```
### 備份與還原
```bash
# 備份
tar -czvf convertx-backup-$(date +%Y%m%d).tar.gz ./data
# 還原
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"
```
---
## 版本更新
```bash
# 拉取最新版本
docker pull convertx/convertx-cn:latest
# 停止並移除舊容器
docker stop convertx-cn
docker rm convertx-cn
# 重新啟動(使用相同的參數)
docker run -d \
--name convertx-cn \
# ... 其他參數
```
或使用 Docker Compose
```bash
docker compose pull
docker compose up -d
```
---
## 疑難排解
### 查看日誌
```bash
docker logs convertx-cn
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)
- [反向代理設定](reverse-proxy.md)
- [環境變數設定](../configuration/environment-variables.md)