我在使用 Python 中的 azure.ai.translation.document 库时遇到问题。我已经在 Azure 中设置了翻译服务以及带有两个容器的 Blob 存储。我已使用“用户委托密钥”创建了 SAS 连接。一种用于源(读取/列表),一种用于目标(写入/列表)。
例如
我尝试运行 Python 程序,但源 blob 中的文件未转换并保存到目标 blob。| ||我收到此错误:
我使用此示例:
azure.core.exceptions.HttpResponseError: (InvalidDocumentAccessLevel): Cannot access source document location with the current permissions.
https://learn.microsoft.com/en-us/azure/cognitive-services/translator/document-translation/client- sdks?tabs=python 我在企业环境中的 Windows 中使用 Thonny(因为我仍在尝试学习 Python)。我们的云代理可能出了问题。
import os from azure.core.credentials import AzureKeyCredential from azure.ai.translation.document import DocumentTranslationClient
key = "<your-key>" endpoint = "<your-custom-endpoint>" sourceUrl = "<your-container-sourceUrl>" targetUrl = "<your-container-targetUrl>"
client = DocumentTranslationClient(endpoint, AzureKeyCredential(key))
poller = client.begin_translation(sourceUrl, targetUrl, "fr")
result = poller.result()
print("Status: {}".format(poller.status()))
print("Created on: {}".format(poller.details.created_on))
print("Last updated on: {}".format(poller.details.last_updated_on))
print("Total number of translations on documents: {}".format(poller.details.documents_total_count))
print("\nOf total documents...")
print("{} failed".format(poller.details.documents_failed_count))
print("{} succeeded".format(poller.details.documents_succeeded_count))
for document in result:
print("Document ID: {}".format(document.id))
print("Document status: {}".format(document.status))
if document.status == "Succeeded":
print("Source document location: {}".format(document.source_document_url))
print("Translated document location: {}".format(document.translated_document_url))
print("Translated to language: {}\n".format(document.translated_to))
else:
print("Error Code: {}, Message: {}\n".format(document.error.code, document.error.message))
谢谢
Loz
Loz
出现“使用当前权限无法访问源文档位置”错误,表明你的 Python 应用程序无法使用你提供的 SAS URL 访问源 Blob 存储容器。以下是解决此问题需检查的事项:
1. 验证 SAS URL 权限:
- 读取和列出权限: 请确保你的源 Blob 存储 SAS URL 拥有对该容器的“读取”和“列出”权限。如果没有这些权限,文档翻译服务将无法访问和列出要翻译的文档。
- 容器级别或对象级别: 确认你的 SAS URL 是在容器级别还是对象级别生成的。容器级别的 SAS URL 将允许访问该容器中的所有 Blob,而对象级别的 SAS URL 将仅允许访问特定的 Blob。请确保你的 SAS URL 与你的需求一致。
- 到期时间: 检查 SAS URL 是否已过期。过期了的 URL 将无法再访问你的 Blob 存储。
2. 验证 SAS URL 格式:
- 正确的格式: 请确保你的 SAS URL 格式正确,并且包含所有必需的参数,如版本、签名、权限、服务、资源类型等。
- URL 编码: 确保 SAS URL 中的任何特殊字符都经过了正确的 URL 编码。
3. 验证网络连接:
- 云代理设置: 由于你提到了云代理,请确保代理设置允许你的应用程序连接到 Azure Blob 存储和 Azure 翻译服务。你可能需要配置代理例外或使用代理身份验证。
- 防火墙规则: 检查是否存在任何阻止应用程序访问 Azure Blob 存储和 Azure 翻译服务的防火墙规则。
4. 代码和库版本:
-
最新版本:
请确保你使用的是 azure.ai.translation.document 库的最新版本。你可以使用
pip install --upgrade azure-ai-translation-document
来更新你的库。 -
代码:
仔细检查你的代码,确保你正确地传递了 SAS URL 到
begin_translation()
方法中。确认你的源和目标 URL 都指向了正确的容器。
调试技巧:
- 打印 SAS URL: 在代码中打印你的 SAS URL,并确保它符合预期格式。
- 手动测试 SAS URL: 尝试使用浏览器或工具(如 Azure Storage Explorer)使用 SAS URL 访问你的 Blob 存储容器。这可以帮助你确定问题是出在 SAS URL 本身还是你的应用程序代码上。
- 启用日志记录: 启用 Azure 翻译服务的日志记录以获取有关错误的更多详细信息。
通过仔细检查这些方面并进行必要的调整,你应该能够解决“使用当前权限无法访问源文档位置”错误,并使你的文档翻译应用程序按预期工作。
标签:python,azure,machine-translation From: 74303808