GAE에서 CloudVisionAPI를 사용하면 놀랍게도 쉬웠습니다 (golang)

7708 단어 5GAECloudVisionAPI
우선 CloudPlatform 관리 화면으로 이동하여 VisionAPI를 활성화합니다.

자격 증명을 추가하려고 하면




과연, GAE, GCE내라면 인증할 필요가 없는가.

Golang이니까 go get해서 import한다.
    "golang.org/x/oauth2/google"
    "golang.org/x/net/context"

GCE, GAE 밖이라면 Json 파일을 읽어 OAuth2의 허가를 부여한 HTTP 클라이언트를 만들지 않으면 안되지만, GCE, GAE 내라면 google.DefaultClient로 좋은 것 같다.
// cはGAEのコンテキスト
client, err := google.DefaultClient(c, vision.CloudPlatformScope)

실제 요청을 보내는 func 전체. (이번에는 LABEL_DETECTION)
func RequestVisionApi(c context.Context,imgData []byte) (string ,error) {
    enc := base64.StdEncoding.EncodeToString(imgData)
    img := &vision.Image{Content: enc}
    feature := &vision.Feature{
        Type:       "LABEL_DETECTION",
        MaxResults: 10,
    }

    req := &vision.AnnotateImageRequest{
        Image:    img,
        Features: []*vision.Feature{feature},
    }
    batch := &vision.BatchAnnotateImagesRequest{
        Requests: []*vision.AnnotateImageRequest{req},
    }

    client, err := google.DefaultClient(c, vision.CloudPlatformScope)
    if err != nil {
        return "", err
    }

    service, err := vision.New(client)

    res, err := service.Images.Annotate(batch).Do()
    if err != nil {
        return "", err
    }

    // てきとーに使いたい形に整形する。
    s := ""
    for _,annotation := range res.Responses[0].LabelAnnotations {
        s = fmt.Sprintf("%s\n%s:%d%",s ,annotation.Description, int(annotation.Score * 100.0))
    }
    s = strings.TrimPrefix(s, "\n")
    return s, nil
}

사용해 보았습니다.



하야리의 LINE Bot에서 사용하면 이런 느낌.


좋아, 카레야.

좋은 웹페이지 즐겨찾기