Udostępnij za pośrednictwem


Kontener: tłumaczenie tekstu

Tłumaczenie tekstu.

Adres URL żądania

Wyślij żądanie POST do:

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

Przykładowe żądanie

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

Przykładowa odpowiedź

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

Parametry żądania

Parametry żądania przekazane w ciągu zapytania to:

Parametry wymagane

Parametr zapytania opis Warunek
api-version Wersja interfejsu API żądanego przez klienta. Wartość musi mieć wartość 3.0. Wymagany parametr
z Określa język tekstu wejściowego. Wymagany parametr
na wartość Określa język tekstu wyjściowego. Na przykład użyj polecenia to=de , aby przetłumaczyć na język niemiecki.
Można przetłumaczyć na wiele języków jednocześnie, powtarzając parametr w ciągu zapytania. Na przykład użyj polecenia to=de&to=it , aby przetłumaczyć na język niemiecki i włoski.
Wymagany parametr

Parametry opcjonalne

Parametr zapytania opis
textType Opcjonalny parametr.
Określa, czy przetłumaczony tekst to zwykły tekst, czy tekst HTML. Każdy kod HTML musi być dobrze sformułowanym, kompletnym elementem. Możliwe wartości to: plain (wartość domyślna) lub html.
includeSentenceLength Opcjonalny parametr.
Określa, czy należy uwzględnić granice zdań dla tekstu wejściowego i przetłumaczonego tekstu. Możliwe wartości to: true lub false (wartość domyślna).

Nagłówki żądań

Nagłówki opis Warunek
Nagłówki uwierzytelniania Zobacz dostępne opcje uwierzytelniania. Wymagany nagłówek żądania
Typ zawartości Określa typ zawartości ładunku.
Zaakceptowana wartość to application/json; charset=UTF-8.
Wymagany nagłówek żądania
Długość zawartości Długość treści żądania. Opcjonalne
X-ClientTraceId Identyfikator GUID wygenerowany przez klienta w celu unikatowego zidentyfikowania żądania. Ten nagłówek można pominąć, jeśli dołączysz identyfikator śledzenia w ciągu zapytania przy użyciu parametru zapytania o nazwie ClientTraceId. Opcjonalne

Treść żądania

Treść żądania jest tablicą JSON. Każdy element tablicy jest obiektem JSON z właściwością ciągu o nazwie Text, która reprezentuje ciąg do przetłumaczenia.

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

Obowiązują następujące ograniczenia:

  • Tablica może zawierać co najwyżej 100 elementów.
  • Cały tekst zawarty w żądaniu nie może przekraczać 50 000 znaków, w tym spacji.

Treść odpowiedzi

Pomyślna odpowiedź to tablica JSON z jednym wynikiem dla każdego ciągu w tablicy wejściowej. Obiekt wynikowy zawiera następujące właściwości:

  • translations: tablica wyników tłumaczenia. Rozmiar tablicy odpowiada liczbie języków docelowych określonych za pomocą parametru to zapytania. Każdy element w tablicy zawiera następujące elementy:

  • to: ciąg reprezentujący kod języka języka docelowego.

  • text: ciąg dający przetłumaczony tekst.

  • sentLen: obiekt zwracający granice zdań w tekstach wejściowych i wyjściowych.

  • srcSentLen: Tablica całkowita reprezentująca długości zdań w tekście wejściowym. Długość tablicy to liczba zdań, a wartości są długością każdego zdania.

  • transSentLen: Tablica całkowita reprezentująca długości zdań w przetłumaczonym tekście. Długość tablicy to liczba zdań, a wartości są długością każdego zdania.

    Granice zdań są uwzględniane tylko wtedy, gdy parametr includeSentenceLength żądania to true.

    • sourceText: obiekt z pojedynczą właściwością ciągu o nazwie text, która daje tekst wejściowy w domyślnym skrycie języka źródłowego. sourceText właściwość jest obecna tylko wtedy, gdy dane wejściowe są wyrażane w skry skrycie, który nie jest zwykłym skryptem języka. Jeśli na przykład dane wejściowe zostały napisane w skrypcie łacińskim, sourceText.text będzie to ten sam tekst arabski przekonwertowany na skrypt arabski.

Nagłówki odpowiedzi

Nagłówki opis
X-RequestId Wartość wygenerowana przez usługę w celu zidentyfikowania żądania i użycia do celów rozwiązywania problemów.
X-MT-System Określa typ systemu, który został użyty do tłumaczenia dla każdego języka "do" żądanego do tłumaczenia. Wartość jest rozdzielaną przecinkami listą ciągów. Każdy ciąg wskazuje typ:

▪ Niestandardowe — żądanie zawiera system niestandardowy i co najmniej jeden system niestandardowy został użyty podczas tłumaczenia.
▪ Zespół — wszystkie inne żądania

Kody stanu odpowiedzi

Jeśli wystąpi błąd, żądanie zwraca odpowiedź błędu JSON. Kod błędu to 6-cyfrowy numer łączący 3-cyfrowy kod stanu HTTP, po którym następuje 3-cyfrowy numer w celu dalszego kategoryzowania błędu. Typowe kody błędów można znaleźć na stronie dokumentacji usługi Translator w wersji 3.

Przykłady kodu: tłumaczenie tekstu

Uwaga

  • Każdy przykład jest uruchamiany w localhost określonym poleceniu docker run .
  • Gdy kontener jest uruchomiony, localhost wskazuje sam kontener.
  • Nie musisz używać polecenia localhost:5000. Możesz użyć dowolnego portu, który nie jest jeszcze używany w środowisku hosta.

Tłumaczenie pojedynczego danych wejściowych

W tym przykładzie pokazano, jak przetłumaczyć pojedyncze zdanie z języka angielskiego na chiński uproszczony.

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

Treść odpowiedzi to:

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

Tablica translations zawiera jeden element, który zapewnia tłumaczenie pojedynczego fragmentu tekstu w danych wejściowych.

Wykonywanie zapytań względem punktu końcowego usługi Azure AI Translator (tekst)

Oto przykładowe żądanie HTTP cURL przy użyciu hosta lokalnego:5000, które zostało określone za docker run pomocą polecenia :

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

Uwaga

Jeśli spróbujesz wykonać żądanie POST cURL przed przygotowaniem kontenera, usługa zostanie tymczasowo niedostępna . Poczekaj, aż kontener będzie gotowy, a następnie spróbuj ponownie.

Tłumaczenie tekstu przy użyciu interfejsu API programu Swagger

Angielski niemiecki ↔

  1. Przejdź do strony struktury Swagger: http://localhost:5000/swagger/index.html
  2. Wybierz pozycję POST /translate
  3. Wybierz pozycję Wypróbuj
  4. Wprowadź parametr From jako en
  5. Wprowadź parametr To jakode
  6. Wprowadź parametr api-version jako3.0
  7. W obszarze teksty zastąp string ciąg następującym kodem JSON
  [
        {
            "text": "hello, how are you"
        }
  ]

Wybierz pozycję Wykonaj, wynikowe tłumaczenia są danymi wyjściowymi w treści odpowiedzi. Powinna zostać wyświetlona następująca odpowiedź:

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

Tłumaczenie tekstu przy użyciu języka Python

Angielski francuski ↔

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

Tłumaczenie tekstu za pomocą aplikacji konsolowej C#/.NET

Angielski ↔ hiszpański

Uruchom program Visual Studio i utwórz nową aplikację konsolową. Edytuj plik, *.csproj aby dodać <LangVersion>7.1</LangVersion> węzeł — określa język C# 7.1. Dodaj pakiet NuGet Newtoonsoft.Json w wersji 11.0.2.

Zastąp Program.cs cały istniejący kod następującym skryptem:

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

Tłumaczenie wielu ciągów

Tłumaczenie wielu ciągów jednocześnie jest po prostu kwestią określania tablicy ciągów w treści żądania.

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

Odpowiedź zawiera tłumaczenie wszystkich fragmentów tekstu w dokładnie takiej samej kolejności, jak w żądaniu. Treść odpowiedzi to:

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

Tłumaczenie na wiele języków

W tym przykładzie pokazano, jak przetłumaczyć te same dane wejściowe na kilka języków w jednym żądaniu.

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

Treść odpowiedzi to:

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

Tłumaczenie zawartości przy użyciu znaczników i określanie przetłumaczonej zawartości

Często tłumaczy się zawartość obejmującą znaczniki, takie jak zawartość ze strony HTML lub zawartości dokumentu XML. Uwzględnij parametr textType=html zapytania podczas tłumaczenia zawartości za pomocą tagów. Ponadto czasami warto wykluczyć konkretną zawartość z tłumaczenia. Możesz użyć atrybutu class=notranslate , aby określić zawartość, która powinna pozostać w oryginalnym języku. W poniższym przykładzie zawartość wewnątrz pierwszego div elementu nie jest tłumaczona, podczas gdy zawartość w drugim div elemecie jest tłumaczona.

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

Oto przykładowe żądanie ilustrujące.

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

Odpowiedź to:

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

Tłumaczenie przy użyciu słownika dynamicznego

Jeśli znasz już tłumaczenie, które chcesz zastosować do wyrazu lub frazy, możesz podać je jako znacznik w żądaniu. Słownik dynamiczny jest bezpieczny tylko dla właściwych rzeczowników, takich jak nazwy osobiste i nazwy produktów.

Znacznik do podania używa następującej składni.

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

Rozważmy na przykład zdanie w języku angielskim "Słowo wordomatic jest wpisem słownika". Aby zachować wyraz wordomatic w tłumaczeniu, wyślij żądanie:

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

Wynik to:

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

Ta funkcja działa w taki sam sposób, jak w przypadku textType=text polecenia lub za pomocą textType=htmlpolecenia . Funkcja powinna być używana oszczędnie. Odpowiedni i znacznie lepszy sposób dostosowywania tłumaczenia polega na użyciu usługi Custom Translator. Funkcja Custom Translator w pełni wykorzystuje kontekst i prawdopodobieństwa statystyczne. Jeśli utworzono dane szkoleniowe przedstawiające pracę lub frazę w kontekście, uzyskasz lepsze wyniki. Dowiedz się więcej o usłudze Custom Translator.

Limity żądań

Każde żądanie tłumaczenia jest ograniczone do 50 000 znaków we wszystkich językach docelowych, na które tłumaczysz. Na przykład wysłanie żądania tłumaczenia o 3000 znaków w celu tłumaczenia na trzy różne języki powoduje wysłanie żądania o rozmiarze 3000x3 = 9000 znaków, które spełniają limit żądań. Opłaty są naliczane za znak, a nie przez liczbę żądań. Zalecamy wysyłanie krótszych żądań.

W poniższej tabeli wymieniono limity elementów tablicy i znaków dla operacji tłumaczenia w usłudze Translator.

Operacja Maksymalny rozmiar elementu tablicy Maksymalna liczba elementów tablicy Maksymalny rozmiar żądania (znaki)
Przetłumacz 10,000 100 50,000

Korzystanie z narzędzia docker compose: translator z kontenerami pomocniczymi

Docker compose to narzędzie umożliwiające konfigurowanie aplikacji wielokontenerowych przy użyciu pojedynczego pliku YAML zwykle o nazwie compose.yaml. docker compose up Użyj polecenia , aby uruchomić aplikację kontenera i polecenie , docker compose down aby zatrzymać i usunąć kontenery.

Jeśli zainstalowano interfejs wiersza polecenia platformy Docker Desktop, zawiera on narzędzie Docker compose i jego wymagania wstępne. Jeśli nie masz programu Docker Desktop, zobacz Omówienie instalowania narzędzia Docker Compose.

W poniższej tabeli wymieniono wymagane kontenery pomocnicze dla operacji tłumaczenia tekstu i dokumentów. Kontener usługi Translator wysyła informacje rozliczeniowe na platformę Azure za pośrednictwem zasobu usługi Azure AI Translator na koncie platformy Azure.

Operacja Żądanie zapytania Document type Obsługa kontenerów
•Tłumaczenie tekstu
• Tłumaczenie dokumentów
from określony. Dokumenty pakietu Office Brak
•Tłumaczenie tekstu
• Tłumaczenie dokumentów
from nie określono. Wymaga automatycznego wykrywania języka w celu określenia języka źródłowego. Dokumenty pakietu Office ✔️ Analiza tekstu:kontener języka
•Tłumaczenie tekstu
• Tłumaczenie dokumentów
from określony. Zeskanowane dokumenty PDF Vision:read container ✔️
•Tłumaczenie tekstu
• Tłumaczenie dokumentów
from nie określono wymagania automatycznego wykrywania języka w celu określenia języka źródłowego. Zeskanowane dokumenty PDF ✔️ Analiza tekstu:kontener języka

Vision:read container ✔️
Obrazy kontenerów i tagi

Obrazy kontenerów usług Azure AI można znaleźć w katalogu Rejestr Artefaktów Microsoft. W poniższej tabeli wymieniono w pełni kwalifikowaną lokalizację obrazu na potrzeby tłumaczenia tekstu i dokumentu:

Kontener Lokalizacja obrazu Uwagi
Translator: tłumaczenie tekstu mcr.microsoft.com/azure-cognitive-services/translator/text-translation:latest Pełną listę tagów wersji tłumaczenia tekstu usług Azure AI można wyświetlić w mcR.
Translator: tłumaczenie dokumentów TODO TODO
Analiza tekstu: język mcr.microsoft.com/azure-cognitive-services/textanalytics/language:latest Pełną listę usług azure AI można wyświetlić analiza tekstu tagów wersji języka w mcR.
Wizja: odczyt mcr.microsoft.com/azure-cognitive-services/vision/read:latest Pełną listę usług azure AI można wyświetlić przetwarzanie obrazów Odczyt OCR tagów wersji w mcR.

Tworzenie aplikacji

  1. Korzystając z preferowanego edytora lub środowiska IDE, utwórz nowy katalog dla aplikacji o nazwie container-environment lub wybranej nazwy.

  2. Utwórz nowy plik YAML o nazwie compose.yaml. Dla pliku można użyć compose zarówno rozszerzeń .yml, jak i yaml.

  3. Skopiuj i wklej następujący przykładowy kod YAML do pliku compose.yaml . Zastąp {TRANSLATOR_KEY} wartości {TRANSLATOR_ENDPOINT_URI} klucz i punkt końcowy z wystąpienia usługi Translator w witrynie Azure Portal. Upewnij się, że używasz .document translation endpoint

  4. Nazwa najwyższego poziomu (azure-ai-translator, azure-ai-language, azure-ai-read) to określony parametr.

  5. Jest container_name to opcjonalny parametr, który ustawia nazwę kontenera podczas jego uruchamiania, zamiast zezwalać docker compose na generowanie nazwy.

    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. Otwórz terminal przejdź do container-environment folderu i uruchom kontenery za pomocą następującego docker-compose polecenia:

    docker compose up
    
  7. Aby zatrzymać kontenery, użyj następującego polecenia:

    docker compose down
    

    Napiwek

    docker compose Polecenia:

    • docker compose pause wstrzymuje uruchomione kontenery.
    • docker compose unpause {your-container-name} wstrzymuje wstrzymane kontenery.
    • docker compose restart Uruchamia ponownie wszystkie zatrzymane i uruchomione kontenery ze wszystkimi poprzednimi zmianami bez zmian. Jeśli wprowadzisz zmiany w compose.yaml konfiguracji, te zmiany nie zostaną zaktualizowane za docker compose restart pomocą polecenia . Musisz użyć docker compose up polecenia , aby odzwierciedlić aktualizacje i zmiany w compose.yaml pliku.
    • docker compose ps -a Wyświetla listę wszystkich kontenerów, w tym zatrzymanych.
    • docker compose exec Umożliwia wykonywanie poleceń w celu odłączenia lub ustawienia zmiennych środowiskowych w uruchomionym kontenerze.

    Aby uzyskać więcej informacji, zobacz dokumentację interfejsu wiersza polecenia platformy Docker.

Następne kroki