2015-12-24 5 views
0

Я тестирую TesseractOCR на новом веб-сайте.Использование TesseractOCR в Laravel

Я установил новую версию Laravel (5.2.4), установил Tesseract на моем сервере (Debian Jessie) и установил оболочку PHP для Tesseract; 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 я получаю:

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, так что это каталог, которому нужны разрешения. Редактировать: ah, я вижу, это была ваша первая попытка, с/tmp directory. Я явно ошибаюсь. Извинения. – EvilJordan

ответ

0

В конечном итоге я понял, что вы не можете предоставить TesseractOCR ссылку HTML на изображение, это должен быть внутренний путь к файлу.

Как asset() возвращает URL-адрес, я только что заменил его public_path(), и он работал нормально.

В разрешениях или фактическом пакете не было ничего плохого, просто чтобы указать путь к файлу, а не URL.