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 已停止工作。如果它们对任何人都意味着什么,这里是错误详细信息。

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
4

1 回答 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/manualproc_*()中的函数系列/en/function.exec.php

祝你好运!

于 2011-01-19T00:27:01.120 回答