3

OCR ソフトウェア Tesseract を WAMP サーバーにインストールして、一部の画像の OCR プロセスを自動化しようとしています。ソフトウェアを WAMP サーバーにインストールする方法を検索すると、WAMP サーバーをインストールする方法しか返されないため、ルートは回答を返しません。コンピューターに Tesseract を正常にインストールし、使用しているファイルが正常に動作することを確認しました。私の問題は、PHP スクリプトから Tesseract を実行できないことです。提供されている Windows インストーラーを使用して、WAMP の www ディレクトリにインストールしました。次に、PHPexec()を使用して OCR を実行しようとしましたが、出力が得られませんでした。これは私の簡単なスクリプトです:

<?php
    $path = getenv('PATH');
    putenv("PATH=$path:/usr/local/bin");
    $src = 'a.jpg';
    $srcImg = imagecreatefromjpeg($src);

    $img = imagecreatetruecolor($newClanWidth, $newHeight);
    imagecopyresampled($img, $srcImg, 0, 0, $positions["aPlayer"], $positions[0], $newClanWidth, $newHeight, $clanWidth, $height);
    imagejpeg($img, 'temp.jpg', 100);
    echo '<pre>';
    exec('tesseract temp.jpg out');
    //echo file_get_contents('out.txt');
    echo '</pre>';
    imagedestroy($img);
?>

画像は正しく保存されています。の位置を変更でき、imagecopyresampled()それに応じて画像が変更されます。私の問題はインストールにあると思われます。なぜなら、どこを見てもexec()、コマンドラインからの場合と同じように使用するように誰もが言っているからです。のようなコマンドも指定してみましたTesseract-OCR/tesseract.exe temp.jpg out。Tesseract-OCR フォルダーは、PHP スクリプトと同じディレクトリにあります。私はこれに慣れていないことを認めているので、見落としている単純なものがある場合はご容赦ください。前もって感謝します。

4

1 に答える 1

2

「正常にインストールされたTesseract」とはどういう意味ですか? それをどうやって確認したの?コマンドラインで実行tesseract.exe -vして適切に取得できますか(または、最近はWindowsでCMDを呼び出します)?

これが機能する場合は、php 経由でこれを実行して同じ結果が得られることを確認してください。

エラーがオンになっていることを確認してください。エラーが発生しているかどうかを確認してくださいerror_reporting(-1)。実際にphp経由でtesseractを実行できるかどうか試してください:

$return = shell_exec('tesseract.exe -v'); // in your example you miss .exe it would be without extension on linux
var_dump($return);

(shell_exec はすべての出力を返します。最後の行だけを返す exec と比較してください)

それが機能する場合は、抽出中に絶対パスを設定してみてください。

imagejpeg($img, 'c:/temp.jpg', 100);
$return = exec('tesseract.exe temp.jpg c:/out');
var_dump($report); // in case it gives you some errors
$content = file_get_contents('c:/out.txt');
if ($content === false) die('something is still wrong');
// otherwise process $content

何も役に立たない場合は、結果/エラーを共有してください。

最後のヒント: Linux をインストールしてみてください

于 2013-10-08T06:08:49.070 に答える