Compartilhar via


Comece: SDKs para tradução de documentos do Translator

A tradução de documentos é um recurso baseado em nuvem do serviço tradutor do Azure que traduz documentos inteiros de forma assíncrona em idiomas compatíveis e em vários formatos de arquivo. Neste início rápido, aprenda a usar a tradução de documento com uma linguagem de programação de sua escolha para converter um documento de origem em um idioma de destino, preservando a estrutura e a formatação de texto.

Importante

  • Atualmente, a tradução de documentos tem suporte apenas no recurso do Tradutor do Azure (serviço único) e não está incluída no recurso Ferramentas de Fundação (vários serviços).
  • Há suporte para tradução de documentos em camadas pagas. O Language Studio tem suporte nas camadas de instância S1 ou D3. Sugerimos que você selecione Standard S1 para experimentar a tradução de documento. Consultepreços das Ferramentas da Foundry — Tradutor.
  • As versões de visualização pública de tradução de documentos fornecem acesso antecipado aos recursos que estão em desenvolvimento ativo. Os recursos, abordagens e processos podem ser alterados antes do lançamento em Disponibilidade Geral (GA), com base no feedback de usuários.
  • A versão prévia pública das bibliotecas de clientes de tradução de documentos tem como padrão a versão da API REST 2024-05-01.

Pré-requisitos

Para começar, você precisa do seguinte:

  • Uma conta do Azure ativa. Se você não tem uma, crie uma conta gratuita.

  • Um recurso do Tradutor do Azure de serviço único (não um recurso do Microsoft Foundry de vários serviços). Se você estiver planejando usar o recurso de tradução de documento com autorização de identidade gerenciada, escolha uma região geográfica, como Leste dos EUA. Selecione o Plano de Serviço Padrão S1 ou os Planos de Desconto por Volume C2, C3, C4 ou D3.

    • Após implantar o recurso, selecione Ir para o recurso para recuperar a chave e o ponto de extremidade.

    • Você precisa da chave e do ponto de extremidade do recurso para conectar seu aplicativo ao Tradutor do Azure. Você vai colar a chave e o ponto de extremidade no código mais adiante no guia de início rápido. Você pode encontrar esses valores na página Chaves e Endpoint do portal do Azure.

      Captura de tela para registrar a chave de tradução e a localização do ponto de extremidade no portal Azure.

  • Uma conta de Armazenamento de Blobs do Azure. Você criará contêineres em sua conta de armazenamento de blobs do Azure para os arquivos de origem e destino:

    • Contêiner de origem. Esse contêiner é onde você carrega os arquivos para tradução (obrigatório).
    • Contêiner de destino. Esse contêiner é o local em que os arquivos traduzidos são armazenados (obrigatório).

Autorização de contêiner de armazenamento

Você pode escolher uma das opções a seguir para autorizar o acesso ao recurso do Tradutor do Azure.

✔️Identidade Gerenciada. Uma identidade gerenciada é uma entidade de serviço que cria uma identidade do Microsoft Entra e permissões específicas para um recurso gerenciado do Azure. As identidades gerenciadas permitem que você execute seu aplicativo tradutor do Azure sem precisar inserir credenciais em seu código. Identidades gerenciadas são uma forma mais segura de conceder acesso aos dados de armazenamento e substituem a necessidade de incluir tokens de assinatura de acesso compartilhado (SAS) com suas URLs de origem e destino.

Para saber mais, confiraIdentidades gerenciadas para tradução de Documentos.

Captura de tela do fluxo de identidade gerenciada (RBAC).

✔️Uma SAS (Assinatura de Acesso Compartilhado). Uma assinatura de acesso compartilhado é uma URL que concede acesso restrito por um período de tempo especificado ao tradutor. Para usar esse método, você precisa criar tokens de SAS (Assinatura de Acesso Compartilhado) para seus contêineres de origem e de destino. O sourceUrl e o targetUrl devem incluir um token SAS (Assinatura de Acesso Compartilhado), anexado como uma cadeia de caracteres de consulta. O token pode ser atribuído ao contêiner ou a blobs específicos.

  • O contêiner ou o blob de origem deve ter acesso de leitura e lista designado.
  • O contêiner ou blob de destino deve ter acesso de gravação e lista designados.

Para saber mais, confiraCriar tokens SAS.

Captura de tela de um URI de recurso com um token SAS.

Crie seu aplicativo

Há várias ferramentas disponíveis para criar, criar e executar aplicativos C#/.NET de Tradução. Aqui, orientamos você pelo uso da CLI (interface de linha de comando) ou do Visual Studio. Selecione uma das seguintes guias para começar:

Configurar o seu projeto

Em uma janela de console (como cmd, PowerShell ou Bash), use o comando dotnet new para criar um novo aplicativo do console com o nome batch-document-translation. Esse comando cria um projeto simples em C# do tipo "Olá, Mundo" com um arquivo de origem único: Program.cs.

dotnet new console -n batch-document-translation

Altere o diretório para a pasta do aplicativo recém-criado. Crie seu aplicativo com o seguinte comando:

dotnet build

A saída de compilação não deve conter nenhum aviso ou erro.

...
Build succeeded.
 0 Warning(s)
 0 Error(s)
...

Instalar a biblioteca de clientes

No diretório do aplicativo, instale a biblioteca de clientes de tradução de documento para .NET:

dotnet add package Azure.AI.Translation.Document --version 2.0.0-beta

Traduzir documentos de forma assíncrona

  1. Neste projeto, você precisa de um documento de origem carregado no contêiner de origem. Você pode baixar nosso documento de exemplo de tradução de documento para este início rápido. O idioma de origem é o inglês.

  2. No diretório do projeto, abra o arquivo Program.cs no IDE ou no editor de sua preferência. Exclua o código existente, incluindo a linha Console.WriteLine("Hello World!").

  3. Na classe Programa.cs do aplicativo, crie variáveis para a chave e o ponto de extremidade personalizado. Para obter mais informações, confiraRecuperar sua chave e o ponto de extremidade de domínio personalizado.

    private static readonly string endpoint = "<your-document-translation-endpoint>";
    private static readonly string key = "<your-key>";
    
  4. Para iniciar uma operação de tradução para um ou mais documentos em um só contêiner de blob, chame o método StartTranslationAsync.

  5. Para chamar StartTranslationAsync, inicialize um objeto DocumentTranslationInput que contém os parâmetrossourceUri. targetUri e targetLanguageCode:

    • Para autorização de Identidade Gerenciada, crie essas variáveis:

      • sourceUri. O URI para o contêiner de origem que contém documentos a serem convertidos.

      • targetUri O URI para o contêiner de destino no qual os documentos traduzidos são gravados.

      • targetLanguageCode. O código de idioma para os documentos traduzidos. Você pode encontrar códigos de idioma em nossa página Suporte a idioma.

        Para localizar suas URLs de origem e destino, navegue até sua conta de armazenamento no portal do Azure. Na barra lateral esquerda, em Armazenamento de dados , selecione Contêineres e siga estas etapas para recuperar os documentos de origem e URLS de contêiner de destino.

        Fonte Destino
        1. Marcar a caixa de seleção próxima do contêiner de origem 1. Marque a caixa de seleção próxima do contêiner de destino.
        2. Na área da janela principal, selecione um arquivo ou documentos para tradução. 2. Selecione as reticências localizadas à direita e escolha Propriedades.
        3. A URL de origem está localizada na parte superior da lista Propriedades. 3. A URL de destino está localizada na parte superior da lista Propriedades.
    • Para autorização de SAS (Assinatura de Acesso Compartilhado), crie essas variáveis

      • sourceUri. O URI de SAS, com um token SAS acrescentado como uma cadeia de caracteres de consulta, para o contêiner de origem que contém documentos a serem traduzidos.
      • targetUri O URI SAS, com um token SAS acrescentado como uma cadeia de caracteres de consulta, para o contêiner de destino no qual os documentos traduzidos são gravados.
      • targetLanguageCode. O código de idioma para os documentos traduzidos. Você pode encontrar códigos de idioma em nossa página Suporte a idioma.

Importante

Lembre-se de remover a chave do seu código quando terminar e nunca poste-a publicamente. Para produção, use um modo seguro de armazenar e acessar suas credenciais, como o Azure Key Vault. Para obter mais informações, consulte a segurança das Ferramentas de Fundição.

Exemplo de código de tradução assíncrona

Insira o seguinte exemplo de código no arquivo Program.cs do aplicativo:


using Azure;
using Azure.AI.Translation.Document;
using System;
using System.Threading;
using System.Text;

class Program {

  // create variables for your custom endpoint and resource key
  private static readonly string endpoint = "<your-document-translation-endpoint>";
  private static readonly string key = "<your-key>";

  static async Task Main(string[] args) {

    // create variables for your sourceUrl, targetUrl, and targetLanguageCode
    Uri sourceUri = new Uri("<sourceUrl>");
    Uri targetUri = new Uri("<targetUrl>");
    string targetLanguage = "<targetLanguageCode>"

    // initialize a new instance  of the DocumentTranslationClient object to interact with the Document translation feature
    DocumentTranslationClient client = new DocumentTranslationClient(new Uri(endpoint), new AzureKeyCredential(key));

    // initialize a new instance of the `DocumentTranslationInput` object to provide the location of input for the translation operation
    DocumentTranslationInput input = new DocumentTranslationInput(sourceUri, targetUri, targetLanguage);

    // initialize a new instance of the DocumentTranslationOperation class to track the status of the translation operation
    DocumentTranslationOperation operation = await client.StartTranslationAsync(input);

    await operation.WaitForCompletionAsync();

    Console.WriteLine($"  Status: {operation.Status}");
    Console.WriteLine($"  Created on: {operation.CreatedOn}");
    Console.WriteLine($"  Last modified: {operation.LastModified}");
    Console.WriteLine($"  Total documents: {operation.DocumentsTotal}");
    Console.WriteLine($"    Succeeded: {operation.DocumentsSucceeded}");
    Console.WriteLine($"    Failed: {operation.DocumentsFailed}");
    Console.WriteLine($"    In Progress: {operation.DocumentsInProgress}");
    Console.WriteLine($"    Not started: {operation.DocumentsNotStarted}");

    await foreach(DocumentStatusResult document in operation.Value) {
      Console.WriteLine($"Document with Id: {document.Id}");
      Console.WriteLine($"  Status:{document.Status}");
      if (document.Status == DocumentTranslationStatus.Succeeded) {
        Console.WriteLine($"  Translated Document Uri: {document.TranslatedDocumentUri}");
        Console.WriteLine($"  Translated to language: {document.TranslatedToLanguageCode}.");
        Console.WriteLine($"  Document source Uri: {document.SourceDocumentUri}");
      } else {
        Console.WriteLine($"  Error Code: {document.Error.Code}");
        Console.WriteLine($"  Message: {document.Error.Message}");
      }
    }
  }
}

Execute seu aplicativo.

Depois de adicionar o exemplo de código ao aplicativo, execute o aplicativo no diretório do projeto digitando o seguinte comando no terminal:

  dotnet run

Aqui está um trecho da saída esperada:

Captura de tela da saída do Visual Studio Code na janela do terminal.

Exemplo de código de tradução síncrona

Você pode baixar nosso documento de exemplo de tradução de documento para este início rápido. O idioma de origem é o inglês.



using Azure;
using Azure.AI.Translation.Document;
using System;
using System.Threading;
using System.Text;

class Program {

  string endpoint = "{your-document-translation-endpoint}";
  string apiKey = "{your-api-key}";
  SingleDocumentTranslationClient client = new SingleDocumentTranslationClient(new Uri(endpoint), new AzureKeyCredential(apiKey));

  try
  {
    string filePath = @"C:\{folder}\document.txt"
    using Stream fileStream = File.OpenRead(filePath);

    // MultipartFormFileData (string name, System.IO.Stream content, string contentType);
    var sourceDocument = new MultipartFormFileData(Path.GetFileName(filePath), fileStream, "application/vnd.openxmlformats-officedocument.wordprocessingml.document");

    DocumentTranslateContent content = new DocumentTranslateContent(sourceDocument);

    // DocumentTranslate (string targetLanguage, Azure.AI.Translation.Document.DocumentTranslateContent documentTranslateContent, string sourceLanguage = default, string category = default, bool? allowFallback = default, System.Threading.CancellationToken cancellationToken = default);
    var response = client.DocumentTranslate("de", content);

    Console.WriteLine($"Request string for translation: {requestString}");
    Console.WriteLine($"Response string after translation: {responseString}");
  }
    catch (RequestFailedException exception) {
    Console.WriteLine($"Error Code: {exception.ErrorCode}");
    Console.WriteLine($"Message: {exception.Message}");
  }
}

É isso! Você acabou de criar um programa para traduzir documentos em um contêiner de armazenamento usando a biblioteca de clientes do .NET.

Configurar o seu projeto

Verifique se a versão mais recente do Python está instalada.

Instalar a biblioteca de clientes

Instale a versão mais recente da biblioteca de clientes de tradução de documento:

  pip install azure-ai-translation-document==1.0.0

Traduzir arquivos em lotes

  1. Neste projeto, você precisa de um documento de origem carregado no contêiner de origem. Você pode baixar nosso documento de exemplo de tradução de documento para este início rápido. O idioma de origem é o inglês.

  2. No arquivo de aplicativo Python, crie variáveis para a chave de recurso e o ponto de extremidade personalizado. Para obter mais informações, confiraRecuperar sua chave e o ponto de extremidade de domínio personalizado.

key = "{your-api-key}"
endpoint = "{your-document-translation-endpoint}"

  1. Inicialize um objeto DocumentTranslationClient que contém os parâmetros endpoint e key.

  2. Chame o método begin_translation e passe os parâmetros sourceUri, targetUri e targetLanguageCode.

    • Para autorização de Identidade Gerenciada, crie essas variáveis:

      • sourceUri. O URI para o contêiner de origem que contém documentos a serem convertidos.

      • targetUri O URI para o contêiner de destino no qual os documentos traduzidos são gravados.

      • targetLanguageCode. O código de idioma para os documentos traduzidos. Você pode encontrar códigos de idioma em nossa página Suporte a idioma.

        Para localizar suas URLs de origem e destino, navegue até sua conta de armazenamento no portal do Azure. Na barra lateral esquerda, em Armazenamento de dados , selecione Contêineres e siga estas etapas para recuperar os documentos de origem e URLS de contêiner de destino.

        Fonte Destino
        1. Marcar a caixa de seleção próxima do contêiner de origem 1. Marque a caixa de seleção próxima do contêiner de destino.
        2. Na área da janela principal, selecione um arquivo ou documentos para tradução. 2. Selecione as reticências localizadas à direita e escolha Propriedades.
        3. A URL de origem está localizada na parte superior da lista Propriedades. 3. A URL de destino está localizada na parte superior da lista Propriedades.
    • Para autorização de SAS (Assinatura de Acesso Compartilhado), crie essas variáveis

      • sourceUri. O URI de SAS, com um token SAS acrescentado como uma cadeia de caracteres de consulta, para o contêiner de origem que contém documentos a serem traduzidos.
      • targetUri O URI SAS, com um token SAS acrescentado como uma cadeia de caracteres de consulta, para o contêiner de destino no qual os documentos traduzidos são gravados.
      • targetLanguageCode. O código de idioma para os documentos traduzidos. Você pode encontrar códigos de idioma em nossa página Suporte a idioma.

Exemplo de código de tradução assíncrona

Importante

Lembre-se de remover a chave do seu código quando terminar e nunca poste-a publicamente. Para produção, use um modo seguro de armazenar e acessar suas credenciais, como o Azure Key Vault. Para obter mais informações, consulte a segurança das Ferramentas de Fundição.

Insira o seguinte exemplo de código em seu aplicativo Python:


#  import libraries
from azure.core.credentials import AzureKeyCredential
from azure.ai.translation.document import DocumentTranslationClient

# create variables for your resource key, custom endpoint, sourceUrl, targetUrl, and targetLanguage
key = '{your-api-key}'
endpoint = '{your-document-translation-endpoint}'
sourceUri = '<your-container-sourceUrl>'
targetUri = '<your-container-targetUrl>'
targetLanguage = '<target-language-code>'


# initialize a new instance of the DocumentTranslationClient object to interact with the asynchronous Document translation feature
client = DocumentTranslationClient(endpoint, AzureKeyCredential(key))

# include source and target locations and target language code for the begin translation operation
poller = client.begin_translation(sourceUri, targetUri, targetLanguage)
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
            )
        )

Execute seu aplicativo.

Depois de adicionar o exemplo de código ao aplicativo, digite o seguinte comando no terminal:

python asynchronous-sdk.py

Aqui está um trecho da saída esperada:

Captura de tela da saída do Python na janela do terminal.

Exemplo de código de tradução síncrona

Você pode baixar nosso documento de exemplo de tradução de documento para este início rápido. O idioma de origem é o inglês.

import os
from azure.core.credentials import AzureKeyCredential
from azure.ai.translation.document import SingleDocumentTranslationClient
from azure.ai.translation.document.models import DocumentTranslateContent


def sample_single_document_translation():

    # create variables for your resource api key, document translation endpoint, and target language
    key = "<your-api-key>"
    endpoint = "<your-document-translation-endpoint>"
    target_language = "{target-language-code}"

    # initialize a new instance of the SingleDocumentTranslationClient object to interact with the synchronous Document translation feature
    client = SingleDocumentTranslationClient(endpoint, AzureKeyCredential(key))

    # absolute path to your document
    file_path = "C:/{your-file-path}/document-translation-sample.docx"
    file_name = os.path.basename(file_path)
    file_type = (
        "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
    )
    print(f"File for translation: {file_name}")

    with open(file_path, "rb") as file:
        file_contents = file.read()

    document_content = (file_name, file_contents, file_type)
    document_translate_content = DocumentTranslateContent(document=document_content)

    response_stream = client.document_translate(
        body=document_translate_content, target_language=target_language
    )
    # Save the response_stream to a file
    output_file_path = "./translated-document.docx"
    with open(output_file_path, "wb") as output_file:
        output_file.write(response_stream)
    
    print(f"Translated document saved to: {output_file_path}")


if __name__ == "__main__":
    sample_single_document_translation()


É isso! Você acabou de criar um programa para traduzir documentos de forma assíncrona e síncrona usando a biblioteca de clientes do Python.

Próxima etapa