2016-08-29 56 views
0

我正在使用Postman將base64映像發送到我的Apache Web服務器上的PHP文件。圖像始終成功發送。 PHP腳本執行python腳本以從圖像中提取文本(使用Pytesseract/Tesseract-OCR)並將輸出發送回PHP。 (使用Windows 10,如果有的話)PHP無法通過shell_exec()執行Python中的Pytesseract()

前兩個打印語句總是在Postman中返回,但第三個和第四個打印語句不返回。僅當pytesseract行被註釋掉時,最後的打印語句纔會返回。

當我自己運行python腳本時,所有的打印語句都成功返回。

的Python(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。

+0

請問,如果你在命令行手動運行Python文件(如相同的用戶PHP)的工作? –

+0

@CharlotteDunois是的! – 0248881

+0

有人可以真正幫助解決這個問題嗎? – 0248881

回答

0

希望你仍然在上面,我找到了解決方案here!添加論文線路中的PHP腳本,並希望這將工作:

$path = getenv('PATH'); putenv("PATH=$path:/usr/local/bin"); 
+0

@ 0248881:我知道這可能太舊了,但是你喜歡我的回答嗎?如果是的話,請upvote,這將是非常非常有益的...謝謝! – Ryan

+0

@ charlotte-dunois:你認爲我的回答有價值嗎?如果是這樣,請upvote,這將是非常有益的...! – Ryan