Postman を使用して base64 イメージを Apache Web サーバーの PHP ファイルに送信しています。画像は常に正常に送信されます。PHP スクリプトは、Python スクリプトを実行して画像からテキストを抽出し (Pytesseract/Tesseract-OCR を使用)、出力を PHP に送り返します。(それが重要な場合は、Windows 10を使用してください)
最初の 2 つの print ステートメントは常に Postman に返されますが、3 番目と 4 番目の print ステートメントは返されません。pytesseract 行がコメントアウトされている場合にのみ、最後の print ステートメントが返されます。
Python スクリプトを単独で実行すると、すべての print ステートメントが正常に返されます。
パイソン (test.py)
from PIL import Image
import pytesseract
import sys
print "Print 1"
print "Print 2"
filename = "test.jpg"
#filename = sys.argv[1]
text = pytesseract.image_to_string(Image.open("Images/"+filename))
print text
#Final print statement appears on POSTMAN only if the tesseract code does not run
a = "Print"
b = 1+2
print a, b
PHP (connection.php)
<?php
header('Content-type : bitmap; charset=utf-8');
if(isset($_POST["encoded_string"])){
$encoded_string = $_POST["encoded_string"];
$device_name = $_POST["device_name"];
/*$image_name = $device_name.'.jpg';*/
$image_name = "test.jpg";
$decoded_string = base64_decode($encoded_string);
$path = 'images/'.$image_name;
$file = fopen($path, 'wb');
$is_written = fwrite($file, $decoded_string);
fclose($file);
$extracted = shell_exec("python test.py $image_name");
echo $extracted;
}
else {
echo "Failed :(";
}
?>
問題はpythonスクリプトを実行できると思いますが、pythonスクリプトはPHPで実行されたときにtesseractを実行できません。