我希望使用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

祝你好运!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top