Как эффективно обрабатывать ответы клиента Google Lib Vision API?

Я новичок в Google Vision API Client Lib

Я использую Vision API Client Lib для PHP для обнаружения текста в изображениях, это мой код:

<?php
require 'vendor/autoload.php';

use Google\Cloud\Vision\VisionClient;
function object_to_array($object) {
return (array) $object;
}
$vision = new VisionClient(
['keyFile' => json_decode(file_get_contents("smartcity-credentials.json"), true)]
);
$img = file_get_contents('img2.jpg');
$image=$vision->image($img,['DOCUMENT_TEXT_DETECTION']);
$result=$vision->annotate($image);
$res=object_to_array($result);
var_dump($res);
?>

Все, что мне нужно, это использовать ответ в качестве массива для обработки, но $ result возвращает что-то вроде массива объекта / объекта (извините, потому что я не очень разбираюсь в OOP / Object)

Хотя я конвертирую $ result в массив $ res, но если я использую цикл foreach

foreach ($res as $key=>$value){
echo $value;
echo '<br>';
}

Я понял

Исправляемая фатальная ошибка: объект класса Google \ Cloud \ Vision \ Annotation \ Document не может быть преобразован в строку

Как мы можем получить значение (текст обнаружен) в ответе выше для использования?

1

Решение

Вы должны использовать методы fullText () и text () для доступа к обнаруженному тексту, что-то вроде этого:

$document = $annotation->fullText();
$text = $document->text();

Смотрите спецификацию этих классов аннотирование а также Документ.

1

Другие решения

вы не можете использовать $value типа Document как строка с echo,
использование print_r($annotation); чтобы увидеть, что вы даже получите обратно.
этот пример определения текста документа выглядит довольно похоже, обратите внимание на вложенные foreach петли там. также увидеть документация:

use Google\Cloud\Vision\VisionClient;

$vision = new VisionClient();
$imageResource = fopen(__DIR__.'/assets/the-constitution.jpg', 'r');
$image = $vision->image($imageResource, ['DOCUMENT_TEXT_DETECTION']);

$annotation = $vision->annotate($image);
$document = $annotation->fullText();

$info = $document->info();
$pages = $document->pages();
$text = $document->text();

вот еще немного Примеры; в частности detect_document_text.php.

1

По вопросам рекламы [email protected]