gpt4 book ai didi

python - 来自 Google Vision API OCR 的响应 400,带有指定图像的 base64 字符串

转载 作者:行者123 更新时间:2023-12-02 11:32:06 25 4
gpt4 key购买 nike

我已阅读 How to use the Google Vision API for text detection from base64 encoded image?但这根本没有帮助。 Cloud client library这对我来说是不可取的,因为我在 OCR 之前和期间进行了许多图像处理(例如旋转、裁剪、调整大小等)。将它们保存为新文件并重新读取它们作为 Google Vision API 的输入,效率相当低。

因此,我直接查看了发布请求的文档:

这里是导致失败的最少代码:

import base64
import requests
import io

# Read the image file and transform it into a base64 string
with io.open("photos/foo.jpg", 'rb') as image_file:
image = image_file.read()
content = base64.b64encode(image)

# Prepare the data for request
# Format copied from https://cloud.google.com/vision/docs/ocr
sending_request = {
"requests": [
{
"image": {
"content": content
},
"features": [
{
"type": "TEXT_DETECTION"
}
]
}
]
}

# Send the request and get the response
# Format copied from https://cloud.google.com/vision/docs/using-python
response = requests.post(
url='https://vision.googleapis.com/v1/images:annotate?key={}'.format(API_KEY),
data=sending_request,
headers={'Content-Type': 'application/json'}
)

# Then get 400 code
response
# <Response [400]>
print(response.text)
{
"error": {
"code": 400,
"message": "Invalid JSON payload received. Unexpected token.\nrequests=image&reque\n^",
"status": "INVALID_ARGUMENT"
}
}

我转到控制台,发现 google.cloud.vision.v1.ImageAnnotator.BatchAnnotateImages 确实存在请求错误,但我不知道发生了什么。是不是因为requests.post中发送的data格式错误?

最佳答案

错误,“message”:“收到无效的 JSON 有效负载。意外的 token 。\nrequests=image&reque\n^”, 表明您正在传递非 json 格式,该格式必须是json。因此,您应该将其转换为 json 并将其传递给请求,如下所示。

response = requests.post(
url='https://vision.googleapis.com/v1/images:annotate?key={}'.format(API_KEY),
# import json module
# dumps the object to JSON
data=json.dumps(sending_request),
headers={'Content-Type': 'application/json'}

它将触发 typeError: Object of type 'bytes' is not JSON Serialized 在 json.dumps([sending_request]) 行,因为您没有解码 b64encode 图像。因此,首先执行此操作并发送请求

content = base64.b64encode(image).decode('UTF-8')

关于python - 来自 Google Vision API OCR 的响应 400,带有指定图像的 base64 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49918950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com