2011-01-18 106 views
3

我正在尋找使用Tesseract將大量圖像文件轉換爲文本。Tesseract和Php ocr

我已經看過他們的文檔,但不知道如何與PHP相關以及我的php腳本如何與tesseract ocr進行交互。我在其他問題上看到過提示php exec()可能就是這樣。

$img = myimage.png; 
$text = exec($img,'tesseract'); 

我已經下載並安裝了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'); 
?> 

我從窗口的彈出那說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 

回答

7

你應該努力得到它的工作沒有PHP,也就是從微軟Windows CLI interface(在MS-DOS提示符)運行它。之後,您只需在PHP運行時將您輸入的任何內容放入CLI中,通過CLI或其他一些IPC mechanisms運行它,最後使用PHP變量對其進行參數化。

例如,如果在CLI中,你會打字

ipconfig /all 

得到系統的IP配置,那麼在PHP中你只需使用:

<?php 
echo '<pre>'; 
echo exec('ipconfig /all'); 
echo '</pre>'; 

返回到您的問題,如果在CLI你會發出:

tesseract document.tif result 

然後在PHP中,你會怎麼做

<?php 
echo '<pre>'; 
echo exec('tesseract document.tif result'); 
echo '</pre>'; 

就是這樣。它不是特定於tesseract,它適用於任何程序(使用CLI界面)。

如果你需要輸出更多的控制權,或者輸入(因爲它是當用戶被要求輸入該程序運行時的情況),你應該使用proc_*()家庭的功能從http://ch2.php.net/manual/en/function.exec.php

好運氣!

+0

好的非常感謝。我試圖在ms dos提示符下運行命令而沒有成功。但我現在看到exec如何工作。 – andrew 2011-01-19 00:36:12