
OCRmyPDF 批处理脚本入门三步跑通扫描PDF批量OCR【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF一抽屉扫描版 PDF——47 份合同、证书、老报表都有。你希望每一份的文字都能选中、能搜索。手动干意味着逐个打开、逐个转干到第 30 份时已经记不清哪些处理过了。OCRmyPDF 批处理脚本就是为这种任务准备的。OCRmyPDF 是一个给扫描 PDF 添加文字层的开源工具项目仓库里自带示例脚本misc/batch.py它会遍历整棵目录树、对里面的 PDF 逐个做 OCR并把每个文件的结果写进日志。这篇教程带你从克隆仓库一路跑通。读完你能做到一条命令启动批处理、把原件备份到归档目录、通过日志确认处理结果。30 秒看懂它脚本在仓库的misc/batch.py逻辑就做三件事递归找出指定目录下所有.pdf文件对每个文件原地 OCR——输入和输出是同一个文件直接覆盖每一步都往日志文件里写一行。最小命令长这样python3 misc/batch.py /path/to/your/pdf/directory跑完后的预期效果那个目录里每个 PDF 都有了文字层鼠标可以框选复制、CtrlF 能搜到内容。已经带文字的文件会被自动跳过所以重复运行不会破坏文件可以放心再跑一次。从零到跑通3 步第 1 步克隆仓库并安装依赖git clone https://gitcode.com/GitHub_Trending/oc/OCRmyPDF cd OCRmyPDF pip install ocrmypdf注意脚本是把 ocrmypdf 当 Python 库导入的所以要在你打算运行脚本的那个 Python 环境里安装。另外还需要 Tesseract 引擎Linux 下一般用包管理器装例如 Ubuntu 执行sudo apt install tesseract-ocr。判断装好了python3 -c import ocrmypdf不报错即可。第 2 步准备一个测试目录第一次别指着生产目录跑。找两三份扫描版 PDF 放进临时目录mkdir -p ~/ocr-test cp /somewhere/scan-01.pdf ~/ocr-test/第 3 步运行并验证python3 misc/batch.py ~/ocr-test运行期间终端是安静的这是正常现象——所有输出都进了日志文件。默认日志是项目根目录下的ocr-tree.log不是misc/里。用这两步判断成功tail -20 ocr-tree.log看到Processing ...和OCR complete这样的行打开处理后的 PDF 按 CtrlF 搜一个词。搜得到说明文字层加上了。想定制时改哪里1. 原件备份到哪个目录脚本覆盖文件前会先把原件复制一份。第 39 行archive_dir /pdfbak改成你有写权限的路径比如archive_dir str(Path.home() / pdfbak)。效果每个原件都有备份OCR 出问题可以回滚。不需要备份就设为空字符串脚本会跳过归档。2. 日志写到哪默认写项目根目录的ocr-tree.log。命令行传第二个参数可以指定别处python3 misc/batch.py ~/ocr-test /var/log/ocr.log效果按批次分日志出问题了好回溯是哪个文件。3. OCR 关键参数核心调用就一行ocrmypdf.ocr(filename, filename, deskewTrue)前两个参数是输入和输出同一文件即原地覆盖deskewTrue自动矫正轻微歪斜的页面。想加中文识别或旋转页面就改成ocrmypdf.ocr(filename, filename, languagechi_simeng, # 识别语言 deskewTrue, # 校正倾斜 rotate_pagesTrue) # 自动旋转页面全部可选参数见官方文档 docs/apiref.md。几个容易踩的坑 ⚠️跑起来就报 ModuleNotFoundError现象一执行就提示找不到ocrmypdf模块。原因脚本导入的是 Python 库而你只在 snap 或 Flatpak 里装过命令行版当前 Python 环境里并没有这个包。解法在运行脚本的解释器里pip install ocrmypdf。第一个文件就 PermissionError现象归档原件时报权限错误脚本中断。原因默认归档目录/pdfbak在文件系统根目录下普通用户没权限创建。解法把archive_dir改成用户目录下的路径或设为空字符串关闭归档。大写扩展名的文件没被处理现象个别xxx.PDF被漏掉日志里查不到。原因脚本用glob(**/*.pdf)找文件区分大小写。解法把文件名统一改成小写.pdf最省事。重跑时已处理的文件被跳过现象第二次运行之前转过的文件显示被跳过。原因OCRmyPDF 检测到 PDF 已有文字层会主动跳过这是安全机制——意味着你可以放心重跑它只补新文件。如果确实要重做给 ocr 调用加redo_ocrTrue。下一步可以做什么文件多于一百个以后串行循环会明显变慢可以改用 GNU Parallel 让两个文件同时处理或者用仓库里同样自带的misc/watcher.py让脚本盯着一个目录、来一份新文件就自动转一份。两条路线的具体命令都在官方批处理文档 docs/batch.md 里照着抄就能跑。【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考