mcpField
A
azure-ai-translation-document-py

azure-ai-translation-document-py

github.com/sickn33文档处理48.7k77 次安装今天更新
代码仓库

关于 azure-ai-translation-document-py

这是 Azure AI Translator 文档翻译服务的 Python 客户端库,面向需要批量翻译文档并保留格式的开发者。它支持多目标语言、异步任务、状态跟踪和术语表,并可处理单份文档。

主要功能

  1. 01批量文档翻译并保留格式
  2. 02为任务设置多个目标语言
  3. 03跟踪任务及单份文档状态
  4. 04取消正在运行的翻译
  5. 05使用术语表约束译文
  6. 06查询支持的格式和语言

适用场景

  1. 01将 Azure Blob Storage 中的文档批量翻译
  2. 02为同一批文档生成多种语言版本
  3. 03检查长时间运行任务中的失败文档
  4. 04使用领域术语表翻译业务文档

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/sickn33/agentic-awesome-skills --skill azure-ai-translation-document-py

安装后在 Claude Code 中输入/azure-ai-translation-document-py确认已加载。

详细介绍

Azure AI Document Translation SDK for Python

Azure AI Translator 文档翻译服务的客户端库,用于在保留格式的同时批量翻译文档。

安装

pip install azure-ai-translation-document

环境变量

AZURE_DOCUMENT_TRANSLATION_ENDPOINT=https://<resource>.cognitiveservices.azure.com
AZURE_DOCUMENT_TRANSLATION_KEY=<your-api-key>  # If using API key

# Storage for source and target documents
AZURE_SOURCE_CONTAINER_URL=https://<storage>.blob.core.windows.net/<container>?<sas>
AZURE_TARGET_CONTAINER_URL=https://<storage>.blob.core.windows.net/<container>?<sas>

身份验证

API 密钥
import os
from azure.ai.translation.document import DocumentTranslationClient
from azure.core.credentials import AzureKeyCredential

endpoint = os.environ["AZURE_DOCUMENT_TRANSLATION_ENDPOINT"]
key = os.environ["AZURE_DOCUMENT_TRANSLATION_KEY"]

client = DocumentTranslationClient(endpoint, AzureKeyCredential(key))
Entra ID(推荐)
from azure.ai.translation.document import DocumentTranslationClient
from azure.identity import DefaultAzureCredential

client = DocumentTranslationClient(
    endpoint=os.environ["AZURE_DOCUMENT_TRANSLATION_ENDPOINT"],
    credential=DefaultAzureCredential()
)

披露与成本边界

翻译会将文档发送到 Azure,并将输出写入所选容器。请确认获准处理的文档范围、目标位置、区域、保留期限和预算。请勿在日志中记录 SAS URL,使用有效期较短且遵循最小权限原则的访问凭据,并分别处理每个文档的失败情况;作业整体完成并不意味着所有文档都已成功处理。SDK/单文档方法以及语言和格式支持均取决于版本:运行代码片段前,请查看当前的软件包文档。

基本文档翻译

from azure.ai.translation.document import DocumentTranslationInput, TranslationTarget

source_url = os.environ["AZURE_SOURCE_CONTAINER_URL"]
target_url = os.environ["AZURE_TARGET_CONTAINER_URL"]

# Start translation job
poller = client.begin_translation(
    inputs=[
        DocumentTranslationInput(
            source_url=source_url,
            targets=[
                TranslationTarget(
                    target_url=target_url,
                    language="es"  # Translate to Spanish
                )
            ]
        )
    ]
)

# Wait for completion
result = poller.result()

print(f"Status: {poller.status()}")
print(f"Documents translated: {poller.details.documents_succeeded_count}")
print(f"Documents failed: {poller.details.documents_failed_count}")

多种目标语言

poller = client.begin_translation(
    inputs=[
        DocumentTranslationInput(
            source_url=source_url,
            targets=[
                TranslationTarget(target_url=target_url_es, language="es"),
                TranslationTarget(target_url=target_url_fr, language="fr"),
                TranslationTarget(target_url=target_url_de, language="de")
            ]
        )
    ]
)

翻译单个文档

from azure.ai.translation.document import SingleDocumentTranslationClient

single_client = SingleDocumentTranslationClient(endpoint, AzureKeyCredential(key))

with open("document.docx", "rb") as f:
    document_content = f.read()

result = single_client.translate(
    body=document_content,
    target_language="es",
    content_type="application/vnd.openxmlformats-officedocument.wordprocessingml.document"
)

# Save translated document
with open("document_es.docx", "wb") as f:
    f.write(result)

检查翻译状态

# Get all translation operations
operations = client.list_translation_statuses()

for op in operations:
    print(f"Operation ID: {op.id}")
    print(f"Status: {op.status}")
    print(f"Created: {op.created_on}")
    print(f"Total documents: {op.documents_total_count}")
    print(f"Succeeded: {op.documents_succeeded_count}")
    print(f"Failed: {op.documents_failed_count}")

列出文档状态

# Get status of individual documents in a job
operation_id = poller.id
document_statuses = client.list_document_statuses(operation_id)

for doc in document_statuses:
    print(f"Document ID: {doc.id}")  # Avoid logging SAS-bearing source URLs.
    print(f"  Status: {doc.status}")
    print(f"  Translated to: {doc.translated_to}")
    if doc.error:
        print(f"  Error: {doc.error.message}")

取消翻译

# Cancel a running translation
client.cancel_translation(operation_id)

使用词汇表

from azure.ai.translation.document import TranslationGlossary

poller = client.begin_translation(
    inputs=[
        DocumentTranslationInput(
            source_url=source_url,
            targets=[
                TranslationTarget(
                    target_url=target_url,
                    language="es",
                    glossaries=[
                        TranslationGlossary(
                            glossary_url="https://<storage>.blob.core.windows.net/glossary/terms.csv?<sas>",
                            file_format="csv"
                        )
                    ]
                )
            ]
        )
    ]
)

支持的文档格式

# Get supported formats
formats = client.get_supported_document_formats()

for fmt in formats:
    print(f"Format: {fmt.format}")
    print(f"  Extensions: {fmt.file_extensions}")
    print(f"  Content types: {fmt.content_types}")

支持的语言

# Get supported languages
languages = client.get_supported_languages()

for lang in languages:
    print(f"Language: {lang.name} ({lang.code})")

异步客户端

from azure.ai.translation.document.aio import DocumentTranslationClient
from azure.identity.aio import DefaultAzureCredential

async def translate_documents():
    async with DocumentTranslationClient(
        endpoint=endpoint,
        credential=DefaultAzureCredential()
    ) as client:
        poller = await client.begin_translation(inputs=[...])
        result = await poller.result()

支持的格式

类别格式
文档DOCX、PDF、PPTX、XLSX、HTML、TXT、RTF
结构化数据CSV、TSV、JSON、XML
本地化XLIFF、XLF、MHTML

存储要求

  • 源容器和目标容器必须使用 Azure Blob Storage
  • 使用具有适当权限的 SAS 令牌:
    • 源:读取、列出
    • 目标:写入、列出

最佳实践

  1. 使用 SAS 令牌,并仅授予所需的最小权限
  2. 使用 poller.status() 监控长时间运行的操作
  3. 遍历文档状态,处理文档级错误
  4. 使用词汇表处理特定领域的术语
  5. 为每种语言分别设置目标容器
  6. 使用异步客户端处理多个并发作业
  7. 提交文档前检查支持的格式

适用场景

当需要执行概述中所述的工作流或操作时,可使用此技能。

限制

  • 仅当任务与上述范围明确匹配时,才使用此技能。
  • 不要将输出视为环境特定验证、测试或专家审查的替代品。
  • 如果缺少必要的输入、权限、安全边界或成功标准,请暂停并要求澄清。

评论

支持 Markdown