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 云端服务指南,采用专业级解决方案。