Вопрос
Я хочу преобразовать большое количество файлов изображений в текст с помощью Tesseract.
Я посмотрел на их документацию, но не знал, как это относится к PHP и как мой сценарий PHP будет взаимодействовать с Tesseract OCR. Я видел на других вопросах, которые предполагают, что php exec () может быть путем.
$img = myimage.png;
$text = exec($img,'tesseract');
Я скачал и установил Tesseract. Использование Windows 7 с недавней версией XAMPP установлена. У меня есть новичок в промежуточном знании PHP. Какие знания мне не хватает?
Обновлять Теперь у меня есть это в PowerShell и CMD с
tesseract.exe D:\Documents\Web_Development\Sandbox\php\images\23.png D:\Documents\Web_Development\Sandbox\php\images\23
Но когда я пытаюсь запустить его через Exec, так:
<?php
exec('tesseract.exe D:\Documents\Web_Development\Sandbox\images\23.png D:\Documents\Web_Development\Sandbox\images\23');
?>
Я получаю всплывающее окно от Windows, в котором говорится, что Tesseract.exe перестал работать. Вот подробности ошибки, если они что -то значат для кого -либо.
Problem signature:
Problem Event Name: BEX
Application Name: tesseract.exe
Application Version: 0.0.0.0
Application Timestamp: 4ca507b3
Fault Module Name: MSVCR90.dll
Fault Module Version: 9.0.30729.4926
Fault Module Timestamp: 4a1743c1
Exception Offset: 0002f93e
Exception Code: c0000417
Exception Data: 00000000
OS Version: 6.1.7600.2.0.0.768.3
Locale ID: 1033
Additional Information 1: e958
Additional Information 2: e95831f9d00a16a326250da660e931c5
Additional Information 3: 040a
Additional Information 4: 040a259d27c5ccf749ee18722d5fbec0
Решение
Вы должны попытаться заставить его работать без PHP, то есть запускать его из MS Windows Интерфейс CLI (Подсказка MS-DOS). После этого вы просто вкладываете все, что напечатали в CLI во время выполнения PHP, запустив его через CLI или какой -либо другой Механизмы IPC, в конце концов, параметризуя его с помощью переменных PHP.
Например, если в CLI вы бы печали
ipconfig /all
Чтобы получить IP -конфигурацию системы, тогда в PHP вы просто используете:
<?php
echo '<pre>';
echo exec('ipconfig /all');
echo '</pre>';
Вернемся к вашей проблеме, если в CLI вы бы выпустили:
tesseract document.tif result
Тогда в PHP вы бы сделали
<?php
echo '<pre>';
echo exec('tesseract document.tif result');
echo '</pre>';
Это все. Это не специфично для Tesseract, он работает с любой программой (с интерфейсом CLI).
Если вам нужно большее управление выводом или вход (как это так, когда пользователю просят вход во время работы программы), вам следует использовать proc_*()
Семейство функций из http://ch2.php.net/manual/en/function.exec.php
Удачи!