Aan de slag met documentvertaling
In dit artikel leert u hoe u Document translation gebruikt met HTTP-REST API methoden. Documentvertaling is een cloudfunctie van de Azure Vertalen service. Met de documentvertalings-API kunnen hele documenten worden vertaald met behoud van de structuur en tekstopmaak van brondocumenten.
Vereisten
Notitie
- Wanneer u in het Azure Portal een Cognitive Service-resource maakt, hebt u over het algemeen de mogelijkheid om een abonnementssleutel voor meerdere service of een abonnementssleutel voor één service te maken. Documentvertaling wordt momenteel echter alleen ondersteund in de Vertalen-resource (één service) en is niet opgenomen in de resource Cognitive Services (meerdere service).
- Documentvertaling is alleen beschikbaar in het S1 Standard-serviceplan (betalen per gebruik) of in het D3-volumekortingsplan. Zie Cognitive Services prijzen: Vertalen.
Om aan de slag te gaan, hebt u het volgende nodig:
Een actief Azure-account. Als u nog geen account hebt, kunt u een gratis account maken.
Een resource met één Vertalen (geen resource met meerdere Cognitive Services service).
Een Azure Blob Storage-account. U maakt containers om uw blobgegevens in uw opslagaccount op te slaan en te organiseren.
Aangepaste domeinnaam en abonnementssleutel
Belangrijk
- Voor alle API-aanvragen voor de documentvertalingsservice is een aangepast domein-eindpunt vereist.
- U gebruikt het eindpunt dat u op uw Azure Portal resourcesleutels en eindpuntpagina hebt gevonden, noch het globale translator-eindpunt, — om HTTP-aanvragen te maken voor
api.cognitive.microsofttranslator.comdocumentvertaling.
Wat is het eindpunt van het aangepaste domein?
Het eindpunt van het aangepaste domein is een URL die is geformatteerd met uw resourcenaam, hostnaam en Vertalen subdirectorieën:
https://<NAME-OF-YOUR-RESOURCE>.cognitiveservices.azure.com/translator/text/batch/v1.0
Uw aangepaste domeinnaam zoeken
De parameter NAME-OF-YOUR-RESOURCE (ook wel aangepaste domeinnaam genoemd) is de waarde die u hebt ingevoerd in het veld Naam tijdens het maken van de Vertalen resource.
Uw abonnementssleutel op halen
Aanvragen voor de Vertalen service vereisen een alleen-lezensleutel voor het authenticeren van toegang.
- Als u een nieuwe resource hebt gemaakt, selecteert u Na de implementatie de optie Ga naar resource. Als u een bestaande documentvertalingsresource hebt, gaat u rechtstreeks naar de resourcepagina.
- Selecteer in de linkerrail onder Resourcebeheer sleutels en eindpunt.
- Kopieer en plak uw abonnementssleutel op een handige locatie, zoals Microsoft Kladblok.
- U plakt deze in de onderstaande code om uw aanvraag te verifiëren bij de documentvertalingsservice.
Azure Blob Storage-containers maken
U moet containers maken in uw Azure Blob Storage-account voor bron- en doelbestanden.
- Broncontainer. In deze container uploadt u uw bestanden voor vertaling (vereist).
- Doelcontainer. In deze container worden uw vertaalde bestanden opgeslagen (vereist).
Notitie
Document translation ondersteunt woordenlijsten als blobs in doelcontainers (geen afzonderlijke woordenlijstcontainers). Als u een aangepaste woordenlijst wilt opnemen, voegt u deze toe aan de doelcontainer en voegt u de glossaryUrl met de aanvraag toe. Als het vertaaltaalpaar niet aanwezig is in de woordenlijst, wordt het niet toegepast. Zie Documenten vertalen met behulp van een aangepaste woordenlijst
SAS-toegangstokens maken voor documentvertaling
De sourceUrl , targetUrl en optioneel moeten een glossaryUrl sas-token (Shared Access Signature) bevatten, toegevoegd als een queryreeks. Het token kan worden toegewezen aan uw container of specifieke blobs. Zie SAS-tokens maken voor het documentvertalingsproces.
- Uw broncontainer of blob moet lees- en lijsttoegang hebben.
- Uw doelcontainer of blob moet schrijf- en lijsttoegang hebben.
- Uw woordenlijstblob moet lees- en lijsttoegang hebben.
Tip
- Als u meerdere bestanden (blobs) in een bewerking vertaalt, delegeert u SAS-toegang op containerniveau.
- Als u één bestand (blob) in een bewerking vertaalt, delegeert u SAS-toegang op blobniveau.
Documentvertaling: HTTP-aanvragen
Een aanvraag voor batchdocumentvertaling wordt via een POST-aanvraag Vertalen service-eindpunt verzonden. Als dit lukt, retourneert de POST-methode een 202 Accepted antwoordcode en wordt de batchaanvraag gemaakt door de service.
HTTP-headers
De volgende headers zijn opgenomen in elke Document Vertalen API-aanvraag:
| HTTP-header | Beschrijving |
|---|---|
| Ocp-Apim-Subscription-Key | Vereist: de waarde is de Azure-abonnementssleutel voor uw Vertalen of Cognitive Services resource. |
| Content-Type | Vereist: hiermee geeft u het inhoudstype van de nettolading op. Geaccepteerde waarden zijn application/json of charset=UTF-8. |
| Content-Length | Vereist: de lengte van de aanvraag body. |
Eigenschappen van post-aanvraag body
- De POST-aanvraag-URL is POST
https://<NAME-OF-YOUR-RESOURCE>.cognitiveservices.azure.com/translator/text/batch/v1.0/batches - De POST-aanvraag body is een JSON-object met de naam
inputs. - Het
inputsobject bevat zowel alssourceURLtargetURLcontaineradressen voor uw bron- en doeltaalparen - De
prefixveldensuffixen (optioneel) worden gebruikt om documenten in de container te filteren, inclusief mappen. - Er wordt een waarde
glossariesvoor het veld (optioneel) toegepast wanneer het document wordt vertaald. - De
targetUrlvoor elke doeltaal moet uniek zijn.
Notitie
Als er al een bestand met dezelfde naam in de bestemming bestaat, mislukt de taak.
Alle documenten in een container vertalen
{
"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"
}
]
}
]
}
Een specifiek document in een container vertalen
- Zorg ervoor dat u 'storageType': 'File' hebt opgegeven
- Zorg ervoor dat u de bron-URL hebt & SAS-token voor de specifieke blob/het specifieke document (niet voor de container)
- Zorg ervoor dat u de doelbestandsnaam hebt opgegeven als onderdeel van de doel-URL, hoewel het SAS-token nog steeds voor de container is.
- Voorbeeldaanvraag hieronder toont één document dat wordt vertaald in twee doeltalen
{
"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"
}
]
}
]
}
Documenten vertalen met behulp van een aangepaste woordenlijst
{
"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"
}
]
}
]
}
]
}
Code gebruiken om aanvragen voor documentvertaling in te dienen
Uw coderingsplatform instellen
- Een nieuw project maken.
- Vervang Program.cs door de hieronder weergegeven C#-code.
- Stel de waarden voor eindpunt, abonnementssleutel en container-URL in Program.cs in.
- Als u JSON-gegevens wilt verwerken, voegt u het pakket Newtonsoft.Json toe met behulp van .NET CLI.
- Voer het programma uit vanuit de projectmap.
Belangrijk
In de onderstaande codevoorbeelden codeert u uw sleutel en eindpunt waar aangegeven; Vergeet niet om de sleutel uit uw code te verwijderen wanneer u klaar bent en plaats deze nooit openbaar. Zie Azure Cognitive Services voor manieren om uw referenties veilig op te slaan en te openen.
Mogelijk moet u de volgende velden bijwerken, afhankelijk van de bewerking:
endpointsubscriptionKeysourceURLtargetURLglossaryURLid(taak-id)
De waarde id zoeken
- U vindt de taak in de waarde
idheader-URL van de POST-methodereactie.Operation-LocationDe laatste parameter van de URL is de taak van de bewerkingid:
| Antwoordheader | Resultaat-URL |
|---|---|
| Operation-Location | https://<NAME-OF-YOUR-RESOURCE>.cognitiveservices.azure.com/translator/text/batch/v1.0/batches/9dce0aa9-78dc-41ba-8cae-2e2f3c2ff8ec |
- U kunt ook een GET-taakaanvraag gebruiken om een documentvertalingstaken op te
idhalen.
Documenten vertalen
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");
}
}
}
}
Bestandsindelingen downloaden
Een lijst met ondersteunde bestandsindelingen ophalen. Als dit lukt, retourneert deze methode een 200 OK antwoordcode.
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);
}
}
Taakstatus op halen
De huidige status voor één taak en een samenvatting van alle taken in een documentomtalingsaanvraag op te halen. Als dit lukt, retourneert deze methode een 200 OK antwoordcode.
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);
}
}
Documentstatus op halen
Kort overzicht
Haal de status van een specifiek document op in een documentvertalingsaanvraag. Als dit lukt, retourneert deze methode een 200 OK antwoordcode.
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);
}
}
Taak verwijderen
Kort overzicht
Annuleer de momenteel verwerkte of in de wachtrij geplaatste taak. Alleen documenten waarvoor de vertaling niet is gestart, worden geannuleerd.
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);
}
}
Inhoudslimieten
De onderstaande tabel bevat de limieten voor gegevens die u naar Documentvertaling verzendt.
| Kenmerk | Limiet |
|---|---|
| Documentgrootte | ≤ 40 MB |
| Totaal aantal bestanden. | ≤ 1000 |
| Totale inhoudsgrootte in een batch | ≤ 250 MB |
| Aantal doeltalen in een batch | ≤ 10 |
| Grootte van het vertaalgeheugenbestand | ≤ 10 MB |
Documentvertaling kan niet worden gebruikt om beveiligde documenten te vertalen, zoals documenten met een versleuteld wachtwoord of beperkte toegang tot het kopiëren van inhoud.
Problemen oplossen
Algemene HTTP-statuscodes
| HTTP-statuscode | Beschrijving | Mogelijke reden |
|---|---|---|
| 200 | OK | De aanvraag is geslaagd. |
| 400 | Onjuiste aanvraag | Een vereiste parameter ontbreekt, leeg of null. Of de waarde die wordt doorgegeven aan een vereiste of optionele parameter is ongeldig. Een veelvoorkomende probleem is een header die te lang is. |
| 401 | Niet geautoriseerd | De aanvraag is niet geautoriseerd. Controleer of uw abonnementssleutel of token geldig is en in de juiste regio. Wanneer u uw abonnement op de Azure Portal beheert, moet u ervoor zorgen dat u de Vertalen-resource voor één service gebruikt, niet de Cognitive Services resource voor meerdere service. |
| 429 | Te veel aanvragen | U hebt het quotum of het aantal toegestane aanvragen voor uw abonnement overschreden. |
| 502 | Slechte gateway | Netwerk- of serverprobleem. Kan ook duiden op ongeldige headers. |