OCRmyPDF Docker 镜像怎么选?alpine 与 ubuntu 镜像的差异和固定版本方法
OCRmyPDF Docker 镜像怎么选alpine 与 ubuntu 镜像的差异和固定版本方法【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF用 OCRmyPDF 给扫描版 PDF 加 OCR 文本层时如果不想在本机逐个安装 Tesseract、Ghostscript 等依赖官方提供了打包好全部近期依赖的 Docker 镜像。这篇文档docs/docker.md给出了三个镜像该选哪个、怎么确认 Docker 环境可用、怎么把镜像版本固定下来下面按实际操作顺序说明。三个官方镜像及其差异docs/installation.md 将 Docker 列为安装方式之一具体镜像说明在 docs/docker.md。三者对比如下内容均出自该文档的镜像列表镜像架构说明jbarlow83/ocrmypdf-alpinex86_64 和 arm64推荐镜像基于 Alpine Linuxjbarlow83/ocrmypdf-ubuntux86_64 和 arm64备选镜像基于 Ubuntu。当 Alpine 镜像被认为稳定且 arm64 可用后此镜像将弃用jbarlow83/ocrmypdfx86_64 和 arm64目前是ocrmypdf-ubuntu的别名将来会指向 Alpine 镜像。文档原话如果不确定 Alpine 与 Ubuntu 的区别就用这个镜像据此做选择新环境直接用jbarlow83/ocrmypdf-alpine这是文档明确标注的推荐镜像需要基于 Ubuntu 的包环境时用jbarlow83/ocrmypdf-ubuntu明确指定而不要依赖不带后缀的ocrmypdf——它当前只是 Ubuntu 镜像的别名文档同时说明这个不带后缀的镜像已弃用、将来会被移除三个镜像都支持 x86_64 与 arm64。一个前提要注意文档把镜像底层的操作系统和其他细节视为实现细节可能在小版本minor release中改变。如果你会修改镜像文档要求固定pin你要用的版本。拉取镜像并完成首次运行1. 确认 Docker 环境可用文档给出的就绪检查命令docker run hello-world该命令能成功运行说明系统可以下载并执行镜像。2. 拉取选定的镜像docker pull jbarlow83/ocrmypdf-alpine选择 Ubuntu 镜像则拉取jbarlow83/ocrmypdf-ubuntu。3. 用 stdin/stdout 跑通第一个 OCR 任务文档推荐的做法是把输入文件从 stdin 送入、从 stdout 读出结果——不写挂载目录就完全避开文件权限问题也不受 rootless / rootful Docker 的影响。用 alias 藏起底层 Docker 命令alias docker_ocrmypdfdocker run --rm -i jbarlow83/ocrmypdf-alpine docker_ocrmypdf --version # runs docker version docker_ocrmypdf - - input.pdf output.pdfinput.pdf换成你的输入 PDF 路径output.pdf是重定向生成的输出文件名。--rm用于任务结束后删除容器——文档特别说明这类容器是短命的跑一次 OCR 就退出和命令行程序一样而不是常驻服务。fish shell 下对应的写法是alias docker_ocrmypdf docker run --rm -i jbarlow83/ocrmypdf-alpine加funcsave docker_ocrmypdf。验证方式docker_ocrmypdf --version能在容器里打印 OCRmyPDF 版本说明镜像可运行对真实 PDF 执行后在output.pdf中检索文本说明 OCR 文本层已写入。4. 可选挂载目录传文件如果你更习惯传文件路径而不是管道镜像默认工作目录是/data把目录挂到/data后即可用相对路径。注意镜像默认以非 root 用户appuid/gid 1000运行这是文档说明的纵深防御措施能否写回挂载目录取决于你的容器运行时文档给出了三种情况Rootless Dockerrootless 守护进程宿主普通用户身份alias docker_ocrmypdfdocker run --rm -i --user 0:0 -v $PWD:/data jbarlow83/ocrmypdf-alpine docker_ocrmypdf input.pdf output.pdf文档解释rootless 模式下容器内除 root 外的 uid包括app/1000都映射到从属 uid你拥有属主的目录在容器内显示为 root 所有默认app用户通常根本写不进去改用--user 0:0让任务以容器 root 身份运行在 rootless 下它就是你的宿主普通用户写入成功且输出归你所有。Rootful Docker传统 root 守护进程alias docker_ocrmypdfdocker run --rm -i --user $(id -u):$(id -g) -v $PWD:/data jbarlow83/ocrmypdf-alpine docker_ocrmypdf input.pdf output.pdfrootful 下容器 uid 与宿主 uid 一一对应若以 root 运行会在挂载目录里生成 root 属主的文件降到$(id -u):$(id -g)即你的宿主 uid输出归你且进程保持非特权。Podmanalias podman_ocrmypdfpodman run --rm -i --user $(id -u):$(id -g) --userns keep-id -v $PWD:/data jbarlow83/ocrmypdf-alpine podman_ocrmypdf input.pdf output.pdf--userns keep-id把宿主 uid 直接映射进容器避免 uid 不匹配导致的访问错误。SELinux 开启时文档提示可能还需给卷加:Z后缀或使用--security-opt labeldisable为容器禁用 SELinux文档建议后者用于系统文件完整命令即在上面 alias 的-v之后追加该参数。固定镜像版本的方法文档的原话是如果你修改扩展了镜像就应该固定一个具体的 OCRmyPDF Docker 镜像版本确保新版发布时你的镜像不会坏。具体方法是在自定义 Dockerfile 的FROM中显式写出版本 tagFROM jbarlow83/ocrmypdf:{TAG}文档示例中的{TAG}是占位符把它替换成你要固定的 OCRmyPDF 版本号例如FROM jbarlow83/ocrmypdf:17.9.0。文档正文没有给出 tag 的完整清单可用 tag 以镜像仓库中的实际列表为准。扩展语言包时同样需要固定版本镜像默认包含英语、德语、简体中文、法语、葡萄牙语、西班牙语。安装 tessdata_best 一类的训练数据前需要先确认镜像内的 Tesseract 数据文件版本文档说明它可能与 Tesseract 程序版本不同docker run -i --rm --entrypoint /bin/ls jbarlow83/ocrmypdf /usr/share/tesseract-ocr然后按查到的数据文件版本写入 COPY 路径。以下示例中data version替换为上一步列出的实际版本号文档以 2021 年的情况为例数据文件版本大概是4.00示例文件名chi_tra_vert.traineddata是文档给出的 traineddata 示例换成你要安装的文件FROM jbarlow83/ocrmypdf:{TAG} # Example: add a tessdata_best file COPY chi_tra_vert.traineddata /usr/share/tesseract-ocr/data version/tessdata/不想构建新镜像时文档给出替代路径把训练数据拷进一个已存在的容器。命令中的tesseract version同样替换为查到的数据文件版本号docker cp mycustomtraining.traineddata name_of_container:/usr/share/tesseract-ocr/tesseract version/tessdata/name_of_container替换为你目标容器的名称。限制与后续变化提示镜像底层系统会在小版本中改变文档要求此类变化写入 release notes。docs/releasenotes/version17.md 中的相关记录v17.7.0 起镜像默认以非 root 用户appuid/gid 1000运行、默认工作目录改为/dataUbuntu 镜像改用 Ubuntu 官方源的 Tesseract 5基础系统更新为 Ubuntu 26.04 和 Alpine 3.24更早的版本中 Alpine 基础镜像在 v17.3.0 更新到 3.23见同文件、在 v16.9.0 更新到 3.21docs/releasenotes/version16.md。固定版本就是为了避免这类底层变化影响你的扩展镜像。在非 Linux 平台上 Docker 运行在虚拟机里性能可能不如原生安装必要时按 Docker 官方文档调整虚拟机的内存和 CPU 分配Linux 上镜像原生运行性能与系统安装相当。需要容器内 shell 排查时docker run -it --entrypoint sh jbarlow83/ocrmypdf-alpine以非 root 的app用户运行需要 root例如用apk或apt装包时加--user root。镜像自带测试套件如需完整回归可执行docker run --rm --workdir /app --entrypoint python jbarlow83/ocrmypdf -m pytest。选对镜像并完成拉取后docker_ocrmypdf --version能返回版本号、管道方式能产出可检索的 PDF即说明环境就绪之后再按FROM中显式 tag 的方式固定版本扩展镜像就不会随上游发布被动变化。【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →