如何在任何位置使用 tesseract ocr 和 php

Posted

技术标签:

【中文标题】如何在任何位置使用 tesseract ocr 和 php【英文标题】:How to use tesseract ocr with php from any location 【发布时间】:2018-08-09 11:51:00 【问题描述】:

我在C:\Program Files (x86)\Tesseract-OCR中安装了tesseract。在命令提示符下,如果我使用tesseract 123.png sample 执行,那么它可以工作。但我不能将tesseractphp 一起使用。我已经尝试了许多相同的库和代码。

有人可以帮我解决这个问题吗?

【问题讨论】:

tesseract 123.png 示例命令仅适用于通过命令提示符安装的 tesseract 文件夹 PHP 的错误是什么?在 PHP 中,一个命令可能会失败的方式有上百万种。提供您尝试过的代码的证明。如果您想要一个好的答案而不是猜测,请关注MCVE.. 没有显示错误。我使用的代码是if(isset($_POST['submit'])) require_once dirname(__FILE__).'/TesseractOCR/TesseractOCR.php'; $file = dirname(__FILE__). '/upload/' . $_FILES['image']['name']; move_uploaded_file($_FILES['image']['tmp_name'], $file); $obj = new TesseractOCR($file); $obj->setTempDir(dirname(__FILE__).'/temp'); $text = $obj->recognize(); Github链接:github.com/mepawan/phpocr-demo 【参考方案1】:

如果你需要在 php 代码中使用 Tesseract,方法是使用 http://php.net/manual/en/function.exec.php 或 http://php.net/manual/en/function.shell-exec.php 函数,它们都允许你在“命令提示符”中执行 bash 代码,但你需要更多注意使用,这会带来几个安全问题,因为客户端输入的数据有时是恶意的。希望对您有所帮助!

一个工作示例:

exec("tesseract C:/your/path/file.png C:/output/file");    

另一件事,在 C:/output/file 部分,你不需要将 .txt 放在输出路径中,tesseract 总是将输出作为 .txt 文件扩展名。

如果“环境变量”上不存在 Tesseract,解决方案是传递完整的可执行文件路径:

shell_exec('"C:/Program Files (x86)/Tesseract-OCR/tesseract.exe" C:/path/to/image C:/output/path/')

【讨论】:

你能告诉我如何将这个 exec() 用于 tesseract 服务。我已经尝试了 exec() 的不同组合 我试过error_reporting(E_ALL); ini_set('display_errors', 1); exec("tesseract E:/Documents/123.png E:/Documents/outtext"); 不幸的是它不起作用,也没有显示任何错误。我还需要做什么才能从任何位置访问 tesseract? 使用你的命令,tesseract 将在执行后创建一个 E:/Documents/outtext.txt 文件。什么都没有创建?如果不是,则问题可能是因为 tesseract 未定义为“Windows 上的环境路径”,这使得可以通过 cmd 在任何目录中使用 tesseract 命令,是否在环境路径中定义了 Tesseract? 为了测试他是否启用,在cmd中打开任意目录并放入“tesseract”并执行它,如果windows识别该命令,则一切正常,否则该命令不在“环境路径”中。 该文件夹中没有创建任何内容。我在环境变量中添加了路径C:\Program Files (x86)\Tesseract-OCR。这个对吗?

以上是关于如何在任何位置使用 tesseract ocr 和 php的主要内容,如果未能解决你的问题,请参考以下文章

如何提高tesseract的OCR结果

如何使用 Python 或 Tesseract OCR 从输入图像中检测语言或脚本?

如何使用tesseract -magickimage读取验证码

如何将 Tesseract OCR 库集成到 C++ 程序中

如何使用 openCV 或 OCR tesseract 从图像中提取文本? [复制]

使用 Qt 5.8 构建 Tesseract OCR