如何在任何位置使用 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
执行,那么它可以工作。但我不能将tesseract
与php
一起使用。我已经尝试了许多相同的库和代码。
有人可以帮我解决这个问题吗?
【问题讨论】:
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的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Python 或 Tesseract OCR 从输入图像中检测语言或脚本?
如何使用tesseract -magickimage读取验证码
如何将 Tesseract OCR 库集成到 C++ 程序中