题
我希望使用Tesseract将大量图像文件转换为文本。
我已经查看了他们的文档,但不知道该文档与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
但是,当我尝试通过这样的执行操作运行时:
<?php
exec('tesseract.exe D:\Documents\Web_Development\Sandbox\images\23.png D:\Documents\Web_Development\Sandbox\images\23');
?>
我从Windows弹出了一个弹出窗口,上面写着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
解决方案
您应该尝试在没有PHP的情况下使其工作,也就是说,从MS Windows运行它 CLI接口 (MS-DOS提示)。之后,您只需在PHP运行时放入CLI中输入的任何内容,通过CLI或其他一些 IPC机制, ,最终用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
祝你好运!
不隶属于 StackOverflow