Google Cloud Vision API. Голанг Как получить API JSON - PullRequest
0 голосов
/ 12 ноября 2018

Я использую Google Cloud Vision API с Go SDK. В некоторых случаях я не хочу использовать структуры Golang для чтения результатов API, я просто хочу получить полный JSON-ответ на вызов API. Например,

// detectDocumentText gets the full document text from the Vision API for an
// image at the given file path.
func detectDocumentTextURI(w io.Writer, file string) error {
        ctx := context.Background()

        client, err := vision.NewImageAnnotatorClient(ctx)
        if err != nil {
                return err
        }

        image := vision.NewImageFromURI(file)
        annotation, err := client.DetectDocumentText(ctx, image, nil)
        if err != nil {
                return err
        }

        if annotation == nil {
                fmt.Fprintln(w, "No text found.")
        } else {
                fmt.Fprintf(w, "API Response %s", ...JSON...)
        }

        return nil
}

Как я могу получить этот JSON из структуры аннотаций? Возможно ли это?

1 Ответ

0 голосов
/ 12 ноября 2018

Что-то конкретно вы ищете в JSON? Вы можете красиво напечатать объект ответа как JSON, если вы попытаетесь выяснить, что возвращается:

json, err := json.MarshalIndent(annotation, "", "  ")
if err != nil {
    log.Fatal(err)
}

fmt.Println(string(json))

Немного сложно получить необработанный ответ JSON от этого вызова, потому что он использует gRPC, а не JSON. Если вы немного последуете за клиентским кодом (он с открытым исходным кодом), вы в конечном итоге получите https://github.com/GoogleCloudPlatform/google-cloud-go/blob/master/vision/apiv1/image_annotator_client.go#L142:

func (c *ImageAnnotatorClient) BatchAnnotateImages(ctx context.Context, req *visionpb.BatchAnnotateImagesRequest, opts ...gax.CallOption) (*visionpb.BatchAnnotateImagesResponse, error) 

Вы можете видеть, как эта функция создает запрос, отправляет его и возвращает ответ (тот же самый протологический ответ, который вы получаете от вызова исходной функции, ограниченный res.FullTextAnnotation). Смотри https://github.com/GoogleCloudPlatform/google-cloud-go/blob/master/vision/apiv1/client.go#L109.

...