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
È stato utile?

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!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top