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 |
- Você pode consultar o serviço para idiomas suportados pelo
translation
escopo. - Consulte também Suporte de idioma para transliteração.
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 doto
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 chamadatext
, 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ãosourceText.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 odocker run
comando. - Enquanto o contêiner está em execução,
localhost
aponte para o próprio contêiner. - Você não precisa usar
localhost:5000
o . 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
- Navegue até a página Swagger:
http://localhost:5000/swagger/index.html
- Selecione POST /translate
- Selecione Experimentar
- Insira o parâmetro De como
en
- Insira o parâmetro To como
de
- Insira o parâmetro api-version como
3.0
- 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=html
o . 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
Usando seu editor ou IDE preferido, crie um novo diretório para seu aplicativo nomeado
container-environment
ou um nome de sua escolha.Crie um novo arquivo YAML chamado
compose.yaml
. As extensões .yml ou .yaml podem ser usadas para ocompose
arquivo.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 seringadocument 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 permitir gerardocker 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}
Abra um terminal Navegue até a
container-environment
pasta e inicie os contêineres com o seguintedocker-compose
comando:docker compose up
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çãocompose.yaml
, essas alterações não serão atualizadas com odocker compose restart
comando. Você precisa usar odocker compose up
comando para refletir atualizações e alterações nocompose.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.