Я использую Postman для отправки образа base64 в файл PHP на моем веб-сервере Apache. Изображение всегда отправляется успешно. PHP-скрипт выполняет скрипт python для извлечения текста из изображения (с использованием Pytesseract / Tesseract-OCR) и отправки вывода обратно на PHP. (Использование Windows 10, если это имеет значение)
Первые два оператора печати всегда возвращаются в 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 не может выполнять tesseract, когда он был запущен PHP.