Node.js - 使用 Google Cloud Vision API 从 PDF 文件中提取文本的问题
Node.js - Problem to extract text from PDF file using Google Cloud Vision API
我是云环境和一般编程的新手,我正在努力使用 Google Vision API 从位于远程存储桶中的 PDF 文件中提取文本。
我发现很难在文档甚至 Stack Overflow 中获得与此主题相关的有意义的内容。我最接近解决这个问题的是这个问题:
但由于下述原因,它对我不起作用,这就是为什么我要问自己的问题。
问题是:
我正在向指定的 url
发出以下 post 请求
https://vision.googleapis.com/v1/files:asyncBatchAnnotate?key=MY_API_KEY
"requests": [
{
"inputConfig": {
"gcsSource": {
"uri": "gs://BUCKET_NAME/FILE_NAME.pdf"
},
"mimeType": "application/pdf"
},
"features": [
{
"type": "DOCUMENT_TEXT_DETECTION"
}
],
"outputConfig": {
"gcsDestination": {
"uri": "gs://BUCKET_NAME/output/"
},
"batchSize": 1
}
}
]
POST请求成功,之后,根据我发现的,我必须使用我之前收到的响应进行get请求来检查文档文本检测是否完成post 请求。如果完成,它应该在我的存储桶内的文件中写入响应(这就是我在上面的 json 中配置 'output' 的原因)
但是,当我在 url
上发出获取请求时
https://vision.googleapis.com/v1/operations/RESPONSE?key=API_KEY
我收到以下错误:
"error": {
"code": 7,
"message": "Error writing final output to: gs://BUCKET_NAME/output/filename.json"
}
即使有办法解决这个问题来写最终输出,我想知道这是否是从 pdf 中提取数据的最佳方法,制作一个 post 和一个 get 看起来很奇怪,特别是考虑到当你使用相同的API从图像中提取数据时,你只需要发出一个请求
感谢您的帮助。
我认为问题在于您正在为 "asyncBatchAnnotate" 请求使用 API 密钥身份验证。该文档指出您必须使用服务帐户身份验证:
https://cloud.google.com/vision/docs/pdf#authentication
另一个重点是使用的服务帐户必须具有对目标存储桶的写入权限。
发出 POST 请求以提交任务,然后发出 GET 请求以检查状态是长 运行 操作的常见 REST 模式。
http://restalk-patterns.org/long-running-operation-polling.html
我认为图像和 pdf 的 APIs 不同,因为在识别图像时假定操作相对较短,而识别多页 pdf 可能需要很长时间。
我是云环境和一般编程的新手,我正在努力使用 Google Vision API 从位于远程存储桶中的 PDF 文件中提取文本。
我发现很难在文档甚至 Stack Overflow 中获得与此主题相关的有意义的内容。我最接近解决这个问题的是这个问题:
但由于下述原因,它对我不起作用,这就是为什么我要问自己的问题。
问题是:
我正在向指定的 url
发出以下 post 请求 https://vision.googleapis.com/v1/files:asyncBatchAnnotate?key=MY_API_KEY
"requests": [
{
"inputConfig": {
"gcsSource": {
"uri": "gs://BUCKET_NAME/FILE_NAME.pdf"
},
"mimeType": "application/pdf"
},
"features": [
{
"type": "DOCUMENT_TEXT_DETECTION"
}
],
"outputConfig": {
"gcsDestination": {
"uri": "gs://BUCKET_NAME/output/"
},
"batchSize": 1
}
}
]
POST请求成功,之后,根据我发现的,我必须使用我之前收到的响应进行get请求来检查文档文本检测是否完成post 请求。如果完成,它应该在我的存储桶内的文件中写入响应(这就是我在上面的 json 中配置 'output' 的原因)
但是,当我在 url
上发出获取请求时 https://vision.googleapis.com/v1/operations/RESPONSE?key=API_KEY
我收到以下错误:
"error": {
"code": 7,
"message": "Error writing final output to: gs://BUCKET_NAME/output/filename.json"
}
即使有办法解决这个问题来写最终输出,我想知道这是否是从 pdf 中提取数据的最佳方法,制作一个 post 和一个 get 看起来很奇怪,特别是考虑到当你使用相同的API从图像中提取数据时,你只需要发出一个请求
感谢您的帮助。
我认为问题在于您正在为 "asyncBatchAnnotate" 请求使用 API 密钥身份验证。该文档指出您必须使用服务帐户身份验证: https://cloud.google.com/vision/docs/pdf#authentication
另一个重点是使用的服务帐户必须具有对目标存储桶的写入权限。
发出 POST 请求以提交任务,然后发出 GET 请求以检查状态是长 运行 操作的常见 REST 模式。 http://restalk-patterns.org/long-running-operation-polling.html
我认为图像和 pdf 的 APIs 不同,因为在识别图像时假定操作相对较短,而识别多页 pdf 可能需要很长时间。