2011-01-18 107 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