Tesseract and Php ocr

4

我希望使用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已停止工作。以下是错误详细信息,如果有人能理解,请告知。 ```html

我收到了来自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
1个回答

7
你应该尝试在没有PHP的情况下运行它,也就是从ms windows的CLI界面(即ms-dos提示符)中运行它。之后,你只需将在CLI中键入的任何内容放入PHP运行时中,通过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接口的程序。

如果您需要更多控制输出或输入(例如在程序运行时要求用户输入),则应使用http://ch2.php.net/manual/en/function.exec.php中的proc_*()函数系列。

祝好运!


好的,非常感谢。我试图在 MS-DOS 命令提示符下运行命令,但没有成功。但是我现在知道了 exec 的工作原理。 - andrew
我尝试运行命令“tesseract filename.png filename”,但出现了“无法创建输出文件”的错误。实际上,我并不想创建输出文件,我只是希望返回文本。我需要一个好的教程,展示如何在shell中使用tesseract。我只在MS-DOS中做过一点点,所以我非常不确定该如何处理。 - andrew
很高兴能帮助你,但不幸的是我对tesseract没有任何经验。无论如何,这已经不再是一个编程/PHP问题了,而只是关于使用手头的程序。 - Flavius
这是否是在Superuser上发布的问题? - andrew
1
鉴于我是免费提供帮助的,就像其他人一样,我希望至少能得到这个“奖励”,作为对 SO 工作方式的尊重的标志。很简单 :P - Flavius
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接