Ghostscript を使用して PDF ファイルから画像を jpg に取り除き、Tesseract を実行して txt コンテンツを次のように保存します。
- c:\engine\gs\ にある Ghostscript
- c:\engine\tesseract\ にある Tesseract
- Web にある pdf/jpg/txt dir = file/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 ページのみ) の削除は正常に機能しますが、Tesseract は次のようにエコーします。
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:/engine/tesseract/ フォルダーにコピーし、コマンド (tesseract strip1.jpg ocr.txt -l eng) から Tesseract を実行すると、問題なく実行されます。
- putenv() 引用符を exec(c:/engine/tesseract/tesseract ... ) に置き換えると、 am エラーが返されます
- 私はstrip1.jpgをTesseractフォルダに保持し、実行した exec(tesseract 'c:/engine/tesseract/strip1.jpg' ... ) amエラーを返します
- path/strip1.jpg をアポストロフィで囲むと、メッセージとして空の配列が返され、ocr.txt ファイルは作成されません。
- $exec を使用する代わりに、コマンドを exec() クォートに直接書き込んでも、変更は行われません。
私は何を間違っていますか?