Windows下使用ocrmypdf时Tesseract OCR命令抛出SubprocessOutputError错误求助
Windows下使用ocrmypdf时Tesseract OCR命令抛出SubprocessOutputError错误求助
从你贴出的错误日志和描述的环境来看,问题的核心是ocrmypdf调用Tesseract OCR工具时,Tesseract返回了非零退出码1,进而触发了SubprocessOutputError。结合你是用Scoop在Windows11上安装的环境,以及PDF是从DJVU转PS再转换而来的背景,我整理了几个针对性的排查和解决步骤,你可以逐一尝试:
1. 先确认Tesseract本身能独立正常工作
ocrmypdf的这个错误根源是Tesseract命令执行失败,所以先抛开ocrmypdf,单独测试Tesseract的可用性:
- 打开CMD/PowerShell,运行
tesseract --version,如果弹出错误或者无输出,说明Tesseract的Scoop安装有问题,先修复它:scoop uninstall tesseract scoop install tesseract - 找一张普通的PNG/JPG图片,用Tesseract直接识别测试:
如果这个命令也返回错误码1,那问题出在Tesseract本身(比如依赖缺失、语言包不全),得先把Tesseract的问题解决,再回头试ocrmypdf。tesseract test_image.png result.txt -l eng
2. 检查临时目录的读写权限
从错误日志能看到,ocrmypdf会把PDF转成临时图片存到系统Temp目录,然后调用Tesseract处理。如果当前用户对这个Temp目录没有足够的读写权限,Tesseract就会执行失败:
- 你可以手动指定一个你有完全控制权限的临时目录给ocrmypdf,比如:
ocrmypdf --skip-text --tempdir "D:\MyCustomTemp" .\input.pdf output.pdf -v - 也可以检查
C:\Users\<你的用户名>\AppData\Local\Temp的权限,确保当前用户有“读取、写入、修改”的权限。
3. 排查输入PDF的兼容性问题
你的PDF是从DJVU转PS再转成的,中间的格式转换可能生成了Tesseract无法处理的图片(比如分辨率异常、色彩模式不兼容、图片损坏):
- 先把PDF里的某一页提取成图片(可以用Adobe Acrobat、PDF2Image工具,甚至截图),然后用Tesseract单独识别这张提取出的图片,如果还是报错,说明这页的图片本身有问题。
- 试试换一种DJVU转PDF的方式,比如直接用
djvu2pdf工具(Scoop可以装:scoop install djvu2pdf),跳过PS转换步骤,直接把DJVU转成PDF,再用ocrmypdf处理。
4. 重装ocrmypdf及其依赖组件
有时候Scoop的包管理会出现依赖关联异常,你可以彻底清理后重装:
scoop uninstall ocrmypdf tesseract ghostscript python scoop install python ghostscript tesseract ocrmypdf
注意安装顺序,先装Python、Ghostscript这些基础依赖,再装Tesseract和ocrmypdf,确保所有组件能正确关联。
5. 检查Tesseract语言包是否完整
错误日志里ocrmypdf调用Tesseract时用了-l eng(英文语言包),如果你的PDF里有其他语言,或者英文语言包没安装全,也可能导致Tesseract报错:
- 检查Tesseract的tessdata目录(一般在
C:\Users\<你的用户名>\scoop\apps\tesseract\current\tessdata)里有没有eng.traineddata文件。 - 如果没有,用Scoop安装英文语言包:
scoop install tesseract-data-eng,或者从Tesseract官方仓库下载对应的语言包放到tessdata目录里。
备注:内容来源于stack exchange,提问作者Username




