Yii2调用TesseractOCR出现proc_open创建进程失败错误码-5问题
报错原因
报错proc_open(): CreateProcess failed, error code - 5是Windows环境下的典型错误,由两个核心问题导致:
executable()方法传入路径错误:填写的是Tesseract的安装文件夹路径,不是tesseract可执行程序的完整路径,插件无法找到可执行文件启动进程- 权限不足:运行PHP的Web服务进程用户(IIS对应IUSR、Apache/Nginx一般对应NETWORK SERVICE用户)没有Tesseract安装目录、待识别图片所在目录的访问/执行权限,Windows系统返回错误码-5(权限拒绝)
修复方案
- 修正可执行文件路径
将executable()的入参改为tesseract.exe的完整绝对路径,不要只传安装目录:
$tesseract = new TesseractOCR('C:\Users\users\Desktop\FolderName\text.png'); // 补全可执行文件名,路径含空格直接写全即可 $tesseract->executable('C:\Program Files\Tesseract-OCR\tesseract.exe'); $extractText = $tesseract->run();
- 配置目录权限
- 给Web服务运行用户分配
C:\Program Files\Tesseract-OCR目录的读取、执行权限 - 不建议把待识别的图片、PDF放在桌面这类个人用户私有目录,最好单独创建公共工作目录存放待识别文件,同时给Web服务运行用户分配该目录的读取、写入权限(Tesseract运行时会生成临时文件)
- 前置验证
配置完成后先在命令行执行以下命令验证环境可用性,命令行能正常返回识别文本再调用代码:
"C:\Program Files\Tesseract-OCR\tesseract.exe" C:\Users\users\Desktop\FolderName\text.png stdout
额外注意
Tesseract本身不支持直接识别PDF文件,需要先安装poppler工具将PDF逐页转成图片格式,再传入Tesseract提取文本。
内容的提问来源于stack exchange,提问作者Dulf
相关产品推荐
相关产品推荐

