Я использую Postman для отправки изображения base64 в файл PHP на моем веб-сервере Apache. Изображение всегда отправляется успешно. PHP-скрипт выполняет скрипт python для извлечения текста из изображения (с использованием Pytesseract/Tesseract-OCR) и отправки вывода обратно на PHP. (Использование Windows 10, если это имеет значение)PHP Не удалось выполнить Pytesseract в Python через shell_exec()
Первые два оператора печати всегда возвращаются в 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 :(";
}
?>
Я считаю, что проблема может запустить сценарий питона, но сценарий питона не в состоянии выполнить tesseract, когда он был выполнен PHP.
Работает ли он, если вы запускаете файл python вручную в cli (как тот же пользователь, что и php)? –
@CharlotteDunois Да! – 0248881
может кто-то действительно помочь с этой проблемой или нет ... – 0248881