Google Gloud Vision API-将输出返回为JSON对象,而不是GCS文件



我正在使用Cloud Vision API";"PDF转文本";Node.js应用程序的函数。我主要停留在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 };

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

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

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

相关内容

最新更新