在Laravel中使用TesseractOCR

时间:2015-12-24 04:28:25

标签: php laravel tesseract laravel-5.2

我正在尝试在新网站上使用TesseractOCR。

我已经安装了新版本的Laravel(5.2.4),在我的服务器上安装了Tesseract(Debian Jessie),并为Tesseract安装了一个PHP包装器; tesseract-ocr-for-php

我已按照所有设置说明操作并在应用程序上安装了该软件包。

在我的routes.php文件中,我有:

Route::get('/test', function () {
$tesseract = new TesseractOCR(asset('images/myimage.jpg'));
echo $tesseract->recognize();
});

myimage.jpg文件夹中名为images的文件夹中存在图像public

当我导航到example.com/test时,我得到了:

  

TesseractOCR.php第235行中的ErrorException:   file_get_contents(/tmp/75176598.txt):无法打开流:没有这样的   文件或目录

根据readme.md,您可以使用$tesseract->setTempDir('./my-temp-dir');解决该问题。

因此我尝试将routes.php文件更改为:

Route::get('/test', function () {
$tesseract = new TesseractOCR(asset('images/myimage.jpg'));
$tesseract->setTempDir('/var/www/tesseract/public/images');
echo $tesseract->recognize();
});

但是,只是在不同的文件路径中给出了相同的错误:

  

TesseractOCR.php第235行中的ErrorException:   的file_get_contents(/var/www/tesseract/public/images/1770521095.txt):   无法打开流:没有这样的文件或目录

如何解决此错误?

1 个答案:

答案 0 :(得分:1)

我最终发现你不能为TesseractOCR提供一个指向图像的HTML链接,它需要是一个内部文件路径。

asset()返回一个网址时,我只是将其替换为public_path(),并且效果很好。

权限或实际包没有任何问题,只需要提供文件路径而不是URL。