You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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直接识别测试:
    tesseract test_image.png result.txt -l eng
    
    如果这个命令也返回错误码1,那问题出在Tesseract本身(比如依赖缺失、语言包不全),得先把Tesseract的问题解决,再回头试ocrmypdf。

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

火山引擎 最新活动