Contêiner: Traduzir texto
Traduzir o texto.
URL da solicitação
Envie uma solicitação POST
para:
POST http://localhost:{port}/translate?api-version=3.0&&from={from}&to={to}
Solicitação de exemplo
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 da 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 | Descrição | Condição |
---|---|---|
api-version | Versão da API solicitada pelo cliente. O valor precisa ser 3.0 . |
Parâmetro obrigatório |
de | Especifica o idioma do texto de entrada. | Parâmetro obrigatório |
até | 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 obrigatório |
- Você pode consultar o serviço para obter
translation
os idiomas com suporte do escopo. - Consulte também Suporte de idioma para transliteração.
Parâmetros opcionais
Parâmetro de consulta | Descrição |
---|---|
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 deve incluir limites de sentença para o texto de entrada e o texto traduzido. Os valores possíveis são: true ou false (padrão). |
Cabeçalhos da solicitação
Cabeçalhos | Descrição | Condição |
---|---|---|
Cabeçalhos de autenticação | Consulte as opções disponíveis para autenticação. | Cabeçalho de solicitação necessário |
Content-Type | Especifica o tipo de conteúdo da carga. O valor aceito é application/json; charset=UTF-8 . |
Cabeçalho de solicitação necessário |
Content-Length | O tamanho do corpo da solicitação. | Opcional |
X-ClientTraceId | Um GUID gerado pelo cliente para identificar exclusivamente a solicitação. É possível omitir esse cabeçalho se incluir a ID de rastreamento na cadeia de caracteres de consulta usando um parâmetro de consulta nomeado ClientTraceId . |
Opcional |
Corpo da solicitação
O corpo da solicitação é uma matriz JSON. Cada elemento da matriz é um objeto JSON com uma propriedade de cadeia nomeada 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."}
]
As seguintes limitações se aplicam:
- A matriz pode ter no máximo 100 elementos.
- Todo o texto incluído na solicitação não pode exceder 50 mil caracteres, incluindo espaços.
Corpo da resposta
Uma resposta com êxito é uma matriz JSON com um resultado para cada cadeia de caracteres na matriz de entrada. Um objeto de resultado inclui as seguintes propriedades:
translations
: uma matriz de resultados de tradução. O tamanho da matriz corresponde ao número de idiomas de destino especificados por meio do parâmetro de consultato
. Cada elemento na matriz inclui:to
: uma cadeia de caracteres representando o código de idioma do idioma de destino.text
: uma cadeia de caracteres dando o texto traduzido.sentLen
: um objeto retornando limites de sentença nos textos de entrada e saída.srcSentLen
: uma matriz inteira representando os comprimentos das sentenças no texto de entrada. O comprimento da matriz é o número de sentenças, e os valores são o comprimento de cada sentença.transSentLen
: uma matriz de inteiros representando os comprimentos das sentenças no texto traduzido. O comprimento da matriz é o número de sentenças, e os valores são o comprimento de cada sentença.Limites de sentença serão incluídos somente quando o parâmetro de solicitação
includeSentenceLength
fortrue
.sourceText
: um objeto com uma única propriedade de cadeia de caracteres nomeadatext
, que fornece o texto de entrada no script padrão do idioma de origem.sourceText
a propriedade está presente apenas quando a entrada é expressa em um script que não é o script usual para o idioma. Por exemplo, se a entrada fosse árabe gravada em script de latim,sourceText.text
seria o mesmo texto árabe convertido em script de árabe.
Cabeçalhos de resposta
Cabeçalhos | Descrição |
---|---|
X-RequestId | Valor gerado pelo serviço para identificar a solicitação e usado para fins de solução de problemas. |
Sistema-MT-X | Especifica o tipo de sistema usado para tradução para cada idioma de destino solicitado para tradução. O valor é uma lista separada por vírgulas de cadeia de caracteres. Cada cadeia de caracteres indica um tipo: ▪ Personalizado - a solicitação inclui um sistema personalizado e, no mínimo, um sistema personalizado foi usado durante a tradução. ▪ Equipe – Todas as outras solicitações |
Códigos de status de resposta
Se ocorrer um erro, a solicitação também 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. Códigos de erros comuns que podem ser encontrados na página de referência do Tradutor v3.
Exemplos de código: traduzir texto
Observação
- Cada exemplo é executado no
localhost
que você especificou com odocker run
comando. - Enquanto o contêiner está em execução,
localhost
aponta para o próprio contêiner. - Você não precisa usar
localhost:5000
. 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 sentença de inglês para 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 matriz translations
inclui um elemento, que fornece a tradução da única parte do 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?'}]"
Observação
Se você tentar a solicitação cURL POST antes que o contêiner esteja pronto, você acabará recebendo uma resposta de Serviço temporariamente indisponível. Aguarde até que o contêiner esteja pronto e tente novamente.
Traduzir texto usando a API do Swagger
Inglês ↔ Alemão
- Navegue até a página do Swagger:
http://localhost:5000/swagger/index.html
- Selecione POST /translate
- Selecione Experimentar
- Insira o parâmetro de como
en
- Insira o parâmetro para como
de
- Insira o parâmetro de versão de API como
3.0
- Em textos, substitua
string
pelo JSON a seguir
[
{
"text": "hello, how are you"
}
]
Selecione Executar, as traduções resultantes serão geradas no Corpo da Resposta. Você deverá 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
Inicialize o Visual Studio e crie um novo aplicativo de Console. Edite o *.csproj
arquivo para adicionar o <LangVersion>7.1</LangVersion>
nó — especifico C# 7.1. Adicione o pacote NuGet Newtoonsoft.Json versão 11.0.2.
Em Program.cs
substitua 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();
}
}
}
}
Traduzir várias strings
Traduzir várias cadeias de caracteres de uma vez é simplesmente uma questão de especificar uma matriz de cadeia 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 todas as partes do texto na mesma ordem que na solicitação. 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 de consulta textType=html
ao traduzir conteúdo com marcas. Além disso, às vezes é útil excluir conteúdo específico da tradução. É possível usar o atributo class=notranslate
para especificar o conteúdo que deve permanecer no idioma original. No exemplo a seguir, o conteúdo dentro do primeiro elemento div
não será traduzido, enquanto o conteúdo no segundo elemento div
será.
<div class="notranslate">This will not be translated.</div>
<div>This will be translated. </div>
Veja 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 você já souber a tradução que deseja aplicar a uma palavra ou frase, poderá fornecê-la como marcação dentro da solicitação. O dicionário dinâmico só é seguro para nomes próprios, como nomes de pessoas e nomes de produtos.
A marcação para fornecer usa a seguinte sintaxe.
<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 a solicitação:
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"}
]
}
]
Esse recurso funciona da mesma maneira com textType=text
ou com textType=html
. 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 total das probabilidades de estatística e contexto. 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 solicitações
Cada solicitação de tradução é limitada a 50 mil caracteres, em todos os idiomas de destino para os quais será feita a tradução. Por exemplo, o envio de 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 atendem ao limite da solicitação. Você é cobrado por personagem, não pelo número de solicitações. Recomendamos o envio de solicitações mais curtas.
A tabela a seguir lista os limites de elemento e de caracteres de matriz para a operação de tradução do Tradutor.
Operação | Tamanho máximo do elemento de matriz | Número máximo de elementos de matriz | Tamanho máximo da solicitação (caracteres) |
---|---|---|---|
translate | 10.000 | 100 | 50.000 |
Usar docker compose: Tradutor com contêineres de suporte
O Docker compose é uma ferramenta que permite configurar aplicativos de vários contêineres usando um único arquivo YAML, normalmente chamado compose.yaml
de . Use o comando docker compose up
para iniciar seu aplicativo de contêiner e o comando docker compose down
para parar e remover seus contêineres.
Caso tenha instalado a CLI do Docker Desktop, ela inclui o Docker Compose e seus pré-requisitos. Caso não tenha o Docker Desktop, confira 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 documento. O contêiner do Tradutor envia informações de cobrança para o Azure por meio do recurso do Tradutor de IA do Azure na sua conta do Azure.
Operação | Solicitação consulta | Tipo de documento | Contêineres de suporte |
---|---|---|---|
• Tradução de texto • Tradução de documento |
from especificado. |
Documentos do Office | Nenhum |
• Tradução de texto • Tradução de documento |
from não especificado. Requer a detecçã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 documento |
from especificado. |
Documentos PDF verificados | ✔️ Vision: ler contêiner |
• Tradução de texto • Tradução de documento |
from não especificado, exigindo a detecção automática do idioma para determinar o idioma de origem. |
Documentos PDF verificados | ✔️ Análise de texto:contêiner de idioma ✔️ Vision: ler contêiner |
Imagens e marcas de contêiner
As imagens de contêiner dos 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 a tradução de texto e documento:
Contêiner | Local da imagem | Observações |
---|---|---|
Tradutor: Tradução de texto | mcr.microsoft.com/azure-cognitive-services/translator/text-translation:latest |
Você pode exibir a lista completa das marcas de versão da 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 das marcas de versão do Idioma da Análise de Texto de serviços de IA do Azure no MCR. |
Visão: leitura | mcr.microsoft.com/azure-cognitive-services/vision/read:latest |
Você pode exibir a lista completa das marcas de versão da Leitura da Pesquisa Visual Computacional dos serviços de IA do Azure OCR no MCR. |
Criar o aplicativo
Usando seu editor ou IDE preferencial, crie um novo diretório para seu aplicativo chamado
container-environment
ou use um nome de sua escolha.Criar um novo arquivo YAML chamado
compose.yaml
. As extensões .yml ou .yaml podem ser usadas para o arquivocompose
.Copie e cole o exemplo de código YAML a seguir em seu arquivo
compose.yaml
. Substitua{TRANSLATOR_KEY}
e{TRANSLATOR_ENDPOINT_URI}
pelos valores da chave e do ponto de extremidade da instância do Tradutor do portal do Azure. Certifique-se de usar odocument translation endpoint
.O nome de nível superior (
azure-ai-translator
,azure-ai-language
,azure-ai-read
) é o parâmetro que você especifica.O
container_name
é um parâmetro opcional que define um nome para o contêiner quando ele é executado, em vez de deixardocker compose
gerar 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}
Abra um terminal navegue até a pasta
container-environment
e inicie os contêineres com o seguinte comandodocker-compose
:docker compose up
Para parar o contêiner, use o seguinte comando:
docker compose down
Dica
docker compose
Comandos:docker compose pause
pausa a execução de contêineres.docker compose unpause {your-container-name}
retoma os contêineres pausados.docker compose restart
reinicia todos os contêineres parados e em execução com todas as alterações anteriores intactas. Se você fizer alterações na configuraçãocompose.yaml
, elas não serão atualizadas com o comandodocker compose restart
. Você precisa usar o comandodocker compose up
para refletir atualizações e alterações no arquivocompose.yaml
.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, confira Referência da CLI do Docker.