Распознавание текста на 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
Author: andrew, 2011-01-19

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

Удачи!

 7
Author: Flavius, 2011-01-19 00:37:27