Container: Traduzir texto

Traduzir o texto.

URL do Pedido

Envie um pedido POST para:

POST http://localhost:{port}/translate?api-version=3.0&&from={from}&to={to}

Exemplo de pedido

curl -x POST "https:localhost:5000/translate?api-version=3.0&from=en&to=es" -H "Content-Type: application/json" -d "[{
'Text': 'I would really like to drive your car.'}]"

Exemplo de resposta

[
  {
    "translations": [
      {
        "text": "Realmente me gustaría conducir su coche.",
        "to": "es"
      }
    ]
  }
]

Parâmetros de solicitação

Os parâmetros de solicitação passados na cadeia de caracteres de consulta são:

Parâmetros obrigatórios

Parâmetro de consulta Description Condição
api-version Versão da API solicitada pelo cliente. O valor deve ser 3.0. Parâmetro necessário
de Especifica o idioma do texto de entrada. Parâmetro necessário
para Especifica o idioma do texto de saída. Por exemplo, use to=de para traduzir para alemão.
É possível traduzir para vários idiomas simultaneamente repetindo o parâmetro na cadeia de caracteres de consulta. Por exemplo, use to=de&to=it para traduzir para alemão e italiano.
Parâmetro necessário

Parâmetros opcionais

Parâmetro de consulta Description
textType Parâmetro opcional.
Define se o texto que está sendo traduzido é texto sem formatação ou texto HTML. Qualquer HTML precisa ser um elemento bem formado e completo. Os valores possíveis são: plain (padrão) ou html.
includeSentenceLength Parâmetro opcional.
Especifica se os limites de frase devem ser incluídos para o texto de entrada e o texto traduzido. Os valores possíveis são: true ou false (padrão).

Cabeçalhos do pedido

Cabeçalhos Description Condição
Cabeçalhos de autenticação Consulte as opções disponíveis para autenticação. Cabeçalho de solicitação obrigatório
Tipo de Conteúdo Especifica o tipo de conteúdo da carga útil.
O valor aceito é application/json; charset=UTF-8.
Cabeçalho de solicitação obrigatório
Comprimento do conteúdo O comprimento do corpo do pedido. Opcional
X-ClientTraceId Um GUID gerado pelo cliente para identificar exclusivamente a solicitação. Você pode omitir esse cabeçalho se incluir a ID de rastreamento na cadeia de caracteres de consulta usando um parâmetro de consulta chamado ClientTraceId. Opcional

Corpo do pedido

O corpo da solicitação é uma matriz JSON. Cada elemento de matriz é um objeto JSON com uma propriedade string chamada Text, que representa a cadeia de caracteres a ser traduzida.

[
    {"Text":"I would really like to drive your car around the block a few times."}
]

Aplicam-se as seguintes limitações:

  • A matriz pode ter no máximo 100 elementos.
  • O texto inteiro incluído na solicitação não pode exceder 50.000 caracteres, incluindo espaços.

Corpo da resposta

Uma resposta bem-sucedida é uma matriz JSON com um resultado para cada cadeia de caracteres na matriz de entrada. Um objeto result inclui as seguintes propriedades:

  • translations: Uma série de resultados de tradução. O tamanho da matriz corresponde ao número de idiomas de destino especificados através do to parâmetro query. Cada elemento na matriz inclui:

  • to: Uma cadeia de caracteres que representa o código do idioma do idioma de destino.

  • text: Uma string que dá o texto traduzido.

  • sentLen: Um objeto que retorna limites de frase nos textos de entrada e saída.

  • srcSentLen: Uma matriz inteira que representa os comprimentos das frases no texto de entrada. O comprimento da matriz é o número de frases, e os valores são o comprimento de cada frase.

  • transSentLen: Uma matriz inteira que representa os comprimentos das frases no texto traduzido. O comprimento da matriz é o número de frases, e os valores são o comprimento de cada frase.

    Os limites de frase só são incluídos quando o parâmetro includeSentenceLength request é true.

    • sourceText: Um objeto com uma única propriedade string chamada text, que fornece o texto de entrada no script padrão do idioma de origem. sourceText propriedade está presente somente quando a entrada é expressa em um script que não é o script usual para a linguagem. Por exemplo, se a entrada fosse árabe escrita em alfabeto latino, então sourceText.text seria o mesmo texto árabe convertido em alfabeto árabe.

Cabeçalhos de resposta

Cabeçalhos Description
X-RequestId Valor gerado pelo serviço para identificar a solicitação e usado para fins de solução de problemas.
Sistema X-MT Especifica o tipo de sistema que foi usado para tradução para cada idioma 'para' solicitado para tradução. O valor é uma lista de cadeias de caracteres separadas por vírgula. Cada string indica um tipo:

▪ Custom - Request inclui um sistema personalizado e pelo menos um sistema personalizado foi usado durante a tradução.
▪ Equipa - Todos os outros pedidos

Códigos de status de resposta

Se ocorrer um erro, a solicitação retornará uma resposta de erro JSON. O código de erro é um número de 6 dígitos que combina o código de status HTTP de 3 dígitos seguido por um número de 3 dígitos para categorizar ainda mais o erro. Os códigos de erro comuns podem ser encontrados na página de referência do Tradutor V3.

Exemplos de código: traduzir texto

Nota

  • Cada exemplo é executado no localhost que você especificou com o docker run comando.
  • Enquanto o contêiner está em execução, localhost aponte para o próprio contêiner.
  • Você não precisa usar localhost:5000o . Você pode usar qualquer porta que ainda não esteja em uso em seu ambiente host.

Traduzir uma única entrada

Este exemplo mostra como traduzir uma única frase do inglês para o chinês simplificado.

curl -X POST "http://localhost:{port}/translate?api-version=3.0&from=en&to=zh-Hans" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'Hello, what is your name?'}]"

O corpo da resposta é:

[
    {
        "translations":[
            {"text":"你好, 你叫什么名字?","to":"zh-Hans"}
        ]
    }
]

A translations matriz inclui um elemento, que fornece a tradução do único pedaço de texto na entrada.

Consultar o ponto de extremidade do Azure AI Translator (texto)

Aqui está um exemplo de solicitação HTTP cURL usando localhost:5000 que você especificou com o docker run comando:

  curl -X POST "http://localhost:5000/translate?api-version=3.0&from=en&to=zh-HANS"
    -H "Content-Type: application/json" -d "[{'Text':'Hello, what is your name?'}]"

Nota

Se você tentar a solicitação cURL POST antes que o contêiner esteja pronto, você acabará recebendo uma resposta Serviço está temporariamente indisponível . Aguarde até que o recipiente esteja pronto e tente novamente.

Traduzir texto usando a API Swagger

Inglês ↔ Alemão

  1. Navegue até a página Swagger: http://localhost:5000/swagger/index.html
  2. Selecione POST /translate
  3. Selecione Experimentar
  4. Insira o parâmetro De como en
  5. Insira o parâmetro To como de
  6. Insira o parâmetro api-version como 3.0
  7. Em textos, substitua string pelo seguinte JSON
  [
        {
            "text": "hello, how are you"
        }
  ]

Selecione Executar, as traduções resultantes são saídas no Corpo da resposta. Você verá a seguinte resposta:

"translations": [
      {
          "text": "hallo, wie geht es dir",
          "to": "de"
      }
    ]

Traduzir texto com Python

Inglês ↔ Francês

import requests, json

url = 'http://localhost:5000/translate?api-version=3.0&from=en&to=fr'
headers = { 'Content-Type': 'application/json' }
body = [{ 'text': 'Hello, how are you' }]

request = requests.post(url, headers=headers, json=body)
response = request.json()

print(json.dumps(
    response,
    sort_keys=True,
     indent=4,
     ensure_ascii=False,
     separators=(',', ': ')))

Traduzir texto com o aplicativo de console C#/.NET

Inglês ↔ Espanhol

Inicie o Visual Studio e crie um novo aplicativo de console. Edite o *.csproj arquivo para adicionar o <LangVersion>7.1</LangVersion> nó — especifica C# 7.1. Adicione o pacote Newtoonsoft.Json NuGet versão 11.0.2.

No substitua Program.cs todo o código existente pelo seguinte script:

using Newtonsoft.Json;
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

namespace TranslateContainer
{
    class Program
    {
        const string ApiHostEndpoint = "http://localhost:5000";
        const string TranslateApi = "/translate?api-version=3.0&from=en&to=es";

        static async Task Main(string[] args)
        {
            var textToTranslate = "Sunny day in Seattle";
            var result = await TranslateTextAsync(textToTranslate);

            Console.WriteLine(result);
            Console.ReadLine();
        }

        static async Task<string> TranslateTextAsync(string textToTranslate)
        {
            var body = new object[] { new { Text = textToTranslate } };
            var requestBody = JsonConvert.SerializeObject(body);

            var client = new HttpClient();
            using (var request =
                new HttpRequestMessage
                {
                    Method = HttpMethod.Post,
                    RequestUri = new Uri($"{ApiHostEndpoint}{TranslateApi}"),
                    Content = new StringContent(requestBody, Encoding.UTF8, "application/json")
                })
            {
                // Send the request and await a response.
                var response = await client.SendAsync(request);

                return await response.Content.ReadAsStringAsync();
            }
        }
    }
}

Definição da palavra multiple strings

Traduzir várias cadeias de caracteres de uma só vez é simplesmente uma questão de especificar uma matriz de cadeias de caracteres no corpo da solicitação.

curl -X POST "http://localhost:5000/translate?api-version=3.0&from=en&to=zh-Hans" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'Hello, what is your name?'}, {'Text':'I am fine, thank you.'}]"

A resposta contém a tradução de todos os pedaços de texto exatamente na mesma ordem que no pedido. O corpo da resposta é:

[
    {
        "translations":[
            {"text":"你好, 你叫什么名字?","to":"zh-Hans"}
        ]
    },
    {
        "translations":[
            {"text":"我很好,谢谢你。","to":"zh-Hans"}
        ]
    }
]

Traduzir para vários idiomas

Este exemplo mostra como traduzir a mesma entrada para vários idiomas em uma solicitação.

curl -X POST "http://localhost:5000/translate?api-version=3.0&from=en&to=zh-Hans&to=de" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'Hello, what is your name?'}]"

O corpo da resposta é:

[
    {
        "translations":[
            {"text":"你好, 你叫什么名字?","to":"zh-Hans"},
            {"text":"Hallo, was ist dein Name?","to":"de"}
        ]
    }
]

Traduzir conteúdo com marcação e especificar conteúdo traduzido

É comum traduzir conteúdo que inclui marcação, como conteúdo de uma página HTML ou conteúdo de um documento XML. Inclua o parâmetro textType=html de consulta ao traduzir conteúdo com tags. Além disso, às vezes é útil excluir conteúdo específico da tradução. Você pode usar o atributo class=notranslate para especificar o conteúdo que deve permanecer em seu idioma original. No exemplo a seguir, o conteúdo dentro do primeiro div elemento não é traduzido, enquanto o conteúdo do segundo div elemento é traduzido.

<div class="notranslate">This will not be translated.</div>
<div>This will be translated. </div>

Aqui está uma solicitação de exemplo para ilustrar.

curl -X POST "http://localhost:5000/translate?api-version=3.0&from=en&to=zh-Hans&textType=html" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'<div class=\"notranslate\">This will not be translated.</div><div>This will be translated.</div>'}]"

A resposta é:

[
    {
        "translations":[
            {"text":"<div class=\"notranslate\">This will not be translated.</div><div>这将被翻译。</div>","to":"zh-Hans"}
        ]
    }
]

Traduzir com dicionário dinâmico

Se já sabe a tradução que pretende aplicar a uma palavra ou expressão, pode fornecê-la como marcação no pedido. O dicionário dinâmico só é seguro para nomes próprios, como nomes pessoais e nomes de produtos.

A marcação para fornecer usa a sintaxe a seguir.

<mstrans:dictionary translation="translation of phrase">phrase</mstrans:dictionary>

Por exemplo, considere a frase em inglês "A palavra wordomatic é uma entrada de dicionário". Para preservar a palavra wordomatic na tradução, envie o pedido:

curl -X POST "http://localhost:5000/translate?api-version=3.0&from=en&to=de" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'The word <mstrans:dictionary translation=\"wordomatic\">word or phrase</mstrans:dictionary> is a dictionary entry.'}]"

O resultado é:

[
    {
        "translations":[
            {"text":"Das Wort \"wordomatic\" ist ein Wörterbucheintrag.","to":"de"}
        ]
    }
]

Este recurso funciona da mesma forma com textType=text ou com textType=htmlo . O recurso deve ser usado com moderação. A maneira apropriada e muito melhor de personalizar a tradução é usando o Tradutor Personalizado. O Tradutor Personalizado faz uso pleno do contexto e das probabilidades estatísticas. Se você criou dados de treinamento que mostram seu trabalho ou frase no contexto, obterá melhores resultados. Saiba mais sobre o Tradutor Personalizado.

Limites de pedido

Cada solicitação de tradução é limitada a 50.000 caracteres, em todos os idiomas de destino para os quais você está traduzindo. Por exemplo, enviar uma solicitação de tradução de 3.000 caracteres para traduzir para três idiomas diferentes resulta em um tamanho de solicitação de 3000x3 = 9.000 caracteres, que satisfazem o limite de solicitação. Você é cobrado por personagem, não pelo número de solicitações. Recomendamos o envio de pedidos mais curtos.

A tabela a seguir lista os limites de elementos de matriz e caracteres para a operação de tradução do Translator.

Operação Tamanho máximo do elemento de matriz Número máximo de elementos de matriz Tamanho máximo da solicitação (caracteres)
Traduzir 10.000 100 50 000

Use docker compose: Tradutor com contêineres de suporte

Docker compose é uma ferramenta que permite configurar aplicativos de vários contêineres usando um único arquivo YAML normalmente chamado compose.yaml. Use o docker compose up comando para iniciar seu aplicativo de contêiner e o docker compose down comando para parar e remover seus contêineres.

Se você instalou a CLI do Docker Desktop, ela inclui a composição do Docker e seus pré-requisitos. Se você não tiver o Docker Desktop, consulte a Visão geral da instalação do Docker Compose.

A tabela a seguir lista os contêineres de suporte necessários para suas operações de tradução de texto e documentos. O contêiner Translator envia informações de cobrança para o Azure por meio do recurso Azure AI Translator em sua conta do Azure.

Operação Solicitar consulta Document type Contentores de suporte
•Tradução de texto
• Tradução de documentos
from especificado. Documentos do Office Nenhuma
•Tradução de texto
• Tradução de documentos
from não especificado. Requer deteção automática de idioma para determinar o idioma de origem. Documentos do Office ✔️ Análise de texto:contêiner de idioma
•Tradução de texto
• Tradução de documentos
from especificado. Documentos PDF digitalizados ✔️ Visão:recipiente de leitura
•Tradução de texto
• Tradução de documentos
from não especificado exigindo deteção automática de idioma para determinar o idioma de origem. Documentos PDF digitalizados ✔️ Análise de texto:contêiner de idioma

✔️ Visão:recipiente de leitura
Imagens e tags de contêiner

As imagens de contêiner de serviços de IA do Azure podem ser encontradas no catálogo do Registro de Artefato da Microsoft. A tabela a seguir lista o local de imagem totalmente qualificado para tradução de texto e documento:

Contentor Localização da imagem Notas
Tradutor: Tradução de texto mcr.microsoft.com/azure-cognitive-services/translator/text-translation:latest Você pode exibir a lista completa de tags de versão de tradução de texto dos serviços de IA do Azure no MCR.
Tradutor: Tradução de documentos TODO TODO
Análise de texto: idioma mcr.microsoft.com/azure-cognitive-services/textanalytics/language:latest Você pode exibir a lista completa de tags de versão de linguagem de análise de texto dos serviços de IA do Azure no MCR.
Visão: ler mcr.microsoft.com/azure-cognitive-services/vision/read:latest Você pode exibir a lista completa de tags de versão de leitura de visão computacional dos serviços de IA OCR do Azure no MCR.

Criar a sua aplicação

  1. Usando seu editor ou IDE preferido, crie um novo diretório para seu aplicativo nomeado container-environment ou um nome de sua escolha.

  2. Crie um novo arquivo YAML chamado compose.yaml. As extensões .yml ou .yaml podem ser usadas para o compose arquivo.

  3. Copie e cole o seguinte exemplo de código YAML em seu compose.yaml arquivo. Substitua {TRANSLATOR_KEY} e {TRANSLATOR_ENDPOINT_URI} pelos valores de chave e ponto de extremidade da sua instância do Tradutor do portal do Azure. Certifique-se de que utiliza a seringa document translation endpoint.

  4. O nome de nível superior (azure-ai-translator, azure-ai-language, azure-ai-read) é o parâmetro que você especifica.

  5. O container_name é um parâmetro opcional que define um nome para o contêiner quando ele é executado, em vez de permitir gerar docker compose um nome.

    services:
      azure-ai-translator:
        container_name: azure-ai-translator
        image: mcr.microsoft.com/product/azure-cognitive-services/translator/text-translation:latest
        environment:
            - EULA=accept
            - billing={TRANSLATOR_ENDPOINT_URI}
            - apiKey={TRANSLATOR_KEY}
            - AzureAiLanguageHost=http://azure-ai-language:5000
            - AzureAiReadHost=http://azure-ai-read:5000
        ports:
              - "5000:5000"
        azure-ai-language:
          container_name: azure-ai-language
          image:  mcr.microsoft.com/azure-cognitive-services/textanalytics/language:latest
          environment:
              - EULA=accept
              - billing={TRANSLATOR_ENDPOINT_URI}
              - apiKey={TRANSLATOR_KEY}
        azure-ai-read:
          container_name: azure-ai-read
          image:  mcr.microsoft.com/azure-cognitive-services/vision/read:latest
          environment:
              - EULA=accept
              - billing={TRANSLATOR_ENDPOINT_URI}
              - apiKey={TRANSLATOR_KEY}
    
  6. Abra um terminal Navegue até a container-environment pasta e inicie os contêineres com o seguinte docker-compose comando:

    docker compose up
    
  7. Para parar os contêineres, use o seguinte comando:

    docker compose down
    

    Gorjeta

    docker compose comandos:

    • docker compose pause Pausa a execução de contêineres.
    • docker compose unpause {your-container-name} unpausa recipientes pausados.
    • docker compose restart Reinicia todo o contêiner parado e em execução com todas as suas alterações anteriores intactas. Se você fizer alterações na configuração compose.yaml , essas alterações não serão atualizadas com o docker compose restart comando. Você precisa usar o docker compose up comando para refletir atualizações e alterações no compose.yaml arquivo.
    • docker compose ps -a Lista todos os contêineres, incluindo aqueles que estão parados.
    • docker compose exec Permite executar comandos para desanexar ou definir variáveis de ambiente em um contêiner em execução.

    Para obter mais informações, consulte Referência da CLI do docker.

Passos Seguintes