将Python转换为PHP - GCP授权凭证

时间:2018-05-02 10:51:02

标签: php python google-cloud-platform

我正在使用GCP Cloud Vision API和Python从图像中检索一些信息。具体来说,我正在向此API发送产品照片,并检索与其相关的网络实体;其中一个几乎总是品牌。

我完成这项工作的基本Python脚本如下:

import  io
from google.cloud import vision
from google.cloud.vision import types
import os
import cv2
import numpy as np

os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "/Users/User/PycharmProjects/Project_name.json"

def detect_text(file):

    client = vision.ImageAnnotatorClient()

    with io.open(file, 'rb') as image_file:
        content = image_file.read()

    image = types.Image(content=content)
    web_detection = client.web_detection(image=image).web_detection
    print(web_detection)

file_name = "/Users/User/Desktop/Image.jpg"
img = cv2.imread(file_name)
detect_text(file_name)

Project_name.json文件包含一些授权凭据,以便我可以访问Google Cloud API客户端。

我想用PHP做同样的事情。因此我到目前为止编写了以下PHP脚本:

<?php

namespace Google\Cloud\Samples\Vision;
use Google\Cloud\Vision\V1\ImageAnnotatorClient;

function detect_web($path)
{
    $imageAnnotator = new ImageAnnotatorClient();

    $image = file_get_contents($path);
    $response = $imageAnnotator->webDetection($image);
    $web = $response->getWebDetection();

    print($web);
}

$path = '/Users/User/Desktop/Image.jpg';
detect_web($path);

?>

但是当我运行这个时,我收到以下错误:

Fatal error: Uncaught Error: Class 'Google\Cloud\Vision\V1\ImageAnnotatorClient' not found in /opt/lampp/htdocs/index.php:12 Stack trace: #0 /opt/lampp/htdocs/index.php(26): Google\Cloud\Samples\Vision\detect_web('/Users/User...') #1 {main} thrown in /opt/lampp/htdocs/index.php on line 12

显然,出现此错误是因为(首先)我没有像上面的Python(os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="/Users/User/PycharmProjects/Project_name.json")那样提供Google授权凭证。

如何获取相应的Google库并通过我的PHP脚本访问它以获得与我的Python脚本完全相同的结果?

1 个答案:

答案 0 :(得分:0)

您可以create a service account并选择JSON作为验证yo Cloud Vision API的密钥类型。提供了设置身份验证的步骤here。获得JSON密钥文件后,可以使用指向JSON密钥文件的“export GOOGLE_APPLICATION_CREDENTIALS”命令设置环境变量。您可以将客户端库的PHP version用于Cloud Vision API。此处还有PHP API Reference documentation以获得更多帮助。