2015-12-24 18 views
0

我在新网站上使用TesseractOCR进行试用。在Laravel中使用TesseractOCR

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

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

在我routes.php文件我有:

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

在图像myimage.jpg一个名为imagespublic文件夹内的文件夹中存在。

当我浏览到example.com/test我得到:

ErrorException在TesseractOCR.php行235: 的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(); 
}); 

然而,仅仅给出了同样的错误使用不同的文件路径:

ErrorException在TesseractOCR.php行235: 的file_get_contents (/var/www/tesseract/public/images/1770521095.txt): 未能打开流:没有此文件或目录

我该如何解决这个错误?

+0

确保您的权限设置为组读/写。 – EvilJordan

+0

@EvilJordan为了测试它,我已将'/ tmp /'设置为777权限 - 仍然不起作用。我需要做其他事吗? – James

+0

它试图从/ var/www/tesseract/public/images中提取图像,所以这是需要权限的目录。 编辑:啊,我看到这是你的第一次尝试,用/ tmp目录。我显然是错的。道歉。 – EvilJordan

回答

0

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

由于asset()返回一个URL,我用public_path()替换了它,它工作得很好。

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