我使用Ghostscript的剥离从PDF文件图像转换成JPG和运行的Tesseract保存TXT内容是这样的:PHP的exec()和正方体进“”无法打开输入文件”
- Ghostscript的位于C:\发动机\ GS \
- 超正方体于c:\发动机\的tesseract \
- 腹板位于PDF/JPG/TXT DIR =文件/ tmp/
代码:
$pathgs = "c:\\engine\\gs\\";
$pathtess = "c:\\engine\\tesseract\\";
$pathfile = "file/tmp/"
// Strip images
putenv("PATH=".$pathgs);
$exec = "gs -dNOPAUSE -sDEVICE=jpeg -r300 -sOutputFile=".$pathfile."strip%d.jpg ".$pathfile."upload.pdf -q -c quit";
shell_exec($exec);
// OCR
putenv("PATH=".$pathtess);
$exec = "tesseract.exe '".$pathfile."strip1.jpg' '".$pathfile."ocr' -l eng";
exec($exec, $msg);
print_r($msg);
echo file_get_contents($pathfile."ocr.txt");
剥图像(它只是1页)工作正常,但正方体呼应:
Array
(
[0] => Tesseract Open Source OCR Engine v3.01 with Leptonica
[1] => Cannot open input file: 'file/tmp/strip1.jpg'
)
,并且不产生ocr.txt文件,从而导致成“未能打开流”在PHP的错误。
- 复制strip1.jpg到C:/发动机/的tesseract /文件夹并从命令运行超正方体(超正方体strip1.jpg ocr.txt -l ENG)运行没有任何问题。
- 用exec(c:/ engine/tesseract/tesseract ...)替换putenv()报价返回am错误
- 我将strip1.jpg保留在Tesseract文件夹中并运行exec(tesseract'c:/ engine '...)返回am错误
- 离开path/strip1.jpg附近的apostrophs返回一个空数组作为消息,并且不会创建ocr.txt文件。
- 将命令直接写入exec()引用而不是使用$ exec不会进行更改。
我到底做错了什么?任何帮助深表感谢:-)
brgds 大卫
而不是相对路径(文件/ tmp/strip1.jpg),请尝试一个完全合格的路径? – halfer 2012-04-17 21:12:03
@halfer:我已经尝试了许多不同的路径 - 也是从c:到tmp的完整路径 - 有和没有apostroph - 但没有做任何改变。 错误的是在路径/文件名附近有引导者,所以我将它们全部留下。 exec(dir路径)清楚地给出了/ file/tmp文件夹的内容以及strip1.jpg。 它看起来像tesseract找到文件,但在操作开始之前崩溃,返回没有$味精和没有ocr.txt。但为什么它从命令行而不是在PHP中工作? Ghostscript根本不担心这一点。 – droehn 2012-04-19 17:50:32