Začínáme s překladem dokumentů
V tomto článku se dozvíte, jak pomocí metod překladu dokumentů REST API HTTP. Překlad dokumentů je cloudová funkce služby Azure Translator Service. Rozhraní API pro překlad dokumentů umožňuje překlad celých dokumentů při zachování struktury zdrojového dokumentu a formátování textu.
Požadavky
Poznámka
- Obecně platí, že při vytváření prostředku služby Cognitive Service v Azure Portal máte možnost vytvořit klíč předplatného s více službami nebo klíč předplatného s jednou službou. Překlad dokumentů se ale aktuálně podporuje pouze v prostředku Translator (s jednou službou) a není součástí prostředku Cognitive Services (více služeb).
- Překlad dokumentů je k dispozici pouze v plánu služby S1 Standard (s platbou podle tarifu s platbou) nebo v plánu D3 Volume Discount Plan. Viz Cognitive Services ceny – Translator.
Abyste začali, budete potřebovat:
Aktivní účet Azure. Pokud ho nemáte, můžete si vytvořit bezplatný účet.
Prostředek s jednou službou Translator (nikoli prostředek s více Cognitive Services služby).
Účet služby Azure Blob Storage. Vytvoříte kontejnery pro ukládání a uspořádání dat objektů blob v rámci účtu úložiště.
Název vlastní domény a klíč předplatného
Důležité
- Všechny požadavky rozhraní API na službu překladu dokumentů vyžadují vlastní koncový bod domény.
- K požadavkům HTTP na překlad dokumentů nebudete používat koncový bod, který najdete na stránce klíčů Azure Portal a koncového bodu, ani globálního koncového bodu překladače.
api.cognitive.microsofttranslator.com
Co je koncový bod vlastní domény?
Koncový bod vlastní domény je adresa URL formátovaná pomocí názvu prostředku, názvu hostitele a Translator podadresářů:
https://<NAME-OF-YOUR-RESOURCE>.cognitiveservices.azure.com/translator/text/batch/v1.0
Vyhledání vlastního názvu domény
Parametr NAME-OF-YOUR-RESOURCE (také nazývaný vlastní název domény) je hodnota, kterou jste zadali do pole Název při vytváření prostředku Translator domény.
Získání klíče předplatného
Žádosti od Translator vyžadují pro ověřování přístupu klíč jen pro čtení.
- Pokud jste vytvořili nový prostředek, po jeho nasazení vyberte Přejít k prostředku. Pokud máte existující prostředek překladu dokumentů, přejděte přímo na stránku prostředku.
- V levé kolejnici v části Správa prostředků vyberte Klíče a koncový bod.
- Klíč předplatného zkopírujte a vložte do vhodného umístění, například Microsoft Poznámkový blok.
- Vložíte ho do následujícího kódu pro ověření vaší žádosti ve službě překladu dokumentů.
Vytvoření kontejnerů úložiště objektů blob v Azure
V účtu úložiště objektů blob v Azure budete muset vytvořit kontejnery pro zdrojové a cílové soubory.
- Zdrojový kontejner. Do tohoto kontejneru nahrajete soubory k překladu (povinné).
- Cílový kontejner. Do tohoto kontejneru se budou ukládat přeložené soubory (povinné).
Poznámka
Překlad dokumentů podporuje glosáře jako objekty blob v cílových kontejnerech (nikoli samostatné kontejnery glosáře). Pokud chcete zahrnout vlastní glosář, přidejte ho do cílového kontejneru a zahrnovat s glossaryUrl požadavkem . Pokud v glosáře není pár jazyka překladu, nebude použit. Viz Překlad dokumentů pomocí vlastního glosáře.
Vytvoření přístupových tokenů SAS pro překlad dokumentů
, sourceUrl targetUrl a nepovinné glossaryUrl musí obsahovat token sdíleného přístupového podpisu (SAS) připojený jako řetězec dotazu. Token je možné přiřadit ke kontejneru nebo konkrétním objektům blob. Viz Vytvoření tokenů SAS pro proces překladu dokumentů.
- Zdrojový kontejner nebo objekt blob musí mít určený přístup ke čtení a zobrazení seznamu.
- Cílový kontejner nebo objekt blob musí mít určený přístup k zápisu a seznamu.
- Objekt blob glosáře musí mít určený přístup pro čtení a seznam.
Tip
- Pokud v operaci překládáte více souborů (objektů blob), delegování přístupu SAS na úrovni kontejneru.
- Pokud v operaci překládáte jeden soubor (objekt blob), delegování přístupu SAS na úrovni objektu blob.
Překlad dokumentů: Požadavky HTTP
Dávkový požadavek na překlad dokumentů se do koncového Translator služby prostřednictvím požadavku POST. V případě úspěchu vrátí metoda POST kód odpovědi a služba 202 Accepted vytvoří požadavek batche.
Hlavičky PROTOKOLU HTTP
V každé žádosti rozhraní Document Translator API jsou následující hlavičky:
| Hlavička PROTOKOLU HTTP | Description |
|---|---|
| Ocp-Apim-Subscription-Key | Povinné: Hodnota je klíč předplatného Azure pro váš Translator nebo Cognitive Services prostředků. |
| Typ obsahu | Povinné: Určuje typ obsahu datové části. Akceptované hodnoty jsou application/json nebo charset=UTF-8. |
| Délka obsahu | Povinné: Délka textu požadavku. |
Vlastnosti textu požadavku POST
- Adresa URL požadavku POST je POST.
https://<NAME-OF-YOUR-RESOURCE>.cognitiveservices.azure.com/translator/text/batch/v1.0/batches - Text požadavku POST je objekt JSON s názvem
inputs. - Objekt
inputsobsahuje adresysourceURLkontejnerů i pro párytargetURLzdrojového a cílového jazyka. - Pole
prefixsuffixa (volitelné) slouží k filtrování dokumentů v kontejneru včetně složek. - Hodnota pole
glossaries(volitelné) se použije při překladu dokumentu. - Pro
targetUrlkaždý cílový jazyk musí být jedinečný.
Poznámka
Pokud v cíli již existuje soubor se stejným názvem, úloha selže.
Překlad všech dokumentů v kontejneru
{
"inputs": [
{
"source": {
"sourceUrl": "https://my.blob.core.windows.net/source-en?sv=2019-12-12&st=2021-03-05T17%3A45%3A25Z&se=2021-03-13T17%3A45%3A00Z&sr=c&sp=rl&sig=SDRPMjE4nfrH3csmKLILkT%2Fv3e0Q6SWpssuuQl1NmfM%3D"
},
"targets": [
{
"targetUrl": "https://my.blob.core.windows.net/target-fr?sv=2019-12-12&st=2021-03-05T17%3A49%3A02Z&se=2021-03-13T17%3A49%3A00Z&sr=c&sp=wdl&sig=Sq%2BYdNbhgbq4hLT0o1UUOsTnQJFU590sWYo4BOhhQhs%3D",
"language": "fr"
}
]
}
]
}
Překlad konkrétního dokumentu v kontejneru
- Ujistěte se, že jste zadali storageType: File.
- Ujistěte se, že jste vytvořili zdrojovou adresu URL & TOKEN SAS pro konkrétní objekt blob nebo dokument (ne pro kontejner).
- Ujistěte se, že jste jako součást cílové adresy URL zadali cílový název souboru , přestože token SAS je stále pro kontejner.
- Ukázkový požadavek níže ukazuje jeden dokument, který se překládá do dvou cílových jazyků.
{
"inputs": [
{
"storageType": "File",
"source": {
"sourceUrl": "https://my.blob.core.windows.net/source-en/source-english.docx?sv=2019-12-12&st=2021-01-26T18%3A30%3A20Z&se=2021-02-05T18%3A30%3A00Z&sr=c&sp=rl&sig=d7PZKyQsIeE6xb%2B1M4Yb56I%2FEEKoNIF65D%2Fs0IFsYcE%3D"
},
"targets": [
{
"targetUrl": "https://my.blob.core.windows.net/target/try/Target-Spanish.docx?sv=2019-12-12&st=2021-01-26T18%3A31%3A11Z&se=2021-02-05T18%3A31%3A00Z&sr=c&sp=wl&sig=AgddSzXLXwHKpGHr7wALt2DGQJHCzNFF%2F3L94JHAWZM%3D",
"language": "es"
},
{
"targetUrl": "https://my.blob.core.windows.net/target/try/Target-German.docx?sv=2019-12-12&st=2021-01-26T18%3A31%3A11Z&se=2021-02-05T18%3A31%3A00Z&sr=c&sp=wl&sig=AgddSzXLXwHKpGHr7wALt2DGQJHCzNFF%2F3L94JHAWZM%3D",
"language": "de"
}
]
}
]
}
Překlad dokumentů pomocí vlastního glosáře
{
"inputs": [
{
"source": {
"sourceUrl": "https://myblob.blob.core.windows.net/source",
"filter": {
"prefix": "myfolder/"
}
},
"targets": [
{
"targetUrl": "https://myblob.blob.core.windows.net/target",
"language": "es",
"glossaries": [
{
"glossaryUrl": "https:// myblob.blob.core.windows.net/glossary/en-es.xlf",
"format": "xliff"
}
]
}
]
}
]
}
Použití kódu k odesílání žádostí o překlad dokumentů
Nastavení platformy pro kódování
- Vytvoření nového projektu
- Nahraďte Soubor Program.cs kódem jazyka C# zobrazeným níže.
- V souboru Program.cs nastavte hodnoty koncového bodu, klíče předplatného a adresy URL kontejneru.
- Pokud chcete zpracovávat data JSON, přidejte balíček Installersoft.Json pomocí rozhraní příkazového řádku .NET CLI.
- Spusťte program z adresáře projektu.
Důležité
V případě níže uvedených ukázek kódu na místě, kde je to vyznačené, kód na pevném kódu zadáte. Nezapomeňte odebrat klíč z kódu, až budete hotovi, a nikdy ho veřejně ne zveřejníte. Způsoby Azure Cognitive Services a přístupu k přihlašovacím údajům najdete v tématu zabezpečení sítě.
V závislosti na operaci možná budete muset aktualizovat následující pole:
endpointsubscriptionKeysourceURLtargetURLglossaryURLid(ID úlohy)
Vyhledání id hodnoty
- Úlohu najdete v hodnotě adresy URL hlavičky odpovědi metody
idOperation-LocationPOST. Posledním parametrem adresy URL je úloha operaceid:
| Hlavička odpovědi | Adresa URL výsledku |
|---|---|
| Operation-Location | https://<NAME-OF-YOUR-RESOURCE>.cognitiveservices.azure.com/translator/text/batch/v1.0/batches/9dce0aa9-78dc-41ba-8cae-2e2f3c2ff8ec |
- K načtení úlohy překladu dokumentů můžete použít také požadavek GET Jobs
id(Úlohy GET).
Překlad dokumentů
using System;
using System.Net.Http;
using System.Threading.Tasks;
using System.Text;
class Program
{
static readonly string route = "/batches";
private static readonly string endpoint = "https://<NAME-OF-YOUR-RESOURCE>.cognitiveservices.azure.com/translator/text/batch/v1.0";
private static readonly string subscriptionKey = "<YOUR-SUBSCRIPTION-KEY>";
static readonly string json = ("{\"inputs\": [{\"source\": {\"sourceUrl\": \"https://YOUR-SOURCE-URL-WITH-READ-LIST-ACCESS-SAS\",\"storageSource\": \"AzureBlob\",\"language\": \"en\",\"filter\":{\"prefix\": \"Demo_1/\"} }, \"targets\": [{\"targetUrl\": \"https://YOUR-TARGET-URL-WITH-WRITE-LIST-ACCESS-SAS\",\"storageSource\": \"AzureBlob\",\"category\": \"general\",\"language\": \"es\"}]}]}");
static async Task Main(string[] args)
{
using HttpClient client = new HttpClient();
using HttpRequestMessage request = new HttpRequestMessage();
{
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
request.Method = HttpMethod.Post;
request.RequestUri = new Uri(endpoint + route);
request.Headers.Add("Ocp-Apim-Subscription-Key", subscriptionKey);
request.Content = content;
HttpResponseMessage response = await client.SendAsync(request);
string result = response.Content.ReadAsStringAsync().Result;
if (response.IsSuccessStatusCode)
{
Console.WriteLine($"Status code: {response.StatusCode}");
Console.WriteLine();
Console.WriteLine($"Response Headers:");
Console.WriteLine(response.Headers);
}
else
Console.Write("Error");
}
}
}
}
Získání formátů souborů
Načtení seznamu podporovaných formátů souborů V případě úspěchu vrátí tato metoda 200 OK kód odpovědi.
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
private static readonly string endpoint = "https://<NAME-OF-YOUR-RESOURCE>.cognitiveservices.azure.com/translator/text/batch/v1.0";
static readonly string route = "/documents/formats";
private static readonly string subscriptionKey = "<YOUR-SUBSCRIPTION-KEY>";
static async Task Main(string[] args)
{
HttpClient client = new HttpClient();
using HttpRequestMessage request = new HttpRequestMessage();
{
request.Method = HttpMethod.Get;
request.RequestUri = new Uri(endpoint + route);
request.Headers.Add("Ocp-Apim-Subscription-Key", subscriptionKey);
HttpResponseMessage response = await client.SendAsync(request);
string result = response.Content.ReadAsStringAsync().Result;
Console.WriteLine($"Status code: {response.StatusCode}");
Console.WriteLine($"Response Headers: {response.Headers}");
Console.WriteLine();
Console.WriteLine(result);
}
}
Získání stavu úlohy
Získejte aktuální stav pro jednu úlohu a souhrn všech úloh v žádosti o překlad dokumentu. V případě úspěchu vrátí tato metoda 200 OK kód odpovědi.
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
private static readonly string endpoint = "https://<NAME-OF-YOUR-RESOURCE>.cognitiveservices.azure.com/translator/text/batch/v1.0";
static readonly string route = "/batches/{id}";
private static readonly string subscriptionKey = "<YOUR-SUBSCRIPTION-KEY>";
static async Task Main(string[] args)
{
HttpClient client = new HttpClient();
using HttpRequestMessage request = new HttpRequestMessage();
{
request.Method = HttpMethod.Get;
request.RequestUri = new Uri(endpoint + route);
request.Headers.Add("Ocp-Apim-Subscription-Key", subscriptionKey);
HttpResponseMessage response = await client.SendAsync(request);
string result = response.Content.ReadAsStringAsync().Result;
Console.WriteLine($"Status code: {response.StatusCode}");
Console.WriteLine($"Response Headers: {response.Headers}");
Console.WriteLine();
Console.WriteLine(result);
}
}
Získání stavu dokumentu
Stručný přehled
Načtěte stav konkrétního dokumentu v požadavku na překlad dokumentu. V případě úspěchu vrátí tato metoda 200 OK kód odpovědi.
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
private static readonly string endpoint = "https://<NAME-OF-YOUR-RESOURCE>.cognitiveservices.azure.com/translator/text/batch/v1.0";
static readonly string route = "/{id}/document/{documentId}";
private static readonly string subscriptionKey = "<YOUR-SUBSCRIPTION-KEY>";
static async Task Main(string[] args)
{
HttpClient client = new HttpClient();
using HttpRequestMessage request = new HttpRequestMessage();
{
request.Method = HttpMethod.Get;
request.RequestUri = new Uri(endpoint + route);
request.Headers.Add("Ocp-Apim-Subscription-Key", subscriptionKey);
HttpResponseMessage response = await client.SendAsync(request);
string result = response.Content.ReadAsStringAsync().Result;
Console.WriteLine($"Status code: {response.StatusCode}");
Console.WriteLine($"Response Headers: {response.Headers}");
Console.WriteLine();
Console.WriteLine(result);
}
}
Odstranění úlohy
Stručný přehled
Zruší aktuálně zpracování nebo úlohu zařazenou do fronty. Zruší se pouze dokumenty, pro které se překlad nezačal.
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
private static readonly string endpoint = "https://<NAME-OF-YOUR-RESOURCE>.cognitiveservices.azure.com/translator/text/batch/v1.0";
static readonly string route = "/batches/{id}";
private static readonly string subscriptionKey = "<YOUR-SUBSCRIPTION-KEY>";
static async Task Main(string[] args)
{
HttpClient client = new HttpClient();
using HttpRequestMessage request = new HttpRequestMessage();
{
request.Method = HttpMethod.Delete;
request.RequestUri = new Uri(endpoint + route);
request.Headers.Add("Ocp-Apim-Subscription-Key", subscriptionKey);
HttpResponseMessage response = await client.SendAsync(request);
string result = response.Content.ReadAsStringAsync().Result;
Console.WriteLine($"Status code: {response.StatusCode}");
Console.WriteLine($"Response Headers: {response.Headers}");
Console.WriteLine();
Console.WriteLine(result);
}
}
Omezení obsahu
Následující tabulka uvádí omezení pro data odesílaná do překladu dokumentů.
| Atribut | Omezení |
|---|---|
| Velikost dokumentu | ≤ 40 MB |
| Celkový počet souborů | ≤ 1000 |
| Celková velikost obsahu v dávce | ≤ 250 MB |
| Počet cílových jazyků v dávce | ≤ 10 |
| Velikost souboru paměti překladu | ≤ 10 MB |
Překlad dokumentů nelze použít k překladu zabezpečených dokumentů, jako jsou dokumenty se šifrovaným heslem nebo s omezeným přístupem ke kopírování obsahu.
Řešení potíží
Běžné stavové kódy HTTP
| Stavový kód HTTP | Popis | Možný důvod |
|---|---|---|
| 200 | OK | Požadavek byl úspěšný. |
| 400 | Chybný požadavek | Požadovaný parametr chybí, je prázdný nebo null. Nebo je hodnota předaná požadovaném nebo volitelném parametru neplatná. Běžným problémem je hlavička, která je příliš dlouhá. |
| 401 | Neautorizováno | Požadavek není autorizovaný. Zkontrolujte, jestli je klíč nebo token předplatného platný a ve správné oblasti. Při správě předplatného na Azure Portal se ujistěte, že používáte prostředek s jednou službou Translator ne prostředek s více Cognitive Services více služeb. |
| 429 | Příliš mnoho požadavků | Překročili jste kvótu nebo rychlost požadavků povolených pro vaše předplatné. |
| 502 | Chybná brána | Problém se sítí nebo serverem. Může také značit neplatné hlavičky. |
Další informace
- Referenční Translator rozhraní API pro Translator v3
- Podpora jazyků
- Předplatná v Azure API Management.