【问题标题】:Google Gloud Vision API - Return Output as JSON Object rather than to a GCS fileGoogle Cloud Vision API - 将输出作为 JSON 对象而不是 GCS 文件返回
【发布时间】:2020-09-04 10:41:08
【问题描述】:

我正在为 Node.js 应用程序使用 Cloud Vision API“PDF 到文本”功能。我大部分时间都坚持使用 GCP 文档示例,并在这里和那里进行了一些调整:https://cloud.google.com/vision/docs/pdf

一切正常,但是我希望将文件的内容作为 JSON 对象返回给我,以便我可以将其传递给另一个函数,而不是当前将内容写入 JSON 文件并将其存储的行为在云存储上。

有谁知道我需要如何构造outputConfig 对象以实现此目的?

async function detectPdfText(bucketName, fileName) {
    // Imports the Google Cloud client libraries
    const vision = require('@google-cloud/vision').v1;

    // Creates a client
    const client = new vision.ImageAnnotatorClient({
        keyFilename: './APIKey.json'
    });

    // The directory to store the results
    const outputPrefix = 'json_output'

    const gcsSourceUri = `gs://${bucketName}/${fileName}`;
    const gcsDestinationUri = `gs://${bucketName}/${outputPrefix}/`;

    const inputConfig = {
        // Supported mime_types are: 'application/pdf' and 'image/tiff'
        mimeType: 'application/pdf',
        gcsSource: {
            uri: gcsSourceUri,
        },
    };
    const outputConfig = {
        gcsDestination: {
            uri: gcsDestinationUri,
        },
    };
    const features = [{type: 'DOCUMENT_TEXT_DETECTION'}];
    const request = {
    requests: [
        {
            inputConfig: inputConfig,
            features: features,
            outputConfig: outputConfig,
        },
    ],
    };

    const [operation] = await client.asyncBatchAnnotateFiles(request);
    const [filesResponse] = await operation.promise();
    const destinationUri =
        filesResponse.responses[0].outputConfig.gcsDestination.uri;
    console.log(`Json output for file ${fileName} has been saved to: ${destinationUri}`);
}

module.exports = { detectPdfText };

【问题讨论】:

  • 作为一种解决方法,您可以使用exec() 函数运行命令gsutil cp ${destinationUri} . 在创建后从GCS 获取json 文件
  • 您是否尝试使用 GCS 库将文件加载到代码中?

标签: node.js json google-cloud-platform google-cloud-vision


【解决方案1】:

您正在使用 asyncBatchAnnotateFiles,它只将输出写入 GCS:https://cloud.google.com/vision/docs/reference/rpc/google.cloud.vision.v1#outputconfig。在 GetOperation 调用中没有返回 LRO 的结果的选项。

您可以改为使用 batchAnnotateFiles 并同步获取结果,然后转换为 json。

如果您必须使用 asyncBatchAnnotateFiles,则必须在 LRO 完成后下载 GCS 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    • 2019-02-25
    • 1970-01-01
    相关资源
    最近更新 更多