Container: Tekst vertalen

Tekst vertalen.

Aanvraag-URL

Een aanvraag POST versturen naar:

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

Voorbeeldaanvraag

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

Voorbeeldantwoord

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

Aanvraagparameters

Aanvraagparameters die worden doorgegeven aan de queryreeks zijn:

Vereiste parameters

Queryparameter Beschrijving Voorwaarde
api-versie Versie van de API die door de client is aangevraagd. Waarde moet zijn 3.0. Vereiste parameter
from Hiermee geeft u de taal van de invoertekst. Vereiste parameter
to Hiermee geeft u de taal van de uitvoertekst. Gebruik bijvoorbeeld to=de om te vertalen naar het Duits.
Het is mogelijk om te vertalen naar meerdere talen tegelijk door de parameter in de querytekenreeks te herhalen. Gebruik bijvoorbeeld to=de&to=it om te vertalen naar Duits en Italiaans.
Vereiste parameter

Optionele parameters

Queryparameter Beschrijving
textType Optionele parameter.
Hiermee bepaalt u of de tekst die wordt vertaald tekst zonder opmaak of HTML-tekst is. Elke HTML moet een goed gevormd, volledig element zijn. Mogelijke waarden zijn: plain (standaard) of html.
includeSentenceLength Optionele parameter.
Hiermee geeft u op of zingrenzen moeten worden opgenomen voor de invoertekst en de vertaalde tekst. Mogelijke waarden zijn: true of false (standaard).

Aanvraagheaders

Kopteksten Beschrijving Voorwaarde
Verificatieheaders Bekijkbeschikbare opties voor verificatie. Vereiste aanvraagheader
Inhoudstype Hiermee geeft u het inhoudstype van de payload op.
De geaccepteerde waarde is application/json; charset=UTF-8.
Vereiste aanvraagheader
Content-Length De lengte van de aanvraagtekst. Optioneel
X-ClientTraceId Een door de client gegenereerde GUID om de aanvraag op unieke wijze te identificeren. U kunt deze header weglaten als u de tracerings-id in de queryreeks opneemt middels een queryparameter met de naam ClientTraceId. Optioneel

Aanvraagtekst

De hoofdtekst van de aanvraag is een JSON-matrix. Elk matrixelement is een JSON-object met een tekenreekseigenschap met de naam Text, die de tekenreeks vertegenwoordigt die moet worden vertaald.

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

De volgende beperkingen zijn van toepassing:

  • De matrix kan maximaal 100 elementen bevatten.
  • De volledige tekst in de aanvraag mag niet langer zijn dan 10.000 tekens, inclusief spaties.

Hoofdtekst van de reactie

Een geslaagd antwoord is een JSON-matrix met één resultaat voor elke tekenreeks in de invoermatrix. Een resultaatobject bevat de volgende eigenschappen:

  • translations: Een matrix met vertaalresultaten. De grootte van de matrix komt overeen met het aantal doeltalen dat is opgegeven via de to queryparameter. Elk element in de matrix omvat:

  • to: Een tekenreeks die de taalcode van de doeltaal vertegenwoordigt.

  • text: Een tekenreeks die de vertaalde tekst geeft.

  • sentLen: Een object dat zinsgrenzen retourneert in de in- en uitvoerteksten.

  • srcSentLen: Een matrix met gehele getallen die de lengte van de zinnen in de invoertekst aangeeft. De lengte van de matrix is het aantal zinnen en de waarden zijn de lengte van elke zin.

  • transSentLen: Een matrix met gehele getallen die de lengte van de zinnen in de vertaalde tekst aangeeft. De lengte van de matrix is het aantal zinnen en de waarden zijn de lengte van elke zin.

    Zingrenzen worden alleen opgenomen wanneer de aanvraagparameter includeSentenceLength is true.

    • sourceText: Een object met één tekenreekseigenschap met de naam text, die de invoertekst in het standaardscript van de brontaal geeft. sourceText eigenschap is alleen aanwezig wanneer de invoer wordt uitgedrukt in een script dat niet het gebruikelijke script voor de taal is. Als de invoer bijvoorbeeld Arabisch is geschreven in het Latijnse script, sourceText.text dan zou dezelfde Arabische tekst worden geconverteerd naar het Arabische schrift.

Responsheaders

Kopteksten Beschrijving
X-RequestId Waarde die door de service wordt gegenereerd om de aanvraag te identificeren en voor probleemoplossingsdoeleinden te gebruiken.
X-MT-System Hiermee geeft u het systeemtype op dat is gebruikt voor vertaling voor elke 'to'-taal die is aangevraagd voor vertaling. De waarde is een door komma's gescheiden lijst met tekenreeksen. Elke tekenreeks geeft een type aan:

▪ Aangepast - Aanvraag bevat een aangepast systeem en ten minste één aangepast systeem is gebruikt tijdens de vertaling.
▪ Team - Alle andere aanvragen

Antwoordstatuscodes

Als er een fout optreedt, retourneert de aanvraag een JSON-foutreactie. De foutcode is een getal van 6 cijfers dat de HTTP-statuscode van 3 cijfers combineert, gevolgd door een 3-cijferig getal om de fout verder te categoriseren. Algemene foutcodes vindt u op de naslagpagina van v3 Translator.

Codevoorbeelden: tekst vertalen

Notitie

  • Elk voorbeeld wordt uitgevoerd op de localhost opdracht die u hebt docker run opgegeven.
  • Terwijl uw container wordt uitgevoerd, localhost verwijst u naar de container zelf.
  • Je hoeft niet te gebruiken localhost:5000. U kunt elke poort gebruiken die nog niet in gebruik is in uw hostomgeving.

Eén invoer vertalen

In dit voorbeeld ziet u hoe u één zin van het Engels naar vereenvoudigd Chinees vertaalt.

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

De hoofdtekst van het antwoord is:

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

De translations matrix bevat één element, waarmee de vertaling van het ene stuk tekst in de invoer wordt gegeven.

Query's uitvoeren op Azure AI Vertalen-eindpunt (tekst)

Hier volgt een voorbeeld van een cURL HTTP-aanvraag met behulp van localhost:5000 die u hebt opgegeven met de docker run opdracht:

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

Notitie

Als u de cURL POST-aanvraag probeert uit te voeren voordat de container gereed is, krijgt u uiteindelijk tijdelijk een service niet beschikbaar antwoord. Wacht totdat de container gereed is en probeer het opnieuw.

Tekst vertalen met behulp van Swagger-API

Engels ↔ Duits

  1. Ga naar de Swagger-pagina: http://localhost:5000/swagger/index.html
  2. POST /vertalen selecteren
  3. Selecteer Uitproberen
  4. Voer de parameter From in als en
  5. Voer de parameter Aan in als de
  6. Voer de parameter api-versie in als 3.0
  7. Vervang onder teksten door string de volgende JSON
  [
        {
            "text": "hello, how are you"
        }
  ]

Selecteer Uitvoeren, de resulterende vertalingen worden uitgevoerd in de hoofdtekst van het antwoord. U ziet de volgende antwoorden:

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

Tekst vertalen met Python

Engels ↔ Frans

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

Tekst vertalen met C#/.NET-console-app

Engels ↔ Spaans

Start Visual Studio en maak een nieuwe consoletoepassing. Bewerk het bestand om het *.csproj<LangVersion>7.1</LangVersion> knooppunt toe te voegen. Hiermee geeft u C# 7.1 op. Voeg het Newtoonsoft.Json NuGet-pakket versie 11.0.2 toe.

Program.cs Vervang alle bestaande code door het volgende 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();
            }
        }
    }
}

Meerdere tekenreeksen vertalen

Het vertalen van meerdere tekenreeksen tegelijk is een kwestie van het opgeven van een matrix met tekenreeksen in de hoofdtekst van de aanvraag.

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

Het antwoord bevat de vertaling van alle stukken tekst in exact dezelfde volgorde als in de aanvraag. De hoofdtekst van het antwoord is:

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

Vertalen naar meerdere talen

In dit voorbeeld ziet u hoe u dezelfde invoer in meerdere talen in één aanvraag kunt vertalen.

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

De hoofdtekst van het antwoord is:

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

Inhoud vertalen met markeringen en vertaalde inhoud opgeven

Het is gebruikelijk om inhoud te vertalen die markeringen bevat, zoals inhoud van een HTML-pagina of inhoud uit een XML-document. Voeg de queryparameter textType=html toe bij het vertalen van inhoud met tags. Daarnaast is het soms handig om specifieke inhoud uit te sluiten van vertaling. U kunt het kenmerk class=notranslate gebruiken om inhoud op te geven die in de oorspronkelijke taal moet blijven. In het volgende voorbeeld wordt de inhoud in het eerste div element niet vertaald, terwijl de inhoud in het tweede div element wordt vertaald.

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

Hier volgt een voorbeeldaanvraag ter illustratie.

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

Het antwoord is:

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

Vertalen met dynamische woordenlijst

Als u al weet welke vertaling u wilt toepassen op een woord of woordgroep, dan kunt u deze als markering opgeven in de aanvraag. De dynamische woordenlijst is alleen veilig voor zelfstandige naamwoorden, zoals persoonlijke namen en productnamen.

De op te geven opmaak maakt gebruik van de volgende syntaxis.

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

Denk bijvoorbeeld aan de Engelse zin 'Het woord wordomatic is een woordenlijstvermelding'. Als u het woordmatisch in de vertaling wilt behouden, verzendt u de aanvraag:

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

Het resultaat is:

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

Deze functie werkt op dezelfde manier met textType=text of met textType=html. De functie moet spaarzaam worden gebruikt. De juiste en veel betere manier om vertaling aan te passen is met behulp van aangepaste Vertalen. Custom Translator maakt volledig gebruik van de context- en statistische waarschijnlijkheden. Als u trainingsgegevens hebt gemaakt waarin uw werk of woordgroep in context wordt weergegeven, krijgt u betere resultaten. Meer informatie over aangepaste Vertalen.

Aanvraaglimieten

Elke vertaalaanvraag is beperkt tot 10.000 tekens, in alle doeltalen waarnaar u vertaalt. Als u bijvoorbeeld een vertaalaanvraag van 3000 tekens verzendt om te vertalen naar drie verschillende talen, resulteert dit in een aanvraaggrootte van 3000x3 = 9.000 tekens, die voldoen aan de aanvraaglimiet. Er worden kosten per teken in rekening gebracht, niet op basis van het aantal aanvragen. We raden u aan kortere aanvragen te verzenden.

De volgende tabel bevat matrixelement- en tekenlimieten voor de Vertalen vertaalbewerking.

Operation Maximale grootte van matrixelement Maximum aantal matrixelementen Maximale aanvraaggrootte (tekens)
Vertalen 10,000 100 10,000

Docker compose gebruiken: Vertalen met ondersteunende containers

Docker Compose is een hulpprogramma waarmee u toepassingen met meerdere containers kunt configureren met behulp van één YAML-bestand met de naam compose.yaml. Gebruik de docker compose up opdracht om uw containertoepassing en de docker compose down opdracht te starten om uw containers te stoppen en te verwijderen.

Als u Docker Desktop CLI hebt geïnstalleerd, bevat het Docker Compose en de bijbehorende vereisten. Zie het overzicht Docker Compose installeren als u geen Docker Desktop hebt.

De volgende tabel bevat de vereiste ondersteunende containers voor uw tekst- en documentomzettingsbewerkingen. De Vertalen-container verzendt factureringsgegevens naar Azure via de Azure AI-Vertalen-resource in uw Azure-account.

Operation Aanvraagquery Documenttype Ondersteunende containers
•Vertalen van tekst
• Documentomzetting
from Opgegeven. Office-documenten Geen
•Vertalen van tekst
• Documentomzetting
from niet opgegeven. Vereist automatische taaldetectie om de brontaal te bepalen. Office-documenten ✔️ Text Analytics:language-container
•Vertalen van tekst
• Documentomzetting
from Opgegeven. Gescande PDF-documenten ✔️ Vision:read-container
•Vertalen van tekst
• Documentomzetting
from is niet opgegeven waarvoor automatische taaldetectie is vereist om de brontaal te bepalen. Gescande PDF-documenten ✔️ Text Analytics:language-container

✔️ Vision:read-container
Containerinstallatiekopieën en -tags

De containerinstallatiekopieën van Azure AI-services vindt u in de Microsoft-artefactregister catalogus. De volgende tabel bevat de volledig gekwalificeerde afbeeldingslocatie voor tekst- en documentomzetting:

Container Locatie van afbeelding Opmerkingen
Vertalen: Tekstomzetting mcr.microsoft.com/azure-cognitive-services/translator/text-translation:latest U kunt de volledige lijst met azure AI-services tekstomzettingstags bekijken op MCR.
Vertalen: Documentomzetting TODO TODO
Tekstanalyse: taal mcr.microsoft.com/azure-cognitive-services/textanalytics/language:latest U kunt de volledige lijst met azure AI-services Text Analytics Language-versietags bekijken op MCR.
Visie: lezen mcr.microsoft.com/azure-cognitive-services/vision/read:latest U kunt de volledige lijst met Azure AI-services Computer Vision-versietags OCR bekijken op MCR.

Uw toepassing maken

  1. Maak met behulp van uw favoriete editor of IDE een nieuwe map voor uw app met de naam container-environment of een naam van uw keuze.

  2. Maak een nieuw YAML-bestand met de naam compose.yaml. Zowel de .yml- als .yaml-extensies kunnen worden gebruikt voor het compose bestand.

  3. Kopieer en plak het volgende YAML-codevoorbeeld in uw compose.yaml bestand. Vervang en door {TRANSLATOR_KEY} de sleutel- en {TRANSLATOR_ENDPOINT_URI} eindpuntwaarden uit uw Azure-portal Vertalen exemplaar. Zorg ervoor dat u de document translation endpoint.

  4. De naam op het hoogste niveau (azure-ai-translator, azure-ai-language, azure-ai-read) is de parameter die u opgeeft.

  5. Dit container_name is een optionele parameter waarmee een naam voor de container wordt ingesteld wanneer deze wordt uitgevoerd, in plaats van een naam te docker compose genereren.

    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. Open een terminal navigeer naar de container-environment map en start de containers met de volgende docker-compose opdracht:

    docker compose up
    
  7. Gebruik de volgende opdracht om de containers te stoppen:

    docker compose down
    

    Tip

    docker compose Opdrachten:

    • docker compose pause onderbreekt actieve containers.
    • docker compose unpause {your-container-name} onderbroken containers worden niet gebruikt.
    • docker compose restart start alle gestopte en actieve container opnieuw met alle eerdere wijzigingen intact. Als u wijzigingen aanbrengt in uw compose.yaml configuratie, worden deze wijzigingen niet bijgewerkt met de docker compose restart opdracht. U moet de docker compose up opdracht gebruiken om updates en wijzigingen in het compose.yaml bestand weer te geven.
    • docker compose ps -a geeft een lijst weer van alle containers, inclusief containers die zijn gestopt.
    • docker compose exechiermee kunt u opdrachten uitvoeren om omgevingsvariabelen los te koppelen of in te stellen in een actieve container.

    Ziedocker CLI-naslaginformatie voor meer informatie.

Volgende stappen