Container: Översätta text

Översätt text.

Begärans-URL

Skicka en POST-begäran till:

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

Exempelbegäran

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.'}]"

Exempelsvar

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

Parametrar för begäran

Begärandeparametrar som skickas på frågesträngen är:

Obligatoriska parametrar

Frågeparameter beskrivning Villkor
api-version Version av API:et som begärs av klienten. Värdet måste vara 3.0. Obligatorisk parameter
from Anger språket för indatatexten. Obligatorisk parameter
to Anger språket för utdatatexten. Använd till exempel to=de för att översätta till tyska.
Det går att översätta till flera språk samtidigt genom att upprepa parametern i frågesträngen. Använd till exempel to=de&to=it för att översätta till tyska och italienska.
Obligatorisk parameter

Valfria parametrar

Frågeparameter beskrivning
textType Valfri parameter.
Definierar om texten som översätts är oformaterad text eller HTML-text. Html-kod måste vara ett välformat, komplett element. Möjliga värden är: plain (standard) eller html.
includeSentenceLength Valfri parameter.
Anger om meningsgränser ska inkluderas för indatatexten och den översatta texten. Möjliga värden är: true eller false (standard).

Begärandehuvuden

Sidhuvuden beskrivning Villkor
Autentiseringshuvuden Setillgängliga alternativ för autentisering. Obligatoriskt begärandehuvud
Innehållstyp Anger nyttolastens innehållstyp.
Godkänt värde är application/json; charset=UTF-8.
Obligatoriskt begärandehuvud
Innehållslängd Längden på begärandetexten. Valfritt
X-ClientTraceId Ett klientgenererat GUID för att unikt identifiera begäran. Du kan utelämna den här rubriken om du inkluderar spårnings-ID:t i frågesträngen med hjälp av en frågeparameter med namnet ClientTraceId. Valfritt

Begärandetext

Brödtexten i begäran är en JSON-matris. Varje matriselement är ett JSON-objekt med en strängegenskap med namnet Text, som representerar strängen som ska översättas.

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

Följande begränsningar gäller:

  • Matrisen kan ha högst 100 element.
  • Hela texten som ingår i begäran får inte överstiga 10 000 tecken, inklusive blanksteg.

Själva svaret

Ett lyckat svar är en JSON-matris med ett resultat för varje sträng i indatamatrisen. Ett resultatobjekt innehåller följande egenskaper:

  • translations: En matris med översättningsresultat. Matrisens storlek matchar antalet målspråk som anges via frågeparametern to . Varje element i matrisen innehåller:

  • to: En sträng som representerar språkkoden för målspråket.

  • text: En sträng som ger den översatta texten.

  • sentLen: Ett objekt som returnerar meningsgränser i indata- och utdatatexterna.

  • srcSentLen: En heltalsmatris som representerar längden på meningarna i indatatexten. Matrisens längd är antalet meningar och värdena är längden på varje mening.

  • transSentLen: En heltalsmatris som representerar längden på meningarna i den översatta texten. Matrisens längd är antalet meningar och värdena är längden på varje mening.

    Meningsgränser inkluderas endast när parametern includeSentenceLength för begäran är true.

    • sourceText: Ett objekt med en enskild strängegenskap med namnet text, som ger indatatexten i standardskriptet för källspråket. sourceText egenskapen finns bara när indata uttrycks i ett skript som inte är det vanliga skriptet för språket. Om indata till exempel var arabiska skrivna i latinskt skript skulle samma sourceText.text arabiska text konverteras till arabiskt skript.

Svarsrubriker

Sidhuvuden beskrivning
X-RequestId Värde som genereras av tjänsten för att identifiera begäran och som används för felsökning.
X-MT-System Anger den systemtyp som användes för översättning för varje "till"-språk som begärdes för översättning. Värdet är en kommaavgränsad lista med strängar. Varje sträng anger en typ:

▪ Anpassad – Begäran innehåller ett anpassat system och minst ett anpassat system användes under översättningen.
▪ Team – Alla andra begäranden

Svarsstatuskoder

Om ett fel inträffar returnerar begäran ett JSON-felsvar. Felkoden är ett 6-siffrigt tal som kombinerar den tresiffriga HTTP-statuskoden följt av ett tresiffrigt tal för att ytterligare kategorisera felet. Vanliga felkoder finns på referenssidan för Translator v3.

Kodexempel: översätta text

Kommentar

  • Varje exempel körs på det localhost som du angav med docker run kommandot .
  • När containern körs localhost pekar den på själva containern.
  • Du behöver inte använda localhost:5000. Du kan använda alla portar som inte redan används i värdmiljön.

Översätta en enda indata

Det här exemplet visar hur du översätter en enda mening från engelska till förenklad kinesiska.

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?'}]"

Svarstexten är:

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

Matrisen translations innehåller ett element som ger översättning av den enda textdelen i indata.

Fråga Azure AI Translator-slutpunkten (text)

Här är ett exempel på en cURL HTTP-begäran med hjälp av localhost:5000 som du angav med docker run kommandot :

  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?'}]"

Kommentar

Om du försöker utföra cURL POST-begäran innan containern är klar får du ett svar om att tjänsten inte är tillgänglig för tillfället. Vänta tills containern är klar och försök sedan igen.

Översätta text med Swagger API

Engelska ↔ tyska

  1. Gå till Swagger-sidan: http://localhost:5000/swagger/index.html
  2. Välj POST /translate
  3. Välj Prova
  4. Ange parametern Från som en
  5. Ange parametern Till som de
  6. Ange parametern api-version som 3.0
  7. Under texter ersätter du string med följande JSON
  [
        {
            "text": "hello, how are you"
        }
  ]

Välj Kör. De resulterande översättningarna matas ut i svarstexten. Du bör se följande svar:

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

Översätta text med Python

Engelska ↔ franska

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=(',', ': ')))

Översätta text med C#/.NET-konsolappen

Engelska ↔ spanska

Starta Visual Studio och skapa ett nytt konsolprogram. *.csproj Redigera filen för att lägga till <LangVersion>7.1</LangVersion> noden – anger C# 7.1. Lägg till NuGet-paketet Newtoonsoft.Json version 11.0.2.

I ersätt Program.cs all befintlig kod med följande skript:

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();
            }
        }
    }
}

Översätta flera strängar

Att översätta flera strängar samtidigt handlar helt enkelt om att ange en matris med strängar i begärandetexten.

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.'}]"

Svaret innehåller översättningen av alla textstycken i exakt samma ordning som i begäran. Svarstexten är:

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

Översätt till flera språk

Det här exemplet visar hur du översätter samma indata till flera språk i en begäran.

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?'}]"

Svarstexten är:

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

Översätta innehåll med markering och ange översatt innehåll

Det är vanligt att översätta innehåll som innehåller markering, till exempel innehåll från en HTML-sida eller innehåll från ett XML-dokument. Inkludera frågeparameter textType=html när du översätter innehåll med taggar. Dessutom är det ibland användbart att undanta specifikt innehåll från översättning. Du kan använda attributet class=notranslate för att ange innehåll som ska finnas kvar på ursprungsspråket. I följande exempel översätts inte innehållet i det första div elementet, medan innehållet i det andra div elementet översätts.

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

Här är en exempelbegäran som ska illustreras.

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>'}]"

Svaret är:

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

Översätt med dynamisk ordlista

Om du redan känner till den översättning som du vill använda för ett ord eller en fras kan du ange den som markering i begäran. Den dynamiska ordlistan är bara säker för lämpliga substantiv, till exempel personliga namn och produktnamn.

Markering som ska anges använder följande syntax.

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

Tänk till exempel på den engelska meningen "Ordet ordomatisk är en ordlistepost". Skicka begäran för att bevara ordet ordomatiskt i översättningen:

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.'}]"

Resultatet är:

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

Den här funktionen fungerar på samma sätt med textType=text eller med textType=html. Funktionen bör användas sparsamt. Det lämpliga och mycket bättre sättet att anpassa översättningen är att använda Custom Translator. Custom Translator använder kontext och statistiska sannolikheter fullt ut. Om du har skapat träningsdata som visar ditt arbete eller din fras i kontext får du bättre resultat. Läs mer om Custom Translator.

Frågebegränsningar

Varje översättningsbegäran är begränsad till 10 000 tecken över alla målspråk som du översätter till. Om du till exempel skickar en översättningsbegäran på 3 000 tecken för att översätta till tre olika språk resulterar det i en begäransstorlek på 3 000 x 3 = 9 000 tecken, vilket uppfyller begärandegränsen. Du debiteras per tecken, inte av antalet begäranden. Vi rekommenderar att du skickar kortare begäranden.

I följande tabell visas matriselement och teckengränser för översättningsåtgärden Translator.

Åtgärd Maximal storlek på matriselement Maximalt antal matriselement Maximal begärandestorlek (tecken)
Översätta 10,000 100 10,000

Använda docker compose: Translator med stödcontainrar

Docker Compose är ett verktyg som gör att du kan konfigurera program med flera containrar med hjälp av en enda YAML-fil med namnet compose.yaml. docker compose up Använd kommandot för att starta containerprogrammet och docker compose down kommandot för att stoppa och ta bort containrarna.

Om du har installerat Docker Desktop CLI innehåller det Docker Compose och dess förutsättningar. Om du inte har Docker Desktop kan du läsa översikten Installera Docker Compose.

I följande tabell visas de nödvändiga stödcontainrarna för text- och dokumentöversättningsåtgärderna. Translator-containern skickar faktureringsinformation till Azure via Azure AI Translator-resursen på ditt Azure-konto.

Åtgärd Begärandefråga Dokumenttyp Stödcontainrar
• Textöversättning
• Dokumentöversättning
from Angivna. Office-dokument Ingen
• Textöversättning
• Dokumentöversättning
from inte har angetts. Kräver automatisk språkidentifiering för att fastställa källspråket. Office-dokument ✔️ Textanalys:språkcontainer
• Textöversättning
• Dokumentöversättning
from Angivna. Skannade PDF-dokument Vision:read container ✔️
• Textöversättning
• Dokumentöversättning
from inte anges som kräver automatisk språkidentifiering för att fastställa källspråket. Skannade PDF-dokument ✔️ Textanalys:språkcontainer

Vision:read container ✔️
Containeravbildningar och taggar

Containeravbildningarna för Azure AI-tjänster finns i Microsofts artefaktregister-katalogen. I följande tabell visas den fullständigt kvalificerade bildplatsen för text- och dokumentöversättning:

Container Bildplats Kommentar
Translator: Textöversättning mcr.microsoft.com/azure-cognitive-services/translator/text-translation:latest Du kan visa den fullständiga listan över versionstaggar för Textöversättning för Azure AI-tjänster på MCR.
Translator: Dokumentöversättning TODO TODO
Textanalys: språk mcr.microsoft.com/azure-cognitive-services/textanalytics/language:latest Du kan visa den fullständiga listan över Azure AI-tjänster Textanalys Språkversionstaggar på MCR.
Vision: läs mcr.microsoft.com/azure-cognitive-services/vision/read:latest Du kan visa den fullständiga listan över Azure AI-tjänster Visuellt innehåll Läs OCR versionstaggar på MCR.

Skapa ditt program

  1. Använd din föredragna redigerare eller IDE och skapa en ny katalog för din app med namnet container-environment eller ett valfritt namn.

  2. Skapa en ny YAML-fil med namnet compose.yaml. Både .yml- eller .yaml-tilläggen kan användas för compose filen.

  3. Kopiera och klistra in följande YAML-kodexempel i compose.yaml filen. Ersätt {TRANSLATOR_KEY} och {TRANSLATOR_ENDPOINT_URI} med nyckel- och slutpunktsvärdena från Azure Portal Translator-instansen. Kontrollera att du använder document translation endpoint.

  4. Det översta namnet (azure-ai-translator, azure-ai-language, azure-ai-read) är den parameter som du anger.

  5. container_name är en valfri parameter som anger ett namn för containern när den körs, i stället för att låta docker compose generera ett namn.

    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. Öppna en terminal navigera till container-environment mappen och starta containrarna med följande docker-compose kommando:

    docker compose up
    
  7. Om du vill stoppa containrarna använder du följande kommando:

    docker compose down
    

    Dricks

    docker compose Kommandon:

    • docker compose pause pausar containrar som körs.
    • docker compose unpause {your-container-name} pausade containrar.
    • docker compose restart startar om alla stoppade och körs containern med alla dess tidigare ändringar intakta. Om du gör ändringar i konfigurationen compose.yaml uppdateras inte dessa ändringar med docker compose restart kommandot . Du måste använda docker compose up kommandot för att återspegla uppdateringar och ändringar i compose.yaml filen.
    • docker compose ps -a visar en lista över alla containrar, inklusive de som stoppas.
    • docker compose exec gör att du kan köra kommandon för att koppla från eller ange miljövariabler i en container som körs.

    Mer information finns idocker CLI-referens.

Nästa steg