https://a.storyblok.com/f/270183/103883/bc3faf57d1/efbed5d5-7aaf-4aac-8c64-214e8559abd2.jpeg

Comparação entre APIs de tradução de texto

Publicado em May 18, 2021

Tempo de leitura: 8 minutos

Observação: algumas das ferramentas ou métodos descritos neste artigo podem não ter mais suporte ou estar desatualizados. Para obter conteúdo atualizado ou suporte, consulte nossas postagens mais recentes ou nossa Documentação

As APIs de tradução de texto são essenciais no ambiente global de mensagens recebidas e enviadas. A Amazon Web Services, a Google Cloud Platform, o IBM Watson e o Microsoft Azure oferecem soluções de ponta. Esta postagem destacará algumas das lições que aprendi ao utilizar cada um desses serviços.

Amazon Translate

Recursos

Amazon Transcribe utiliza o que é conhecido como tradução automática neural para criar traduções com linguagem mais natural. O serviço oferece processos em tempo real e em lote, dando ao desenvolvedor a opção de traduzir o texto imediatamente ou processá-lo posteriormente.

O Amazon Translate oferece 54 idiomas à sua escolha, proporcionando uma ampla variedade de opções. O serviço também detecta o idioma de origem, o que proporciona maior flexibilidade. Você também pode personalizar sua terminologia para garantir maior precisão no seu caso de uso específico.

Facilidade de uso

O SDK da AWS da Amazon inclui o Amazon Translate para várias linguagens de programação. Usei JavaScript e não tive nenhuma dificuldade em trabalhar com o serviço.

A documentação do Amazon Translate é simples o suficiente para você começar e abrangente o suficiente para lidar com situações mais complexas, conforme necessário. Ela também oferece alguns exemplos para ajudar você a dar os primeiros passos.

Meu método de tradução está abaixo, a título de exemplo —

function translateText(params) {
  var translate = new AWS.Translate({region: process.env.AWS_REGION})
  var opts = {
    SourceLanguageCode: 'auto',
    TargetLanguageCode: 'en',
    Text: params.text
  };
  translate.translateText(opts, function(err, data) {
    if (err) {
      console.log(err, err.stack);
    }
    else{
      console.log(params.text);
      console.dir(data, {depth: null})
    }
  });
}

A resposta recebida do serviço poderia, em princípio, conter mais informações, mas os dados fornecidos já são suficientes para que o aplicativo funcione. Gostaria de saber qual era o texto original e, talvez, algumas id para comparar chamadas posteriormente. Posso integrar isso ao meu aplicativo, mas ter essas informações adicionais seria útil.

Hola
{
  TranslatedText: 'Hello',
  SourceLanguageCode: 'es',
  TargetLanguageCode: 'en'
}
Halo
{
  TranslatedText: 'Hello. Hello',
  SourceLanguageCode: 'id',
  TargetLanguageCode: 'en'
}

Você pode encontrar um exemplo completo e um tutorial na minha postagem anterior sobre o Amazon Translate.

Preços

A estrutura de preços do Amazon Translate é simples. O serviço é do tipo “pague conforme usar” e cobra por caractere. Ele também oferece um plano gratuito para você começar.

Durante 12 meses após a sua primeira solicitação de tradução, a AWS oferece 2 milhões de caracteres por mês gratuitamente, o que é mais do que suficiente para fins de teste e até mesmo para um uso leve por parte dos clientes. Qualquer volume acima da cota de 2 milhões de caracteres é cobrado à tarifa padrão, que é de US$ 15,00 por milhão de caracteres.

API do Azure Text Translator

Recursos

A API do Azure Text Translator faz parte do Cognitive Services e utiliza tradução automática neural para realizar suas traduções. A Microsoft também oferece um dicionário bilíngue para encontrar traduções alternativas usando frases contextuais, a fim de ajudar a escolher a tradução adequada.

A API do Azure Text Translator oferece uma ampla variedade de idiomas, com suporte a mais de 60. O serviço oferece transliteração, permitindo que você altere o texto para usar alfabetos diferentes. Modelos personalizados são uma opção para lidar adequadamente com termos específicos do setor. Se necessário, a API do Azure Text Translator também traduz documentos.

Uma funcionalidade exclusiva do Azure é a possibilidade de usar um serviço de tradução local com seus aplicativos Android para traduzir mesmo quando não estiver conectado à internet.

Facilidade de uso

No momento em que escrevo este artigo, os SDKs do Azure estão passando por algumas atualizações significativas. As mudanças são positivas e simplificam a configuração. Achei a documentação um pouco difícil de navegar em alguns momentos, mas o código-fonte continha comentários suficientes para que eu conseguisse entender tudo.

Assim que consegui identificar os parâmetros necessários e os formatos de entrada, a estrutura Promise do SDK facilitou bastante a escrita do código em JavaScript.

function translateText(params) {
  const creds = new CognitiveServicesCredentials.ApiKeyCredentials({ inHeader: { 'Ocp-Apim-Subscription-Key': process.env.TEXT_TRANSLATION_SUBSCRIPTION_KEY } });
  const client = new TranslatorTextClient(creds, process.env.TEXT_TRANSLATION_ENDPOINT);

  client.translator
    .translate(["en"], [{text:params.text}])
    .then(data => {
      console.dir(data, {depth: null})
    })
    .catch(err => {
      console.error("error:", err);
    });
}

O translator.translate método permite múltiplas entradas tanto para o texto quanto para os idiomas. As matrizes de entrada permitem traduzir mensagens para vários idiomas simultaneamente, bem como enviar várias mensagens em lotes.

A resposta é sucinta. Planeje manter um registro das chamadas realizadas e do texto original em seu aplicativo. Esses detalhes não são fornecidos.

[
  {
    detectedLanguage: { language: 'es', score: 1 },
    translations: [ { text: 'Hello', to: 'en' } ]
  }
]

Você pode ver como implementar esse serviço em JavaScript na minha post sobre a API de Tradução de Texto do Azure.

Preços

A estrutura de preços da API de Tradução de Texto do Azure é do tipo “pague conforme o uso” e cobra US$ 10 por milhão de caracteres. O serviço não oferece nenhum plano gratuito além do período de avaliação padrão do Azure.

Google Cloud Translate

Recursos

API de Tradução do Google Cloud utiliza o processamento de linguagem natural do AutoML para fornecer as traduções que você esperaria de um serviço do Google Tradutor. O Google Cloud também oferece a possibilidade de treinar modelos personalizados do AutoML ou usar os modelos pré-treinados já disponíveis.

O Google Cloud Translate oferece suporte a mais de 100 idiomas e possui detecção automática de idioma. Ele disponibiliza um glossário para priorizar a tradução de terminologia específica do setor. Caso opte por utilizar a tradução personalizada do AutoML, é possível criar modelos personalizados com mais de 50 pares de idiomas.

Facilidade de uso

Sempre gostei de usar o Google Cloud SDK em projetos com JavaScript. Os guias de introdução continuam fáceis de seguir, e as referências à API podem ser facilmente encontradas e estão bem estruturadas.

O Google Cloud utiliza contas de serviço para autenticação. Quando você fornece o arquivo de credenciais na raiz do projeto, o SDK gerencia a autenticação para você, o que faz com que essa seja, sem dúvida, minha API de serviço em nuvem favorita para implementar.

function translateText(params) {
  const translate = new Translate();
  const target = process.env.TARGET_LANGUAGE || 'en';

  translate.translate(params.text, target)
        .then(data => {
           console.dir(data, {depth: null})
         })
         .catch(err => {
           console.log('error', err);
         });
}

O translate objeto é super simples de usar; no entanto, o valor retornado não contém o texto original enviado na resposta.

[
  'Hi',
  {
    data: {
      translations: [ { translatedText: 'Hi', detectedSourceLanguage: 'es' } ]
    }
  }
]

Para um tutorial mais detalhado sobre como utilizar o Google Cloud Translate com JavaScript, você pode conferir este link (https://developer.vonage.com/en/blog/extending-nexmo-google-cloud-translation-api-dr).

Preços

Google Cloud Translate Preços oferece dois planos principais: Básico e Avançado. O serviço Avançado conta com alguns recursos adicionais e tem o mesmo preço do Básico; ambos custam US$ 20 por milhão de caracteres.

O serviço também é do tipo “pague conforme o uso”, mas deixa claro que a cobrança será feita proporcionalmente, ou seja, de forma incremental. Proporcionalmente significa que o serviço não vai esperar até você atingir 1 milhão para cobrar pelo uso.

Desde 1º de novembro de 2019, eles também estão oferecendo US$ 10 de uso gratuito por mês — o que é excelente para testes de desenvolvimento.

IBM Watson Language Translator

Recursos

Assim como os outros três serviços, o IBM Watson Language Translator também utiliza tradução automática neural para oferecer resultados mais precisos. A criação de modelos personalizados é uma opção oferecida por esse provedor de serviços, proporcionando a você o mesmo nível de controle.

O IBM Watson Language Translator parece ser o que oferece o menor número de idiomas traduzidos, com apenas cerca de 30 listados. A lista abrange a maioria dos casos de uso, mas se você planeja usar um idioma específico, certifique-se de verificar a lista antes de começar.

O IBM Watson Language Translator oferece um serviço de tradução de documentos, o que lhe confere um conjunto abrangente de recursos para a maioria dos casos de uso.

Facilidade de uso

O SDK do IBM Watson Language Translator para JavaScript tem, de longe, a sintaxe de autenticação mais detalhada, mas os métodos, em geral, também estão alinhados com os dos outros serviços.

A documentação é fácil de entender e inclui vários exemplos de Applications para você começar.

Uma pequena desvantagem é que o serviço não identifica automaticamente o idioma de origem, como fazem os outros serviços. Existe um método para identificar o idioma de entrada. No entanto, você precisará definir o modelo de tradução explicitamente.

function translateText(params) {

  const languageTranslator = new LanguageTranslatorV3({
    version: '2017-09-21',
    authenticator: new IamAuthenticator({
      apikey: process.env.TRANSLATE_IAM_APIKEY,
    }),
    url: process.env.TRANSLATE_URL,
  });

  const translateParams = {
    text: params.text,
    modelId: 'en-es',
  };

  languageTranslator.translate(translateParams)
    .then(data => {
      console.dir(data, {depth: null})
    })
    .catch(err => {
      console.log('error:', err);
    });
}

Mais uma vez, a resposta não contém o texto original; portanto, planeje-se adequadamente.

{
  status: 200,
  statusText: 'OK',
  headers: {
    'content-type': 'application/json;charset=UTF-8',
    'content-length': '104',
    'x-xss-protection': '1; mode=block',
    'x-content-type-options': 'nosniff',
    'content-security-policy': "default-src 'none'",
    'cache-control': 'no-cache, no-store',
    pragma: 'no-cache',
    'content-language': 'en-US',
    'strict-transport-security': 'max-age=31536000; includeSubDomains;',
    'x-global-transaction-id': 'guid',
    'x-dp-watson-tran-id': 'guid',
    'x-edgeconnect-midmile-rtt': '25',
    'x-edgeconnect-origin-mex-latency': '229',
    date: 'DATE/TIME OF CALL',
    connection: 'close'
  },
  result: {
    translations: [ { translation: 'Hi' } ],
    word_count: 1,
    character_count: 4
  }
}

Você pode configurar seu próprio projeto seguindo meu tutorial.

Preços

O preços do IBM Watson Language Translator foi, de longe, o mais confuso. Existe uma versão Lite, que é o plano gratuito. Você pode usar 1 milhão de caracteres por mês sem nenhum custo. No entanto, você não poderá usar modelos personalizados até ter um plano pago, e os serviços da versão Lite são excluídos após 30 dias de inatividade.

O plano Standard oferece 250.000 caracteres gratuitos, mas o item da lista tinha um asterisco e não trazia mais detalhes (presumo que as traduções padrão utilizem os modelos padrão). Após os 250.000 iniciais, o preço é de US$ 0,02 por mil. Esse preço equivale a US$ 20 por milhão, se você fizer as contas.

O plano Avançado parece não oferecer os 250.000 caracteres gratuitos, mas ainda assim cobra o mesmo preço do plano Padrão. Verifique se o mesmo número de caracteres gratuitos se aplica a este plano também antes de comprar. As traduções de modelos personalizados custarão US$ 100 por milhão de caracteres, mais uma taxa de manutenção de US$ 15 por modelo por mês.

Resumo

O uso de aprendizado de máquina e modelos de linguagem neural para traduzir textos é uma ferramenta poderosa para qualquer aplicação. Os modelos não são perfeitos, e o serviço talvez nunca seja igual a uma tradução feita por um ser humano. No entanto, as traduções em tempo real, que facilitam a comunicação global, são valiosas demais para que não se continue a aprimorá-las.

Acho um pouco decepcionante que nenhum dos quatro serviços retorne o texto original na chamada. Acho que seria bom ter alguma maneira de saber, com base na resposta, a qual tradução corresponde, caso algo se confunda durante o processo.

No geral, acho que cada serviço é bom o suficiente para lidar com a maioria dos casos de uso que seu aplicativo exigiria. As traduções parecem precisas. No entanto, acredito que o preço da IBM seja um pouco alto, considerando o número menor de idiomas suportados e a falta de detecção automática de idioma. No meu caso, eu optaria pelo Azure ou pelo Google devido à maturidade de suas ofertas e modelos de linguagem.

Se você tiver alguma dúvida ou comentário, fique à vontade para deixá-los abaixo ou entrar em contato comigo no Twitter (@kellyjandrews).

Compartilhar:

https://a.storyblok.com/f/270183/384x384/444c073b5e/kellyjandrews.png
Kelly J AndrewsEx-membro da equipe

Kelly J Andrews é defensora de desenvolvedores da Nexmo e vem se dedicando à informática há mais de 30 anos, tendo usado BASIC pela primeira vez aos 5 anos de idade.

Foi só ao criar sua primeira página da web, em 1997, e ao experimentar o JavaScript pela primeira vez que ele descobriu sua verdadeira vocação. Hoje, Kelly luta pelo JavaScript, pelo código testável e pela entrega rápida.

É possível encontrá-lo cantando no karaokê, fazendo truques de mágica ou torcendo pelos Cubs e pelos Fighting Irish.