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 |
- Możesz wysłać zapytanie do usługi pod kątem
translation
obsługiwanych języków zakresu. - Zobacz też Obsługa języka na potrzeby transliteracji.
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ą parametruto
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 totrue
.sourceText
: obiekt z pojedynczą właściwością ciągu o nazwietext
, 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 poleceniudocker 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 ↔
- Przejdź do strony struktury Swagger:
http://localhost:5000/swagger/index.html
- Wybierz pozycję POST /translate
- Wybierz pozycję Wypróbuj
- Wprowadź parametr From jako
en
- Wprowadź parametr To jako
de
- Wprowadź parametr api-version jako
3.0
- 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=html
polecenia . 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
Korzystając z preferowanego edytora lub środowiska IDE, utwórz nowy katalog dla aplikacji o nazwie
container-environment
lub wybranej nazwy.Utwórz nowy plik YAML o nazwie
compose.yaml
. Dla pliku można użyćcompose
zarówno rozszerzeń .yml, jak i yaml.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
Nazwa najwyższego poziomu (
azure-ai-translator
,azure-ai-language
,azure-ai-read
) to określony parametr.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}
Otwórz terminal przejdź do
container-environment
folderu i uruchom kontenery za pomocą następującegodocker-compose
polecenia:docker compose up
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 wcompose.yaml
konfiguracji, te zmiany nie zostaną zaktualizowane zadocker compose restart
pomocą polecenia . Musisz użyćdocker compose up
polecenia , aby odzwierciedlić aktualizacje i zmiany wcompose.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.