我已将一些图像上传到 azure blob 容器,以便我的 azure ocr api 读取图像并发回输出。
我已使用 Azure 容器检索 blob 列表
blob_service.list_blobs().
现在将每个检索到的 blob 提供给共享访问方法
generate_blob_shared_access_signature(container_name='ocr-images',blob_name=blob.name,permission=PublicAccess.OFF,expiry='se=2015-04-30T02%3A23%3A26Z',start='st=2015-04-29T22%3A18%3A26Z')
共享访问方法的输出是一个 SAS token ,然后将其提供给
blob_service.make_blob_url(container_name='ocr-images',blob_name=blob.name, sas_token=sas)
用于为每个图像生成 url
传递到 Azure ocr api 时生成的 URL 显示错误
requests.exceptions.HTTPError: 400 Client Error: Bad Request for url:https://westeurope.api.cognitive.microsoft.com/vision/v2.0/ocr?language=unk&detectOrientation=false
但是当从 azure 门户手动生成 url 时,它可以正常工作。有人可以帮我解决这个问题吗?
最佳答案
您收到此错误是因为您错误地使用了 generate_blob_shared_access_signature
方法。
您传递给此方法的值存在许多问题。
对于权限
,您需要提供 BlobPermissions
的可能值之一。假设您想要读取 blob 内容,我建议您使用 BlobPermissions.READ
权限。
您的开始日期和到期日期均已过去。此外,您只需指定日期值即可,不包含 st=
和 se=
。
请尝试使用以下代码:
generate_blob_shared_access_signature(container_name='ocr-images',blob_name=blob.name,permission=BlobPermissions.READ,expiry='2019-04-09',start='2019-04-08')
关于python - sas生成的blob url向azure ocr api发送错误请求400,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55576023/