OCRmyPDF 的 Docker 镜像
OCRmyPDF 提供预打包所有最新依赖的 Docker 镜像。对于已安装 Docker 的用户,这是便捷的使用方式。
在非 Linux 平台上,Docker 运行于虚拟机中,性能可能略低。建议根据需求调整 Docker 虚拟机的内存和 CPU 分配。Linux 平台下,Docker 镜像以原生性能运行。
安装 Docker 镜像
若系统中已安装 Docker,可获取最新版镜像:
docker pull jbarlow83/ocrmypdf-alpine
可用镜像列表:
| 镜像名称 | 架构支持 | 说明 | 
|---|---|---|
jbarlow83/ocrmypdf-alpine | 
x86_64 和 arm64 | 推荐镜像,基于 Alpine Linux。 | 
jbarlow83/ocrmypdf-ubuntu | 
x86_64 和 arm64 | 备用镜像,基于 Ubuntu。当 Alpine 镜像稳定支持 arm64 后,此镜像将弃用。 | 
jbarlow83/ocrmypdf | 
x86_64 和 arm64 | 当前为 ocrmypdf-ubuntu 的别名。未来将指向 Alpine 镜像。建议普通用户使用。 | 
注意:
ocrmypdf镜像已弃用,未来将移除。
性能优化建议
OCRmyPDF 会使用所有可用 CPU 核心。在 macOS/Windows 的 Docker 环境中,建议通过 调整内存和 CPU 分配 提升性能。Linux 系统会自动获取全部资源。
命令行使用指南
与常规 Docker 容器不同,OCRmyPDF 容器为临时性——执行单个 OCR 任务后终止,行为类似命令行工具。因此我们通常使用 --rm 参数在退出时删除容器。
基础启动命令:
docker run --rm -i jbarlow83/ocrmypdf-alpine [其他参数...] - -
便捷用法
方案一:通过标准输入输出流操作
创建 shell 别名简化命令:
alias docker_ocrmypdf='docker run --rm -i jbarlow83/ocrmypdf-alpine'# 测试版本docker_ocrmypdf --version# 文件转换示例docker_ocrmypdf - - <input.pdf >output.pdf
方案二:挂载本地工作目录
通过卷映射避免权限问题:
alias docker_ocrmypdf='docker run --rm -i --user "$(id -u):$(id -g)" --workdir /data -v "$PWD:/data" jbarlow83/ocrmypdf-alpine'# 转换文件docker_ocrmypdf /data/input.pdf /data/output.pdf
Podman 用户专用配置
使用 Podman 或 SELinux 系统时需额外参数:
alias podman_ocrmypdf='podman run --rm -i --user "$(id -u):$(id -g)" --userns keep-id --workdir /data -v "$PWD:/data" ocrmypdf'# SELinux 环境下添加卷标签后缀podman_ocrmypdf /data/input.pdf /data/output.pdf
提示:SELinux 用户需在卷路径后添加
:Z标签,或使用--security-opt label=disable禁用安全标签。
扩展镜像功能
添加多语言支持
默认包含英语、德语、简体中文、法语、葡萄牙语和西班牙语。扩展语言示例:
方法一:通过 Dockerfile 扩展
FROM jbarlow83/ocrmypdf-alpine:<指定版本标签># 添加意大利语支持RUN apk add tesseract-ocr-ita
方法二:动态注入语言包
- 查询 Tesseract 数据版本:
 
docker run -i --rm --entrypoint /bin/ls jbarlow83/ocrmypdf /usr/share/tesseract-ocr
- 复制自定义训练数据:
 
docker cp custom.traineddata 容器名:/usr/share/tesseract-ocr/<版本号>/tessdata/
重要:自定义镜像时务必固定基础镜像版本号,避免兼容性问题。
高级操作指南
执行测试套件
docker run --rm --entrypoint python jbarlow83/ocrmypdf -m pytest
进入交互式 Shell
docker run -it --entrypoint sh jbarlow83/ocrmypdf-alpine
启用 Web 服务(演示用途)
启动简易 HTTP 服务:
docker run -p 5000:5000 --entrypoint python jbarlow83/ocrmypdf webservice.py
安全警告:
- 此服务仅用于演示/开发,无任何安全防护
 - 使用单线程 Flask 开发服务器,性能有限
 - 客户端需保持长连接,OCR 期间无法响应其他请求
 - 授权协议变更为 AGPLv3(因 Ghostscript 依赖)
 
生产环境建议:如需部署 OCR 服务,请参考 OCRmyPDF 云端服务指南,采用专业级解决方案。
