Я пробую использовать TesseractOCR на новом сайте.
Я установил новую версию Laravel (5.2.4), установил Tesseract на свой сервер (Debian Jessie) и установил оболочку PHP для Tesseract; тессеракт-OCr-для-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):
не удалось открыть поток: нет такого файла или каталога
Как мне решить эту ошибку?
В конце концов я понял, что вы не можете предоставить TesseractOCR HTML-ссылку на изображение, это должен быть внутренний путь к файлу.
Как asset()
возвращает URL, я просто заменил это на public_path()
и это работало просто отлично.
Там никогда не было ничего плохого с разрешениями или фактическим пакетом, просто вам нужно указать путь к файлу, а не URL.
Других решений пока нет …