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 |
- Službu můžete dotazovat na
translation
podporované jazyky rozsahu. - Viz také podpora jazyka pro transkliteraci.
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í parametruto
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
true
parametrincludeSentenceLength
požadavku .sourceText
: Objekt s jednou řetězcovou vlastností s názvemtext
, 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, bylsourceText.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émdocker 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 ↔
- Přejděte na stránku Swaggeru:
http://localhost:5000/swagger/index.html
- Vyberte POST /translate.
- Vyberte Vyzkoušet
- Zadejte parametr From jako
en
- Zadejte parametr To jako
de
- Zadejte parametr api-version jako
3.0
- 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
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.Vytvořte nový soubor YAML s názvem
compose.yaml
. Pro soubor lze použítcompose
přípony .yml nebo .yaml.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átedocument translation endpoint
.Název nejvyšší úrovně (
azure-ai-translator
,azure-ai-language
,azure-ai-read
) je parametr, který zadáte.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}
Otevřete terminál, přejděte do
container-environment
složky a spusťte kontejnery pomocí následujícíhodocker-compose
příkazu:docker compose up
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 konfiguracecompose.yaml
, tyto změny se neaktualizují pomocídocker compose restart
příkazu. K zobrazení aktualizací a změn vcompose.yaml
souboru musíte použítdocker 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.