Распознавание текста на Tesseract и Php
Я хочу преобразовать большое количество файлов изображений в текст с помощью Tesseract.
Я просмотрел их документацию, но понятия не имею, как это связано с PHP и как мой php-скрипт будет взаимодействовать с tesseract ocr. Я видел по другим вопросам, которые предполагают, что php exec() может быть подходящим вариантом.
$img = myimage.png;
$text = exec($img,'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
1 answers
Вы должны попытаться заставить его работать без PHP, то есть запустить его из интерфейса командной строки ms Windows (приглашение ms-dos). После этого вы просто помещаете все, что вы ввели в CLI, во время выполнения PHP, запускаете его через CLI или некоторые другие механизмы IPC, в конечном итоге параметризуя его с помощью переменных PHP.
Например, если в командной строке вы будете вводить
ipconfig /all
Чтобы получить IP-конфигурацию системы, тогда в PHP вы просто использование:
<?php
echo '<pre>';
echo exec('ipconfig /all');
echo '</pre>';
Вернемся к вашей проблеме, если бы в командной строке вы выдавали:
tesseract document.tif result
Тогда в PHP вы бы сделали
<?php
echo '<pre>';
echo exec('tesseract document.tif result');
echo '</pre>';
Вот и все. Это не относится конкретно к tesseract, он работает с любой программой (с интерфейсом командной строки).
Если вам нужно больше контроля над выводом или вводом (как в случае, когда пользователя просят ввести данные во время работы программы), вам следует использовать семейство функций proc_*()
из http://ch2.php.net/manual/en/function.exec.php
Удачи!