From f675a68d8723daed6c671e8b27dfa9e3b627830c Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 20 Jan 2026 12:46:49 +0800 Subject: [PATCH] =?UTF-8?q?feat(docker):=20=E9=87=8D=E7=B5=84=20Docker=20?= =?UTF-8?q?=E6=9E=B6=E6=A7=8B=20v0.1.6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 優化 Dockerfile 註解與標頭 - 新增 Dockerfile.full 擴充範本 (FROM convertx-cn:latest) - 依地區分類 65+ OCR 語言 - 額外字型/TexLive 套件選項 - 每個區塊含預估大小說明 - 更新 docker.md 雙 Image 說明文件 - 版本更新至 0.1.6 --- CHANGELOG.md | 27 ++++++ Dockerfile | 41 ++++++-- Dockerfile.full | 253 ++++++++++++++++++++++++++++++++++++++++++++++++ docs/docker.md | 89 +++++++++++++++-- package.json | 2 +- 5 files changed, 393 insertions(+), 19 deletions(-) create mode 100644 Dockerfile.full diff --git a/CHANGELOG.md b/CHANGELOG.md index 5808b13..4d77bdf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,32 @@ # Changelog +## [0.1.6](https://github.com/pi-docket/ConvertX-CN/releases/tag/v0.1.6) (2026-01-20) + +### Features + +- **Docker 架構**: 整理並優化官方 Dockerfile + - 更新 Dockerfile 註解與文件說明 + - 新增 Dockerfile.full 完整版範本 +- **Dockerfile.full**: 進階使用者自行 build 的完整範本 + - 包含 65 種 OCR 語言(預設關閉) + - 包含完整 TexLive 選項(預設關閉) + - 包含額外字型套件(預設關閉) + - 所有進階功能以註解方式提供,使用者自行選擇 + +### Docs + +- 更新 docs/docker.md + - 說明官方 Image vs 完整版差異 + - 新增自訂 Build 指南 + - 新增可選功能大小說明 + +### Optimization + +- 優化 Dockerfile 結構與註解 +- 清楚標示哪些功能未內建於官方 Image + +--- + ## [0.1.5](https://github.com/pi-docket/ConvertX-CN/releases/tag/v0.1.5) (2026-01-20) ### Features diff --git a/Dockerfile b/Dockerfile index 14185bb..23678b6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,24 @@ # ============================================================================== -# ConvertX-CN 精簡版 Dockerfile -# 優化版本:移除 texlive-full,精簡字型與語言支援 -# 目標:在 GitHub Actions 中穩定建構(解決 no space left on device) -# 支援語言:中文(繁/簡)、日文、韓文、英文、德文、法文 +# ConvertX-CN 官方 Docker Image +# 版本:v0.1.6 +# ============================================================================== +# +# 📦 Image 說明: +# - 這是 ConvertX-CN 官方 Docker Hub Image 的生產 Dockerfile +# - 目標:在功能完整性與 image 體積間取得平衡 +# - 適合一般使用者日常文件轉換需求 +# +# 🌍 內建語言支援: +# - OCR: 英文、繁體中文、簡體中文、日文、韓文、德文、法文 +# - Locale: en_US, zh_TW, zh_CN, ja_JP, ko_KR, de_DE, fr_FR +# - 字型: Noto CJK, Liberation, 自訂中文字型 +# +# 📊 Image 大小:約 4-6 GB +# +# 💡 如需完整 65 種 OCR 語言或進階功能,請參考: +# - Dockerfile.full (完整版,使用者自行 build) +# - 文件:docs/docker.md +# # ============================================================================== FROM debian:trixie-slim AS base @@ -53,9 +69,19 @@ RUN bun run build FROM base AS release # ============================================================================== -# 精簡依賴安裝(單一 RUN 層,優化 cache 與空間) -# ❌ 已移除:texlive-full, fonts-noto-extra, 多餘語言包 -# ✅ 保留:核心轉換工具 + 最小 TexLive + 必要字型 +# 依賴安裝(單一 RUN 層,優化 cache 與空間) +# ============================================================================== +# +# ✅ 核心轉換工具:完整保留 +# ✅ TexLive:最小集合(支援 CJK、德文、法文) +# ✅ OCR:7 種主要語言 +# ✅ 字型:Noto CJK + Liberation +# +# ❌ 未內建(體積過大,請參考 Dockerfile.full): +# - texlive-full(約 +3GB) +# - 65 種 OCR 語言(約 +2GB) +# - fonts-noto-extra(約 +500MB) +# # ============================================================================== RUN apt-get update && apt-get install -y --no-install-recommends \ # === 基礎轉換工具 === @@ -117,7 +143,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ tesseract-ocr-deu \ tesseract-ocr-fra \ # === 字型(精簡版)=== - #fonts-noto-cjk # fonts-noto-core: Noto Sans/Serif Latin(歐語基礎) # fonts-noto-color-emoji: Emoji 支援(僅此一套) # fonts-liberation: Liberation 字型(Arial/Times 替代) diff --git a/Dockerfile.full b/Dockerfile.full new file mode 100644 index 0000000..e6ef6a9 --- /dev/null +++ b/Dockerfile.full @@ -0,0 +1,253 @@ +# ============================================================================== +# ConvertX-CN Full 擴充版 Dockerfile +# 版本:v0.1.6 +# ============================================================================== +# +# ⚠️ 重要說明: +# 此 Dockerfile 必須基於 ConvertX-CN 官方 Image +# 用途:為進階使用者提供擴充功能的範本 +# +# 📦 使用方式: +# 1. 確保已有 convertx/convertx-cn:latest 或自行 build +# 2. 取消註解需要的功能區塊 +# 3. 執行:docker build -f Dockerfile.full -t convertx-cn-full . +# +# ⚠️ 風險提示: +# - 每個擴充功能都會增加 Image 大小 +# - 全部啟用可能使 Image 超過 10GB +# - 請依實際需求選擇性啟用 +# +# ============================================================================== + +# 基於 ConvertX-CN 官方 Image +FROM convertx/convertx-cn:latest + +# ============================================================================== +# 📚 完整 TexLive(約 +3GB) +# ============================================================================== +# 說明:完整 LaTeX 支援,適合需要特殊 LaTeX 套件的使用者 +# 風險:Image 體積大幅增加 +# ------------------------------------------------------------------------------ +# RUN apt-get update && apt-get install -y --no-install-recommends \ +# texlive-full \ +# && apt-get clean && rm -rf /var/lib/apt/lists/* + +# ============================================================================== +# 🔤 OCR 語言擴充(按地區分類) +# ============================================================================== +# +# 📊 預估大小: +# - 每個語言包:5-50MB +# - 全部語言:約 +2GB +# +# 💡 建議:僅安裝實際需要的語言 +# ------------------------------------------------------------------------------ + +# --- 歐洲語言(西歐)--- +# 約 +150MB +# RUN apt-get update && apt-get install -y --no-install-recommends \ +# tesseract-ocr-spa \ +# tesseract-ocr-ita \ +# tesseract-ocr-por \ +# tesseract-ocr-nld \ +# && apt-get clean && rm -rf /var/lib/apt/lists/* + +# --- 歐洲語言(北歐)--- +# 約 +100MB +# RUN apt-get update && apt-get install -y --no-install-recommends \ +# tesseract-ocr-swe \ +# tesseract-ocr-dan \ +# tesseract-ocr-nor \ +# tesseract-ocr-fin \ +# tesseract-ocr-isl \ +# && apt-get clean && rm -rf /var/lib/apt/lists/* + +# --- 歐洲語言(東歐/斯拉夫)--- +# 約 +200MB +# RUN apt-get update && apt-get install -y --no-install-recommends \ +# tesseract-ocr-pol \ +# tesseract-ocr-rus \ +# tesseract-ocr-ukr \ +# tesseract-ocr-ces \ +# tesseract-ocr-slk \ +# tesseract-ocr-hun \ +# tesseract-ocr-ron \ +# tesseract-ocr-bul \ +# tesseract-ocr-hrv \ +# tesseract-ocr-srp \ +# tesseract-ocr-slv \ +# tesseract-ocr-lit \ +# tesseract-ocr-lav \ +# tesseract-ocr-est \ +# && apt-get clean && rm -rf /var/lib/apt/lists/* + +# --- 歐洲語言(其他)--- +# 約 +80MB +# RUN apt-get update && apt-get install -y --no-install-recommends \ +# tesseract-ocr-ell \ +# tesseract-ocr-tur \ +# tesseract-ocr-cat \ +# tesseract-ocr-eus \ +# tesseract-ocr-glg \ +# tesseract-ocr-gle \ +# tesseract-ocr-cym \ +# tesseract-ocr-mlt \ +# tesseract-ocr-mkd \ +# tesseract-ocr-sqi \ +# && apt-get clean && rm -rf /var/lib/apt/lists/* + +# --- 中東語言 --- +# 約 +100MB +# RUN apt-get update && apt-get install -y --no-install-recommends \ +# tesseract-ocr-ara \ +# tesseract-ocr-heb \ +# tesseract-ocr-fas \ +# && apt-get clean && rm -rf /var/lib/apt/lists/* + +# --- 南亞語言 --- +# 約 +200MB +# RUN apt-get update && apt-get install -y --no-install-recommends \ +# tesseract-ocr-hin \ +# tesseract-ocr-ben \ +# tesseract-ocr-tam \ +# tesseract-ocr-tel \ +# tesseract-ocr-kan \ +# tesseract-ocr-mal \ +# tesseract-ocr-mar \ +# tesseract-ocr-guj \ +# tesseract-ocr-pan \ +# tesseract-ocr-sin \ +# tesseract-ocr-nep \ +# && apt-get clean && rm -rf /var/lib/apt/lists/* + +# --- 東南亞語言 --- +# 約 +100MB +# RUN apt-get update && apt-get install -y --no-install-recommends \ +# tesseract-ocr-tha \ +# tesseract-ocr-vie \ +# tesseract-ocr-ind \ +# tesseract-ocr-msa \ +# tesseract-ocr-fil \ +# tesseract-ocr-mya \ +# tesseract-ocr-khm \ +# tesseract-ocr-lao \ +# && apt-get clean && rm -rf /var/lib/apt/lists/* + +# --- 非洲語言 --- +# 約 +50MB +# RUN apt-get update && apt-get install -y --no-install-recommends \ +# tesseract-ocr-afr \ +# tesseract-ocr-swa \ +# tesseract-ocr-amh \ +# && apt-get clean && rm -rf /var/lib/apt/lists/* + +# ------------------------------------------------------------------------------ +# 🌍 一鍵安裝所有 OCR 語言(約 +2GB) +# ⚠️ 警告:這會顯著增加 Image 大小與 build 時間 +# ------------------------------------------------------------------------------ +# RUN apt-get update && apt-get install -y --no-install-recommends \ +# tesseract-ocr-all \ +# && apt-get clean && rm -rf /var/lib/apt/lists/* + +# ============================================================================== +# 🔤 額外字型套件 +# ============================================================================== + +# --- Noto 完整字型集(約 +500MB)--- +# 包含全球所有語言的 Noto 字型 +# RUN apt-get update && apt-get install -y --no-install-recommends \ +# fonts-noto-extra \ +# && apt-get clean && rm -rf /var/lib/apt/lists/* + +# --- 阿拉伯語/希伯來語字型 --- +# 約 +50MB +# RUN apt-get update && apt-get install -y --no-install-recommends \ +# fonts-noto-ui-core \ +# fonts-arabeyes \ +# && apt-get clean && rm -rf /var/lib/apt/lists/* + +# --- 印度語系字型 --- +# 約 +100MB +# RUN apt-get update && apt-get install -y --no-install-recommends \ +# fonts-indic \ +# && apt-get clean && rm -rf /var/lib/apt/lists/* + +# --- 泰文字型 --- +# 約 +20MB +# RUN apt-get update && apt-get install -y --no-install-recommends \ +# fonts-thai-tlwg \ +# && apt-get clean && rm -rf /var/lib/apt/lists/* + +# ============================================================================== +# 📚 額外 TexLive 語言包 +# ============================================================================== + +# --- 更多歐洲語言 LaTeX 支援 --- +# 約 +300MB +# RUN apt-get update && apt-get install -y --no-install-recommends \ +# texlive-lang-spanish \ +# texlive-lang-italian \ +# texlive-lang-portuguese \ +# texlive-lang-polish \ +# texlive-lang-cyrillic \ +# texlive-lang-greek \ +# && apt-get clean && rm -rf /var/lib/apt/lists/* + +# --- 阿拉伯語/希伯來語 LaTeX 支援 --- +# 約 +150MB +# RUN apt-get update && apt-get install -y --no-install-recommends \ +# texlive-lang-arabic \ +# texlive-lang-other \ +# && apt-get clean && rm -rf /var/lib/apt/lists/* + +# ============================================================================== +# 🔧 進階轉換工具 +# ============================================================================== + +# --- OpenCV(電腦視覺相關轉換)--- +# 約 +200MB +# RUN apt-get update && apt-get install -y --no-install-recommends \ +# python3-opencv \ +# && apt-get clean && rm -rf /var/lib/apt/lists/* + +# --- 額外影片編解碼器 --- +# 約 +50MB +# RUN apt-get update && apt-get install -y --no-install-recommends \ +# libavcodec-extra \ +# && apt-get clean && rm -rf /var/lib/apt/lists/* + +# ============================================================================== +# 🌐 額外 Locale 設定 +# ============================================================================== +# 如需更多語言的 locale 支援,取消以下註解 +# ------------------------------------------------------------------------------ +# RUN sed -i 's/# es_ES.UTF-8 UTF-8/es_ES.UTF-8 UTF-8/' /etc/locale.gen && \ +# sed -i 's/# it_IT.UTF-8 UTF-8/it_IT.UTF-8 UTF-8/' /etc/locale.gen && \ +# sed -i 's/# pt_BR.UTF-8 UTF-8/pt_BR.UTF-8 UTF-8/' /etc/locale.gen && \ +# sed -i 's/# ru_RU.UTF-8 UTF-8/ru_RU.UTF-8 UTF-8/' /etc/locale.gen && \ +# sed -i 's/# ar_SA.UTF-8 UTF-8/ar_SA.UTF-8 UTF-8/' /etc/locale.gen && \ +# sed -i 's/# th_TH.UTF-8 UTF-8/th_TH.UTF-8 UTF-8/' /etc/locale.gen && \ +# sed -i 's/# vi_VN.UTF-8 UTF-8/vi_VN.UTF-8 UTF-8/' /etc/locale.gen && \ +# locale-gen + +# ============================================================================== +# 📋 擴充功能總覽 +# ============================================================================== +# +# | 功能 | 預估大小 | 風險等級 | +# |-------------------------|----------|----------| +# | 完整 TexLive | +3GB | 高 | +# | 全部 OCR 語言 | +2GB | 高 | +# | 歐洲 OCR(西歐) | +150MB | 低 | +# | 歐洲 OCR(北歐) | +100MB | 低 | +# | 歐洲 OCR(東歐) | +200MB | 中 | +# | 中東 OCR | +100MB | 低 | +# | 南亞 OCR | +200MB | 中 | +# | 東南亞 OCR | +100MB | 低 | +# | 非洲 OCR | +50MB | 低 | +# | Noto Extra 字型 | +500MB | 中 | +# | 印度語系字型 | +100MB | 低 | +# | 額外 TexLive 語言 | +300MB | 中 | +# | OpenCV | +200MB | 中 | +# +# ============================================================================== diff --git a/docs/docker.md b/docs/docker.md index fc6bf2a..66f406b 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -1,20 +1,89 @@ # Docker 配置指南 -## Docker Image +## Docker Image 版本說明 -ConvertX-CN 提供預建的 Docker Image,包含所有轉換依賴。 +ConvertX-CN 提供兩種 Docker Image 選項: -### 可用 Tag +### 1. 官方 Image(推薦) -| Tag | 說明 | -| ---------------------------------- | ------------------------ | -| `convertx/convertx-cn:latest` | 最新穩定版 | -| `convertx/convertx-cn:v0.1.5` | 指定版本號 | -| `convertx/convertx-cn:v0.1.5-FULL` | 完整版(與 latest 相同) | +從 Docker Hub 拉取的預建 Image,適合大多數使用者。 -### Image 大小 +| Tag | 說明 | +| ----------------------------- | ---------- | +| `convertx/convertx-cn:latest` | 最新穩定版 | +| `convertx/convertx-cn:v0.1.6` | 指定版本號 | -由於內建完整依賴(LibreOffice、TexLive、FFmpeg 等),Image 約 **4-6 GB**。 +**內建功能:** + +- ✅ 核心轉換工具(FFmpeg、LibreOffice、ImageMagick 等) +- ✅ OCR 支援:英文、繁/簡中文、日文、韓文、德文、法文 +- ✅ 字型:Noto CJK、Liberation、自訂中文字型 +- ✅ TexLive 最小集合(支援 CJK/德/法) + +**Image 大小:約 4-6 GB** + +### 2. 完整版(自行 Build) + +使用 `Dockerfile.full` 自行建構,適合需要: + +- 65 種 OCR 語言 +- 完整 TexLive +- 額外字型套件 + +**⚠️ 注意事項:** + +- Image 大小可能超過 **10GB** +- Build 時間約 **30-60 分鐘** +- 需要自行維護更新 + +```bash +# 自行建構完整版 +docker build -f Dockerfile.full -t convertx-cn-full . +``` + +--- + +## 自訂 Build 指南(進階使用者) + +如果官方 Image 不符合需求,可以使用 `Dockerfile.full` 自行建構: + +### 步驟 + +1. **複製 Dockerfile.full** + + ```bash + cp Dockerfile.full Dockerfile.custom + ``` + +2. **取消註解需要的功能** + - 編輯 `Dockerfile.custom` + - 找到需要的功能區塊 + - 移除 `#` 註解符號 + +3. **建構 Image** + ```bash + docker build -f Dockerfile.custom -t convertx-cn-custom . + ``` + +### 可選功能 + +| 功能 | 預估大小 | 說明 | +| --------------- | -------- | ---------------- | +| 完整 TexLive | +3GB | 完整 LaTeX 支援 | +| 全部 OCR 語言 | +2GB | 65 種語言辨識 | +| Noto Extra 字型 | +500MB | 全球語言字型 | +| 歐洲 OCR 語言 | +200MB | 25 種歐洲語言 | +| 中東/南亞 OCR | +150MB | 阿拉伯、印度語系 | +| 東南亞 OCR | +100MB | 泰、越、印尼等 | + +### 範例:僅加入西班牙文 OCR + +```dockerfile +# 在 Dockerfile.full 中取消以下註解: +RUN apt-get update && apt-get install -y --no-install-recommends \ + tesseract-ocr-spa \ + && rm -rf /var/lib/apt/lists/* +``` --- diff --git a/package.json b/package.json index ea4ddcf..00d1370 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "convertx-frontend", - "version": "0.1.5", + "version": "0.1.6", "scripts": { "dev": "bun run --watch src/index.tsx", "hot": "bun run --hot src/index.tsx",