Container: Översätta text
Översätt text.
Begärans-URL
Skicka en POST
-begäran till:
POST http://localhost:{port}/translate?api-version=3.0&&from={from}&to={to}
Exempelbegäran
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.'}]"
Exempelsvar
[
{
"translations": [
{
"text": "Realmente me gustaría conducir su coche.",
"to": "es"
}
]
}
]
Parametrar för begäran
Begärandeparametrar som skickas på frågesträngen är:
Obligatoriska parametrar
Frågeparameter | beskrivning | Villkor |
---|---|---|
api-version | Version av API:et som begärs av klienten. Värdet måste vara 3.0 . |
Obligatorisk parameter |
from | Anger språket för indatatexten. | Obligatorisk parameter |
to | Anger språket för utdatatexten. Använd till exempel to=de för att översätta till tyska.Det går att översätta till flera språk samtidigt genom att upprepa parametern i frågesträngen. Använd till exempel to=de&to=it för att översätta till tyska och italienska. |
Obligatorisk parameter |
- Du kan fråga tjänsten om
translation
omfångsstödda språk. - Se även Språkstöd för transkribering.
Valfria parametrar
Frågeparameter | beskrivning |
---|---|
textType | Valfri parameter. Definierar om texten som översätts är oformaterad text eller HTML-text. Html-kod måste vara ett välformat, komplett element. Möjliga värden är: plain (standard) eller html . |
includeSentenceLength | Valfri parameter. Anger om meningsgränser ska inkluderas för indatatexten och den översatta texten. Möjliga värden är: true eller false (standard). |
Begärandehuvuden
Sidhuvuden | beskrivning | Villkor |
---|---|---|
Autentiseringshuvuden | Se tillgängliga alternativ för autentisering. | Obligatoriskt begärandehuvud |
Innehållstyp | Anger nyttolastens innehållstyp. Godkänt värde är application/json; charset=UTF-8 . |
Obligatoriskt begärandehuvud |
Innehållslängd | Längden på begärandetexten. | Valfritt |
X-ClientTraceId | Ett klientgenererat GUID för att unikt identifiera begäran. Du kan utelämna den här rubriken om du inkluderar spårnings-ID:t i frågesträngen med hjälp av en frågeparameter med namnet ClientTraceId . |
Valfritt |
Begärandetext
Brödtexten i begäran är en JSON-matris. Varje matriselement är ett JSON-objekt med en strängegenskap med namnet Text
, som representerar strängen som ska översättas.
[
{"Text":"I would really like to drive your car around the block a few times."}
]
Följande begränsningar gäller:
- Matrisen kan ha högst 100 element.
- Hela texten som ingår i begäran får inte överstiga 50 000 tecken, inklusive blanksteg.
Själva svaret
Ett lyckat svar är en JSON-matris med ett resultat för varje sträng i indatamatrisen. Ett resultatobjekt innehåller följande egenskaper:
translations
: En matris med översättningsresultat. Matrisens storlek matchar antalet målspråk som anges via frågeparameternto
. Varje element i matrisen innehåller:to
: En sträng som representerar språkkoden för målspråket.text
: En sträng som ger den översatta texten.sentLen
: Ett objekt som returnerar meningsgränser i indata- och utdatatexterna.srcSentLen
: En heltalsmatris som representerar längden på meningarna i indatatexten. Matrisens längd är antalet meningar och värdena är längden på varje mening.transSentLen
: En heltalsmatris som representerar längden på meningarna i den översatta texten. Matrisens längd är antalet meningar och värdena är längden på varje mening.Meningsgränser inkluderas endast när parametern
includeSentenceLength
för begäran ärtrue
.sourceText
: Ett objekt med en enskild strängegenskap med namnettext
, som ger indatatexten i standardskriptet för källspråket.sourceText
egenskapen finns bara när indata uttrycks i ett skript som inte är det vanliga skriptet för språket. Om indata till exempel var arabiska skrivna i latinskt skript skulle sammasourceText.text
arabiska text konverteras till arabiskt skript.
Svarsrubriker
Sidhuvuden | beskrivning |
---|---|
X-RequestId | Värde som genereras av tjänsten för att identifiera begäran och som används för felsökning. |
X-MT-System | Anger den systemtyp som användes för översättning för varje "till"-språk som begärdes för översättning. Värdet är en kommaavgränsad lista med strängar. Varje sträng anger en typ: ▪ Anpassad – Begäran innehåller ett anpassat system och minst ett anpassat system användes under översättningen. ▪ Team – Alla andra begäranden |
Svarsstatuskoder
Om ett fel inträffar returnerar begäran ett JSON-felsvar. Felkoden är ett 6-siffrigt tal som kombinerar den tresiffriga HTTP-statuskoden följt av ett tresiffrigt tal för att ytterligare kategorisera felet. Vanliga felkoder finns på referenssidan för Translator v3.
Kodexempel: översätta text
Kommentar
- Varje exempel körs på det
localhost
som du angav meddocker run
kommandot . - När containern körs
localhost
pekar den på själva containern. - Du behöver inte använda
localhost:5000
. Du kan använda alla portar som inte redan används i värdmiljön.
Översätta en enda indata
Det här exemplet visar hur du översätter en enda mening från engelska till förenklad kinesiska.
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?'}]"
Svarstexten är:
[
{
"translations":[
{"text":"你好, 你叫什么名字?","to":"zh-Hans"}
]
}
]
Matrisen translations
innehåller ett element som ger översättning av den enda textdelen i indata.
Fråga Azure AI Translator-slutpunkten (text)
Här är ett exempel på en cURL HTTP-begäran med hjälp av localhost:5000 som du angav med docker run
kommandot :
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?'}]"
Kommentar
Om du försöker utföra cURL POST-begäran innan containern är klar får du ett svar om att tjänsten inte är tillgänglig för tillfället. Vänta tills containern är klar och försök sedan igen.
Översätta text med Swagger API
Engelska ↔ tyska
- Gå till Swagger-sidan:
http://localhost:5000/swagger/index.html
- Välj POST /translate
- Välj Prova
- Ange parametern Från som
en
- Ange parametern Till som
de
- Ange parametern api-version som
3.0
- Under texter ersätter du
string
med följande JSON
[
{
"text": "hello, how are you"
}
]
Välj Kör. De resulterande översättningarna matas ut i svarstexten. Du bör se följande svar:
"translations": [
{
"text": "hallo, wie geht es dir",
"to": "de"
}
]
Översätta text med Python
Engelska ↔ franska
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=(',', ': ')))
Översätta text med C#/.NET-konsolappen
Engelska ↔ spanska
Starta Visual Studio och skapa ett nytt konsolprogram. *.csproj
Redigera filen för att lägga till <LangVersion>7.1</LangVersion>
noden – anger C# 7.1. Lägg till NuGet-paketet Newtoonsoft.Json version 11.0.2.
I ersätt Program.cs
all befintlig kod med följande skript:
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();
}
}
}
}
Översätta flera strängar
Att översätta flera strängar samtidigt handlar helt enkelt om att ange en matris med strängar i begärandetexten.
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.'}]"
Svaret innehåller översättningen av alla textstycken i exakt samma ordning som i begäran. Svarstexten är:
[
{
"translations":[
{"text":"你好, 你叫什么名字?","to":"zh-Hans"}
]
},
{
"translations":[
{"text":"我很好,谢谢你。","to":"zh-Hans"}
]
}
]
Översätt till flera språk
Det här exemplet visar hur du översätter samma indata till flera språk i en begäran.
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?'}]"
Svarstexten är:
[
{
"translations":[
{"text":"你好, 你叫什么名字?","to":"zh-Hans"},
{"text":"Hallo, was ist dein Name?","to":"de"}
]
}
]
Översätta innehåll med markering och ange översatt innehåll
Det är vanligt att översätta innehåll som innehåller markering, till exempel innehåll från en HTML-sida eller innehåll från ett XML-dokument. Inkludera frågeparameter textType=html
när du översätter innehåll med taggar. Dessutom är det ibland användbart att undanta specifikt innehåll från översättning. Du kan använda attributet class=notranslate
för att ange innehåll som ska finnas kvar på ursprungsspråket. I följande exempel översätts inte innehållet i det första div
elementet, medan innehållet i det andra div
elementet översätts.
<div class="notranslate">This will not be translated.</div>
<div>This will be translated. </div>
Här är en exempelbegäran som ska illustreras.
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>'}]"
Svaret är:
[
{
"translations":[
{"text":"<div class=\"notranslate\">This will not be translated.</div><div>这将被翻译。</div>","to":"zh-Hans"}
]
}
]
Översätt med dynamisk ordlista
Om du redan känner till den översättning som du vill använda för ett ord eller en fras kan du ange den som markering i begäran. Den dynamiska ordlistan är bara säker för lämpliga substantiv, till exempel personliga namn och produktnamn.
Markering som ska anges använder följande syntax.
<mstrans:dictionary translation="translation of phrase">phrase</mstrans:dictionary>
Tänk till exempel på den engelska meningen "Ordet ordomatisk är en ordlistepost". Skicka begäran för att bevara ordet ordomatiskt i översättningen:
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.'}]"
Resultatet är:
[
{
"translations":[
{"text":"Das Wort \"wordomatic\" ist ein Wörterbucheintrag.","to":"de"}
]
}
]
Den här funktionen fungerar på samma sätt med textType=text
eller med textType=html
. Funktionen bör användas sparsamt. Det lämpliga och mycket bättre sättet att anpassa översättningen är att använda Custom Translator. Custom Translator använder kontext och statistiska sannolikheter fullt ut. Om du har skapat träningsdata som visar ditt arbete eller din fras i kontext får du bättre resultat. Läs mer om Custom Translator.
Frågebegränsningar
Varje översättningsbegäran är begränsad till 50 000 tecken över alla målspråk som du översätter till. Om du till exempel skickar en översättningsbegäran på 3 000 tecken för att översätta till tre olika språk resulterar det i en begäransstorlek på 3 000 x 3 = 9 000 tecken, vilket uppfyller begärandegränsen. Du debiteras per tecken, inte av antalet begäranden. Vi rekommenderar att du skickar kortare begäranden.
I följande tabell visas matriselement och teckengränser för översättningsåtgärden Translator.
Åtgärd | Maximal storlek på matriselement | Maximalt antal matriselement | Maximal begärandestorlek (tecken) |
---|---|---|---|
översätta | 10,000 | 100 | 50,000 |
Använda docker compose: Translator med stödcontainrar
Docker Compose är ett verktyg som gör att du kan konfigurera program med flera containrar med hjälp av en enda YAML-fil med namnet compose.yaml
. docker compose up
Använd kommandot för att starta containerprogrammet och docker compose down
kommandot för att stoppa och ta bort containrarna.
Om du har installerat Docker Desktop CLI innehåller det Docker Compose och dess förutsättningar. Om du inte har Docker Desktop kan du läsa översikten Installera Docker Compose.
I följande tabell visas de nödvändiga stödcontainrarna för text- och dokumentöversättningsåtgärderna. Translator-containern skickar faktureringsinformation till Azure via Azure AI Translator-resursen på ditt Azure-konto.
Åtgärd | Begärandefråga | Dokumenttyp | Stödcontainrar |
---|---|---|---|
• Textöversättning • Dokumentöversättning |
from specificerade. |
Office-dokument | Ingen |
• Textöversättning • Dokumentöversättning |
from inte har angetts. Kräver automatisk språkidentifiering för att fastställa källspråket. |
Office-dokument | ✔️ Textanalys:språkcontainer |
• Textöversättning • Dokumentöversättning |
from specificerade. |
Skannade PDF-dokument | Vision:read container ✔️ |
• Textöversättning • Dokumentöversättning |
from inte anges som kräver automatisk språkidentifiering för att fastställa källspråket. |
Skannade PDF-dokument | ✔️ Textanalys:språkcontainer Vision:read container ✔️ |
Containeravbildningar och taggar
Containeravbildningarna för Azure AI-tjänster finns i Microsofts artefaktregister-katalogen. I följande tabell visas den fullständigt kvalificerade bildplatsen för text- och dokumentöversättning:
Container | Bildplats | Kommentar |
---|---|---|
Translator: Textöversättning | mcr.microsoft.com/azure-cognitive-services/translator/text-translation:latest |
Du kan visa den fullständiga listan över versionstaggar för Textöversättning för Azure AI-tjänster på MCR. |
Translator: Dokumentöversättning | ATT GÖRA | ATT GÖRA |
Textanalys: språk | mcr.microsoft.com/azure-cognitive-services/textanalytics/language:latest |
Du kan visa den fullständiga listan över Azure AI-tjänster Textanalys Språkversionstaggar på MCR. |
Vision: läs | mcr.microsoft.com/azure-cognitive-services/vision/read:latest |
Du kan visa den fullständiga listan över Azure AI-tjänster Visuellt innehåll Läs OCR versionstaggar på MCR. |
Skapa ditt program
Använd din föredragna redigerare eller IDE och skapa en ny katalog för din app med namnet
container-environment
eller ett valfritt namn.Skapa en ny YAML-fil med namnet
compose.yaml
. Både .yml- eller .yaml-tilläggen kan användas förcompose
filen.Kopiera och klistra in följande YAML-kodexempel i
compose.yaml
filen. Ersätt{TRANSLATOR_KEY}
och{TRANSLATOR_ENDPOINT_URI}
med nyckel- och slutpunktsvärdena från din Azure Portal Translator-instans. Kontrollera att du använderdocument translation endpoint
.Det översta namnet (
azure-ai-translator
,azure-ai-language
,azure-ai-read
) är den parameter som du anger.container_name
är en valfri parameter som anger ett namn för containern när den körs, i stället för att låtadocker compose
generera ett namn.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}
Öppna en terminal navigera till
container-environment
mappen och starta containrarna med följandedocker-compose
kommando:docker compose up
Om du vill stoppa containrarna använder du följande kommando:
docker compose down
Dricks
docker compose
Kommandon:docker compose pause
pausar containrar som körs.docker compose unpause {your-container-name}
pausade containrar.docker compose restart
startar om alla stoppade och körs containern med alla dess tidigare ändringar intakta. Om du gör ändringar i konfigurationencompose.yaml
uppdateras inte dessa ändringar meddocker compose restart
kommandot . Du måste användadocker compose up
kommandot för att återspegla uppdateringar och ändringar icompose.yaml
filen.docker compose ps -a
visar en lista över alla containrar, inklusive de som stoppas.docker compose exec
gör att du kan köra kommandon för att koppla från eller ange miljövariabler i en container som körs.
Mer information finns i docker CLI-referens.