Question
Je cherche à convertir un grand nombre de fichiers d'images en texte en utilisant Tesseract.
J'ai regardé leurs documents, mais pas idée comment cela se rapporte à PHP et comment mon script php interagira avec Tesseract ocr. Je l'ai vu sur d'autres questions qui suggèrent que php exec () pourrait être la voie.
$img = myimage.png;
$text = exec($img,'tesseract');
J'ai téléchargé et installé Tesseract. En utilisant Windows 7 avec une version récente de xampp installé. J'ai un débutant à la connaissance intermédiaire de php. Quelles sont les connaissances que je manque?
Mise à jour J'ai maintenant travailler avec vous dans Powershell et cmd avec
tesseract.exe D:\Documents\Web_Development\Sandbox\php\images\23.png D:\Documents\Web_Development\Sandbox\php\images\23
Mais quand je tente de l'exécuter par exec comme ceci:
<?php
exec('tesseract.exe D:\Documents\Web_Development\Sandbox\images\23.png D:\Documents\Web_Development\Sandbox\images\23');
?>
Je reçois des fenêtres pop-up qui dit que le tesseract.exe a cessé de fonctionner. voici les détails d'erreur s'ils veulent dire quoi que ce soit à qui que ce soit.
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
La solution
Vous devriez essayer de le faire fonctionner sans PHP, qui est, pour l'exécuter à partir des fenêtres ms CLI Interface (MS-DOS). Après cela, vous mettez simplement tout ce que vous avez tapé dans le CLI dans le temps d'exécution PHP, il en cours d'exécution via CLI ou d'un autre mécanismes IPC , éventuellement avec des variables de paramétrage PHP.
Par exemple, si la CLI vous taperez
ipconfig /all
pour obtenir la configuration IP du système, puis en PHP vous souhaitez simplement utiliser:
<?php
echo '<pre>';
echo exec('ipconfig /all');
echo '</pre>';
Retour à votre problème, si la CLI vous auriez émission:
tesseract document.tif result
Alors en PHP que vous feriez
<?php
echo '<pre>';
echo exec('tesseract document.tif result');
echo '</pre>';
C'est à ce sujet. Ce n'est pas spécifique à Tesseract, il fonctionne avec un programme (avec une interface CLI).
Si vous avez besoin d'un plus grand contrôle sur la sortie ou l'entrée (comme il est le cas lorsque l'utilisateur est invité pour l'entrée alors que le programme est en cours d'exécution), vous devez utiliser la famille proc_*()
des fonctions http://ch2.php.net/manual/en/function.exec.php
Bonne chance!