-1

Windows ベースの Apache サーバーで tesseract を使用して OCR を実行しようとしています。それは私を怒らせます。次の例では、期待される E:\zzz.txt ファイルが生成されません。

<?php

$command = "\"C:\\ocr\\tesseract.exe\" \"E:\\www\\test\\upload\\proofs\\src\\yehia.raef.jpg\" \"E:\\zzz\" 2>&1";

print $command;
exec("$command", $msg);
print_r($msg);

?>

プログラムを実行すると、次のようになります。

C:\Users\blob\Desktop>php ici.php
"C:\ocr\tesseract.exe" "E:\www\test\upload\proofs\src\yehia.raef.jpg" "E:\zzz" 2>&1

Array
(
    [0] => The filename, directory name, or volume label syntax is incorrect.
)

ただし、プロンプトから直接コマンドを実行すると、次のようになります。

C:\Users\blob\Desktop>"C:\ocr\tesseract.exe" "E:\www\test\upload\proofs\src\yehia.raef.jpg" "E:\zzz" 2>&
Tesseract Open Source OCR Engine v3.02 with Leptonica

それは魅力のように機能します。この種のコマンドは、ImageMagick などの他のソフトウェアと完全に連携することに注意してください...

ヘルプ!

4

1 に答える 1

1

PHP に必要なすべての権限があると仮定すると、Windows で実行されている PHP/5.3.0 より前のバージョンの PHP では、完全なコマンドの周りに追加の引用符を追加する必要があります。

<?php

$command = "\"C:\\ocr\\tesseract.exe\" \"E:\\www\\test\\upload\\proofs\\src\\yehia.raef.jpg\" \"E:\\zzz\" 2>&1";
if( PHP_OS=='WINNT' && version_compare(PHP_VERSION, '5.3.0', '<') ){
    $command = '"' . $command . '"';
}
print $command;
于 2013-01-11T08:35:12.747 に答える