我是Google Vision API客户端库的新手
我正在使用Vision API Client Lib for 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 /对象了解不多)
尽管我将$ result转换为数组$ res,但是如果我使用foreach循环
foreach ($res as $key=>$value){
echo $value;
echo '<br>';
}
我明白了
可捕获的致命错误:Google \ Cloud \ Vision \ Annotation \ Document类的对象无法转换为字符串
我们如何在上面的响应中获得使用价值(检测到文本)?
答案 0 :(得分:3)
您应该使用fullText()和text()方法来访问检测到的文本,如下所示:
Scaffold(
appBar: AppBar(title: Text(title)),
body: Center(child: Text('My Page!')),
drawer: Drawer(
// Add a ListView to the drawer. This ensures the user can scroll
// through the options in the Drawer if there isn't enough vertical
// space to fit everything.
child: ListView(
// Important: Remove any padding from the ListView.
// padding: EdgeInsets.zero,
children: <Widget>[
DrawerHeader(
child: Text('Drawer Header'),
decoration: BoxDecoration(
color: Colors.blue,
),
),
ExpansionTile(
title: Text('Item0'),
children: <Widget>[
Padding(
padding: const EdgeInsets.all(8.0),
child: Text('subHeading1'),
),
Text('subheading2')
],
),
ListTile(
title: Text('Item 1'),
onTap: () {
// Update the state of the app
// ...
// Then close the drawer
Navigator.pop(context);
},
),
ListTile(
title: Text('Item 2'),
onTap: () {
// Update the state of the app
// ...
// Then close the drawer
Navigator.pop(context);
},
),
],
),
),
);
请参阅这些类Annotation和Document的规范。
答案 1 :(得分:2)
您不能将$value
类型的Document
用作echo
的字符串。
使用print_r($annotation);
查看您的退货。
这个document text detection example看起来很相似,请注意那里的嵌套foreach
循环。另请参见documentation:
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();
这里还有更多examples;尤其是detect_document_text.php。