Domanda
Cerco di convertire un gran numero di file di immagini in testo usando Tesseract.
Ho guardato la loro documentazione, ma non hanno idea di come che si riferisce a PHP e come il mio script php interagirà con Tesseract OCR. Ho visto su altre questioni che suggeriscono che exec () di PHP potrebbe essere il modo.
$img = myimage.png;
$text = exec($img,'tesseract');
Ho scaricato e installato Tesseract. Utilizzando Windows 7 con una versione recente di XAMPP installato. Ho un principiante di conoscenza intermedia della php. Quali conoscenze mi manca?
Aggiorna Ora ce l'ha a lavorare con in PowerShell e cmd con
tesseract.exe D:\Documents\Web_Development\Sandbox\php\images\23.png D:\Documents\Web_Development\Sandbox\php\images\23
ma quando provo a farlo funzionare attraverso exec in questo modo:
<?php
exec('tesseract.exe D:\Documents\Web_Development\Sandbox\images\23.png D:\Documents\Web_Development\Sandbox\images\23');
?>
ho un popup dalle finestre che dice che il tesseract.exe ha smesso di funzionare. ecco i dettagli di errore se vogliono dire niente a nessuno.
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
Soluzione
Si dovrebbe cercare di farlo funzionare senza PHP, che è, per eseguirlo dalle finestre ms CLI interfaccia (MS-DOS di prompt). Dopo di che, è sufficiente mettere tutto ciò che hai digitato nella CLI nel runtime di PHP, eseguirlo tramite CLI o qualche altro meccanismi IPC , eventualmente parametrizzazione con variabili PHP.
Per esempio, se nella CLI si sarebbe digitazione
ipconfig /all
per ottenere la configurazione IP del sistema, allora in PHP si sarebbe sufficiente utilizzare:
<?php
echo '<pre>';
echo exec('ipconfig /all');
echo '</pre>';
Torna al tuo problema, se nella CLI si sarebbe emissione:
tesseract document.tif result
Poi in PHP che faresti
<?php
echo '<pre>';
echo exec('tesseract document.tif result');
echo '</pre>';
Questo è tutto. Non è specifico per tesseract, funziona con qualsiasi programma (con interfaccia CLI).
Se avete bisogno di più controllo sul risultato, o l'ingresso (come è il caso in cui l'utente viene chiesto per l'input, mentre il programma è in esecuzione), è necessario utilizzare la famiglia proc_*()
di funzioni da http://ch2.php.net/manual/en/function.exec.php
In bocca al lupo!