Frage
Ich freue mich auf eine große Anzahl von Bilddateien in Text mit Tesseract zu konvertieren.
Ich habe in ihrer Dokumentation gesucht, aber haben nicht Ahnung, wie das bezieht sich auf PHP und wie mein PHP-Skript wird interact mit Tesseract OCR. Ich habe auf andere Fragen gesehen, dass PHP exec vorschlagen () könnte der Weg sein.
$img = myimage.png;
$text = exec($img,'tesseract');
Ich habe heruntergeladen und installiert Tesserakts. Mit Windows 7 mit einer aktuellen Version von XAMPP installiert. Ich habe einen Anfänger bis sehr gute Kenntnisse von PHP. Welches Wissen bin ich dabei?
Update Ich habe jetzt arbeitet sie mit in Powershell und cmd mit
tesseract.exe D:\Documents\Web_Development\Sandbox\php\images\23.png D:\Documents\Web_Development\Sandbox\php\images\23
Aber wenn ich versuche es durch exec wie folgt ausgeführt werden:
<?php
exec('tesseract.exe D:\Documents\Web_Development\Sandbox\images\23.png D:\Documents\Web_Development\Sandbox\images\23');
?>
ich ein Pop-up aus den Fenstern erhalten, sagt die tesseract.exe Arbeits gestoppt hat. hier sind die Fehlerdetails, wenn sie jemandem etwas bedeuten.
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
Lösung
Sie sollten versuchen, es ohne PHP arbeiten zu lassen, das heißt, es von dem MS Windows zu laufen CLI-Schnittstelle (die MS-DOS-Eingabeaufforderung). Danach, einfach alles, was Sie setzen Sie in der CLI in der PHP-Laufzeit eingegeben haben, es über CLI oder einem anderen IPC-Mechanismen , schließlich es mit PHP-Variablen parametrieren.
Wenn zum Beispiel in der CLI würden Sie tippen
ipconfig /all
die IP-Konfiguration des Systems erhalten, dann in PHP würden Sie einfach verwenden:
<?php
echo '<pre>';
echo exec('ipconfig /all');
echo '</pre>';
Zurück zu Ihrem Problem, wenn in der CLI Sie die Ausgabe würde:
tesseract document.tif result
Dann in PHP würden Sie tun
<?php
echo '<pre>';
echo exec('tesseract document.tif result');
echo '</pre>';
Das ist es. Es ist nicht spezifisch für tesseract, es funktioniert mit jedem Programm (mit einer CLI-Schnittstelle).
Wenn Sie mehr Kontrolle über die Ausgabe benötigen, oder den Eingang (wie es der Fall ist, wenn der Benutzer zur Eingabe aufgefordert wird, während das Programm ausgeführt wird), sollten Sie die proc_*()
Familie von Funktionen aus verwenden http://ch2.php.net/manual/en/function.exec.php
Viel Glück!