我希望使用Tesseract将大量图像文件转换为文本。
我查看了他们的文档,但不知道这与PHP的关系以及我的php脚本如何与tesseract ocr交互。我已经看到其他问题表明php exec()可能就是这样。
$img = myimage.png;
$text = exec($img,'tesseract');
我已经下载并安装了tesseract。 使用安装了最新版xampp的Windows 7。 我有初学者对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');
?>
我从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
答案 0 :(得分:7)
你应该尝试让它在没有PHP的情况下工作,也就是说,从ms windows CLI interface(ms-dos提示符)运行它。之后,您只需将您在CLI中输入的内容放入PHP运行时,通过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_*()
函数系列{{1} }}