Как передать изображение в tesseract без сохранения файла на сервер?

Необходимо передать tesserct изображение, без сохранения его на сервер. Использую данный код, который нашёл в документации tesseract-ocr-for-php

$img= base64_decode("любая картинка в формате base64");
require_once ('C:\OpenServer\vendor\autoload.php');
use thiagoalessio\TesseractOCR\TesseractOCR;
ob_start();
imagepng($img, null, 0);
$size = ob_get_length();
$data = ob_get_clean();
file_put_contents('data.jpeg', $data);
$ocr = new TesseractOCR();
$ocr->imageData($data, $size);
$ocr->lang('eng');
$ocr->run();

Однако данный код выдаёт ошибку: Uncaught thiagoalessio\TesseractOCR\UnsuccessfulCommandException: Error! The command did not produce any output. Generated command: "tesseract" - "c:/openserver/userdata/temp\ocr899C.tmp" -l eng Returned message: Tesseract Open Source OCR Engine v5.0.0-alpha.20201127 with Leptonica Error in fopenReadStream: file not found Error in pixRead: image file not found Помогите пожалуйста это справить. Вот ссылка на документацию, откуда брал код: https://github.com/thiagoalessio/tesseract-ocr-for-php#imagedata


Ответы (1 шт):

Автор решения: Даня Белый

Я использовал Imagiсk и всё получилось. Вот код:

$img = base64_decode("любая картинка в формате base64");
$imga = new Imagick();
$imga -> readimageblob($img);
$data = $imga->getImageBlob();
$size = $imga->getImageLength();
require_once ('C:\OpenServer\vendor\autoload.php');
use thiagoalessio\TesseractOCR\TesseractOCR;
file_put_contents('data.jpeg', $data);
$ocr = new TesseractOCR();
$ocr->imageData($data, $size);
$ocr->lang('eng');
echo $ocr->run();
→ Ссылка