Sdílet prostřednictvím


Kontejner: Překlad textu

Přeložit text

Adresa URL požadavku

Odešlete požadavek POST do:

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

Příklad požadavku

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

Příklad odpovědi

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

Parametry požadavku

Parametry požadavku předané v řetězci dotazu jsou:

Povinné parametry

Parametr dotazu Popis Podmínka
verze-api Verze rozhraní API požadovaného klientem Hodnota musí být 3.0. Povinný parametr
from Určuje jazyk vstupního textu. Povinný parametr
na Určuje jazyk výstupního textu. Slouží to=de například k překladu do němčiny.
Parametr v řetězci dotazu je možné přeložit na více jazyků současně. Slouží to=de&to=it například k překladu do němčiny a italštiny.
Povinný parametr

Volitelné parametry

Parametr dotazu Popis
textType Volitelný parametr.
Definuje, zda je přeložený text prostým textem nebo textem HTML. Libovolný kód HTML musí být správně formátovaný a úplný prvek. Možné hodnoty jsou: plain (výchozí) nebo html.
includeSentenceLength Volitelný parametr.
Určuje, jestli se mají zahrnout hranice vět pro vstupní text a přeložený text. Možné hodnoty jsou: true nebo false (výchozí).

Záhlaví žádosti

Hlavičky Popis Podmínka
Hlavičky ověřování Podívejte se na dostupné možnosti ověřování. Požadovaná hlavička požadavku
Typ obsahu Určuje typ obsahu datové části.
Akceptovaná hodnota je application/json; charset=UTF-8.
Požadovaná hlavička požadavku
Délka obsahu Délka textu požadavku. Volitelné
X-ClientTraceId Identifikátor GUID vygenerovaný klientem pro jedinečnou identifikaci požadavku. Tuto hlavičku můžete vynechat, pokud do řetězce dotazu zahrnete ID trasování pomocí parametru dotazu s názvem ClientTraceId. Volitelné

Text požadavku

Text požadavku je pole JSON. Každý prvek pole je objekt JSON s řetězcovou vlastností s názvem Text, která představuje řetězec k překladu.

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

Platí následující omezení:

  • Pole může mít maximálně 100 prvků.
  • Celý text obsažený v požadavku nesmí překročit 50 000 znaků včetně mezer.

Text odpovědi

Úspěšná odpověď je pole JSON s jedním výsledkem pro každý řetězec ve vstupním poli. Výsledný objekt obsahuje následující vlastnosti:

  • translations: Pole výsledků překladu. Velikost pole odpovídá počtu cílových jazyků zadaných pomocí parametru to dotazu. Každý prvek v poli zahrnuje:

  • to: Řetězec představující kód jazyka cílového jazyka.

  • text: Řetězec, který dává přeložený text.

  • sentLen: Objekt vracející hranice vět ve vstupním a výstupním textu.

  • srcSentLen: Celočíselná matice představující délky vět ve vstupním textu. Délka pole je počet vět a hodnoty jsou délkou každé věty.

  • transSentLen: Celočíselná matice představující délky vět v přeloženého textu. Délka pole je počet vět a hodnoty jsou délkou každé věty.

    Hranice vět jsou zahrnuty pouze v případech, kdy je trueparametr includeSentenceLength požadavku .

    • sourceText: Objekt s jednou řetězcovou vlastností s názvem text, která dává vstupní text ve výchozím skriptu zdrojového jazyka. sourceText vlastnost je přítomna pouze v případě, že vstup je vyjádřen ve skriptu, který není obvyklým skriptem pro jazyk. Pokud byl například vstup napsaný v latince, byl sourceText.text by stejný arabský text převedený na arabský skript.

Hlavičky odpovědi

Hlavičky Popis
X-RequestId Hodnota vygenerovaná službou k identifikaci požadavku a použití pro účely řešení potíží.
X-MT-System Určuje typ systému, který byl použit pro překlad pro každý jazyk "to" požadovaný pro překlad. Hodnota je čárkami oddělený seznam řetězců. Každý řetězec označuje typ:

▪ Vlastní – Požadavek zahrnuje vlastní systém a při překladu byl použit aspoň jeden vlastní systém.
▪ Tým – všechny ostatní žádosti

Stavové kódy odpovědí

Pokud dojde k chybě, požadavek vrátí chybovou odpověď JSON. Kód chyby je 6místné číslo, které kombinuje 3místný stavový kód HTTP následovaný 3místným číslem, aby se chyba dále kategorizovala. Běžné kódy chyb najdete na referenční stránce služby Translator v3.

Ukázky kódu: překlad textu

Poznámka:

  • Každá ukázka se spustí na localhost zadaném docker run příkazu.
  • Zatímco je kontejner spuštěný, localhost odkazuje na samotný kontejner.
  • Nemusíte používat localhost:5000. V hostitelském prostředí můžete použít libovolný port, který se ještě nepoužívá.

Překlad jednoho vstupu

Tento příklad ukazuje, jak přeložit jednu větu z angličtiny do zjednodušené čínštiny.

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

Tělo odpovědi je:

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

Pole translations obsahuje jeden prvek, který poskytuje překlad jednoho textu ve vstupu.

Dotazování koncového bodu Azure AI Translatoru (text)

Tady je příklad požadavku HTTP cURL pomocí localhost:5000, který jste zadali pomocí docker run příkazu:

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

Poznámka:

Pokud se pokusíte o požadavek POST cURL, než bude kontejner připravený, budete mít dočasně nedostupnou odpověď na službu. Počkejte, až bude kontejner připravený, a zkuste to znovu.

Překlad textu pomocí rozhraní API Swaggeru

Angličtina němčina ↔

  1. Přejděte na stránku Swaggeru: http://localhost:5000/swagger/index.html
  2. Vyberte POST /translate.
  3. Vyberte Vyzkoušet
  4. Zadejte parametr From jakoen
  5. Zadejte parametr To jakode
  6. Zadejte parametr api-version jako3.0
  7. V textu nahraďte string následujícím kódem JSON.
  [
        {
            "text": "hello, how are you"
        }
  ]

Vyberte Spustit, výsledné překlady jsou výstupem v textu odpovědi. Měla by se zobrazit následující odpověď:

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

Překlad textu pomocí Pythonu

Angličtina francouzština ↔

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

Překlad textu pomocí konzolové aplikace C#/.NET

Angličtina španělština ↔

Spusťte Visual Studio a vytvořte novou konzolovou aplikaci. *.csproj Upravte soubor pro přidání <LangVersion>7.1</LangVersion> uzlu – určuje C# 7.1. Přidejte balíček NuGet Newtoonsoft.Json verze 11.0.2.

Program.cs Ve všech existujících kódech nahraďte následujícím skriptem:

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

Překlad více řetězců

Překlad více řetězců najednou je jednoduše otázkou zadání pole řetězců v textu požadavku.

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

Odpověď obsahuje překlad všech částí textu ve stejném pořadí jako v požadavku. Tělo odpovědi je:

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

Překlad do více jazyků

Tento příklad ukazuje, jak přeložit stejný vstup do několika jazyků v jednom požadavku.

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

Tělo odpovědi je:

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

Překlad obsahu pomocí revizí a zadání přeložených obsahu

Běžně se překládá obsah, který obsahuje značky, jako je například obsah ze stránky HTML nebo obsahu z dokumentu XML. Při překladu obsahu se značkami zahrňte parametr textType=html dotazu. Kromě toho je někdy užitečné vyloučit konkrétní obsah z překladu. Atribut můžete použít class=notranslate k určení obsahu, který by měl zůstat v původním jazyce. V následujícím příkladu není obsah uvnitř prvního div prvku přeložen, zatímco obsah v druhém div prvku je přeložen.

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

Tady je ukázkový požadavek na ilustraci.

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

Odpověď je:

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

Překlad pomocí dynamického slovníku

Pokud už znáte překlad, který chcete použít pro slovo nebo frázi, můžete ho zadat jako revizi v rámci požadavku. Dynamický slovník je bezpečný pouze pro správná podstatná jména, jako jsou osobní jména a názvy produktů.

Kód, který se má zadat, používá následující syntaxi.

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

Představte si například anglickou větu "Slovo wordomatic je položka slovníku". Pokud chcete zachovat slovo wordomatic v překladu, odešlete požadavek:

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

Výsledkem je:

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

Tato funkce funguje stejně s textType=text nebo s textType=html. Tato funkce by se měla používat střídmě. Vhodným a mnohem lepším způsobem přizpůsobení překladu je použití služby Custom Translator. Custom Translator plně využívá kontextové a statistické pravděpodobnosti. Pokud jste vytvořili trénovací data, která zobrazují vaši práci nebo frázi v kontextu, získáte lepší výsledky. Přečtěte si další informace o službě Custom Translator.

Omezení pro žádosti

Každý požadavek překladu je omezený na 50 000 znaků ve všech cílových jazycích, na které překládáte. Odesláním žádosti o překlad 3 000 znaků se například přeloží do tří různých jazyků, výsledkem je velikost požadavku 3000 × 3 = 9 000 znaků, které splňují limit požadavku. Účtují se vám poplatky za každý znak, ne počtem požadavků. Doporučujeme odesílat kratší žádosti.

Následující tabulka uvádí omezení prvků pole a znaků pro operaci překladu služby Translator.

Operace Maximální velikost prvku pole Maximální počet prvků pole Maximální velikost požadavku (znaky)
překládat 10,000 100 50 000

Použití docker compose: Translator s podpůrnými kontejnery

Docker compose je nástroj, který umožňuje konfigurovat vícekontejnerové aplikace pomocí jednoho souboru YAML, který se obvykle jmenuje compose.yaml. docker compose up Pomocí příkazu spusťte aplikaci kontejneru docker compose down a příkaz k zastavení a odebrání kontejnerů.

Pokud jste nainstalovali Rozhraní příkazového řádku Docker Desktopu, zahrnuje docker compose a jeho požadavky. Pokud nemáte Docker Desktop, podívejte se na přehled instalace Docker Compose.

Následující tabulka obsahuje seznam požadovaných podpůrných kontejnerů pro operace překladu textu a dokumentu. Kontejner Translator odesílá fakturační údaje do Azure prostřednictvím prostředku Azure AI Translator na vašem účtu Azure.

Operace Dotaz požadavku Typ dokumentu Podpůrné kontejnery
• Překlad textu
• Překlad dokumentu
from specifikovaný. Dokumenty Office Nic
• Překlad textu
• Překlad dokumentu
from není zadáno. K určení zdrojového jazyka vyžaduje automatickou detekci jazyka. Dokumenty Office ✔️ Analýza textu:kontejner jazyka
• Překlad textu
• Překlad dokumentu
from specifikovaný. Naskenované dokumenty PDF Vision:read container ✔️
• Překlad textu
• Překlad dokumentu
from není určeno, že k určení zdrojového jazyka vyžaduje automatickou detekci jazyka. Naskenované dokumenty PDF ✔️ Analýza textu:kontejner jazyka

Vision:read container ✔️
Image a značky kontejnerů

Image kontejnerů služeb Azure AI najdete v katalogu Registr artefaktů Microsoft. Následující tabulka uvádí plně kvalifikované umístění obrázku pro překlad textu a dokumentu:

Kontejner Umístění obrázku Notes
Translator: Překlad textu mcr.microsoft.com/azure-cognitive-services/translator/text-translation:latest Úplný seznam značek verzí překladu textu ve službách Azure AI najdete v MCR.
Translator: Překlad dokumentů TODO TODO
Analýza textu: jazyk mcr.microsoft.com/azure-cognitive-services/textanalytics/language:latest Úplný seznam služeb Azure AI Analýza textu Značky verzí jazyka najdete v MCR.
Vize: čtení mcr.microsoft.com/azure-cognitive-services/vision/read:latest Úplný seznam služeb Azure AI Počítačové zpracování obrazu značky verze číst OCR v MCR.

Vytvořte si svoji aplikaci

  1. Pomocí preferovaného editoru nebo integrovaného vývojového prostředí vytvořte pro aplikaci nový adresář s názvem container-environment nebo názvem podle vašeho výběru.

  2. Vytvořte nový soubor YAML s názvem compose.yaml. Pro soubor lze použít compose přípony .yml nebo .yaml.

  3. Zkopírujte a vložte následující ukázku kódu YAML do souboru compose.yaml . Nahraďte a {TRANSLATOR_ENDPOINT_URI} nahraďte {TRANSLATOR_KEY} hodnoty klíče a koncového bodu z vaší instance služby Translator na webu Azure Portal. Ujistěte se, že používáte document translation endpoint.

  4. Název nejvyšší úrovně (azure-ai-translator, azure-ai-language, azure-ai-read) je parametr, který zadáte.

  5. Jedná se container_name o volitelný parametr, který při spuštění nastaví název kontejneru, a nevolí docker compose vygenerovat název.

    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. Otevřete terminál, přejděte do container-environment složky a spusťte kontejnery pomocí následujícího docker-compose příkazu:

    docker compose up
    
  7. Pokud chcete kontejnery zastavit, použijte následující příkaz:

    docker compose down
    

    Tip

    docker compose příkazy:

    • docker compose pause pozastaví spuštěné kontejnery.
    • docker compose unpause {your-container-name} odpausuje pozastavené kontejnery.
    • docker compose restart restartuje veškerý zastavený a spuštěný kontejner se všemi jeho předchozími změnami beze změny. Pokud provedete změny konfigurace compose.yaml , tyto změny se neaktualizují pomocí docker compose restart příkazu. K zobrazení aktualizací a změn v compose.yaml souboru musíte použít docker compose up příkaz.
    • docker compose ps -a zobrazí seznam všech kontejnerů, včetně těch, které jsou zastaveny.
    • docker compose exec umožňuje spouštět příkazy pro odpojení nebo nastavení proměnných prostředí ve spuštěném kontejneru.

    Další informace najdete v referenčních informacích k rozhraní příkazového řádku Dockeru.

Další kroky