Aan de slag: clientbibliotheken voor documentvertaling
Documentomzetting is een cloudfunctie van de Azure AI Translator-service waarmee hele documenten asynchroon worden vertaald in ondersteunde talen en verschillende bestandsindelingen. In deze snelstartgids leert u hoe u documentomzetting kunt gebruiken met een programmeertaal van uw keuze om een brondocument te vertalen in een doeltaal en tegelijkertijd structuur en tekstopmaak te behouden.
Belangrijk
- Documentomzetting wordt momenteel alleen ondersteund in de Translator-resource (één service) en is niet opgenomen in de Azure AI-servicesresource (multiservice).
- Documentomzetting wordt ondersteund in betaalde lagen. Language Studio ondersteunt de S1- of D3-exemplaarlagen. U wordt aangeraden Standard S1 te selecteren om documentomzetting uit te proberen. Zie prijzen voor Azure AI-services: Translator.
- Openbare preview-versies van documentvertalingen bieden vroege toegang tot functies die actief zijn in ontwikkeling. Functies, benaderingen en processen kunnen veranderen, vóór algemene beschikbaarheid (GA), op basis van feedback van gebruikers.
- De openbare preview-versie van clientbibliotheken voor documentomzetting is standaard ingesteld op REST API-versie 2024-05-01.
Vereisten
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 aanmaken.
Een Translator-resource met één service (geen Azure AI-servicesresource met meerdere services). Als u van plan bent om de functie Documentvertaling te gebruiken met autorisatie voor beheerde identiteiten, kiest u een geografische regio, zoals VS - oost. Selecteer het Standard S1 Standard-serviceabonnement (betalen per gebruik) of C2-, C3-, C4- of D3-volumekortingsplannen.
Een Azure Blob Storage-account. U maakt containers in uw Azure Blob Storage-account voor uw bron- en doelbestanden:
- Broncontainer. In deze container uploadt u uw bestanden voor vertaling (vereist).
- Doelcontainer. In deze container worden uw vertaalde bestanden opgeslagen (vereist).
Autorisatie van opslagcontainers
U kunt een van de volgende opties kiezen om toegang tot uw Translator-resource te autoriseren.
✔️ Beheerde identiteit. Een beheerde identiteit is een service-principal waarmee een Microsoft Entra-identiteit en specifieke machtigingen voor een door Azure beheerde resource worden gemaakt. Met beheerde identiteiten kunt u uw Translator-toepassing uitvoeren zonder referenties in uw code in te sluiten. Beheerde identiteiten zijn een veiligere manier om toegang te verlenen tot opslaggegevens en om de vereiste voor het opnemen van sas-tokens (Shared Access Signature) te vervangen door uw bron- en doel-URL's.
Zie Beheerde identiteiten voor documentomzetting voor meer informatie.
✔️ Shared Access Signature (SAS). Een handtekening voor gedeelde toegang is een URL die gedurende een opgegeven periode beperkte toegang verleent aan uw Translator-service. Als u deze methode wilt gebruiken, moet u SAS-tokens (Shared Access Signature) maken voor uw bron- en doelcontainers. Het sourceUrl
en targetUrl
moet een SAS-token (Shared Access Signature) bevatten, toegevoegd als een querytekenreeks. Het token kan worden toegewezen aan uw container of specifieke blobs.
- Uw broncontainer of -blob moet lees- en lijsttoegang aanwijzen.
- Uw doelcontainer of blob moet schrijf- en lijsttoegang aanwijzen.
Zie SAS-tokens maken voor meer informatie.
Uw toepassing bouwen
Er zijn verschillende hulpprogramma's beschikbaar voor het maken, bouwen en uitvoeren van Translator C#/.NET-toepassingen. Hier begeleiden we u bij het gebruik van de opdrachtregelinterface (CLI) of Visual Studio. Selecteer een van de volgende tabbladen om aan de slag te gaan:
Uw project instellen
Gebruik in een consolevenster (zoals cmd, PowerShell of Bash) de opdracht dotnet new
om een nieuwe console-app te maken met de naam batch-document-translation
. Met deze opdracht maakt u een eenvoudig C#-project Hallo wereld met één bronbestand: Program.cs.
dotnet new console -n batch-document-translation
Wijzig uw map in de zojuist gemaakte app-map. Bouw uw toepassing met de volgende opdracht:
dotnet build
De build-uitvoer mag geen waarschuwingen of fouten bevatten.
...
Build succeeded.
0 Warning(s)
0 Error(s)
...
De clientbibliotheek installeren
Installeer in de toepassingsmap de clientbibliotheek voor documentomzetting voor .NET:
dotnet add package Azure.AI.Translation.Document --version 2.0.0-beta
Documenten asynchroon vertalen
Voor dit project hebt u een brondocument nodig dat is geüpload naar uw broncontainer. U kunt ons voorbeelddocument voor documentomzetting downloaden voor deze quickstart. De brontaal is Engels.
Open vanuit de projectmap het bestand Program.cs in uw favoriete editor of IDE. Verwijder de bestaande code, inclusief de regel
Console.WriteLine("Hello World!")
.Maak in de Program.cs van de toepassing variabelen voor uw sleutel en aangepast eindpunt. Zie Uw sleutel en aangepast domeineindpunt ophalen voor meer informatie.
private static readonly string endpoint = "<your-document-translation-endpoint>"; private static readonly string key = "<your-key>";
Roep de
StartTranslationAsync
methode aan om een vertaalbewerking te starten voor een of meer documenten in één blobcontainer.Als u wilt aanroepen
StartTranslationAsync
, moet u eenDocumentTranslationInput
object initialiseren dat desourceUri
,targetUri
entargetLanguageCode
parameters bevat:Maak voor autorisatie van beheerde identiteit de volgende variabelen:
sourceUri. De URL voor de broncontainer met documenten die moeten worden vertaald.
targetUri De URL voor de doelcontainer waarnaar de vertaalde documenten worden geschreven.
targetLanguageCode. De taalcode voor de vertaalde documenten. U vindt taalcodes op onze ondersteuningspagina voor talen.
Als u uw bron- en doel-URL's wilt vinden, gaat u naar uw opslagaccount in Azure Portal. Selecteer in de linkerzijbalk onder Gegevensopslag de optie Containers en volg deze stappen om uw brondocumenten en doelcontainer
URLS
op te halen.Source Target 1. Schakel het selectievakje naast de broncontainer in 1. Schakel het selectievakje naast de doelcontainer in. 2. Selecteer in het hoofdvenstergebied een bestand of documenten voor vertaling. 2. Selecteer het beletselteken aan de rechterkant en kies Eigenschappen. 3. De bron-URL bevindt zich boven aan de lijst Eigenschappen. 3. De doel-URL bevindt zich boven aan de lijst Eigenschappen.
Voor SAS-autorisatie (Shared Access Signature) maakt u deze variabelen
- sourceUri. De SAS-URI, waaraan een SAS-token is toegevoegd als een querytekenreeks, zodat de broncontainer met documenten moet worden vertaald.
- targetUri De SAS-URI, met een SAS-token toegevoegd als een querytekenreeks, voor de doelcontainer waarnaar de vertaalde documenten worden geschreven.
- targetLanguageCode. De taalcode voor de vertaalde documenten. U vindt taalcodes op onze ondersteuningspagina voor talen.
Belangrijk
Vergeet niet de sleutel uit uw code te verwijderen wanneer u klaar bent, en maak deze sleutel nooit openbaar. Gebruik voor productie een veilige manier om uw referenties op te slaan en te openen, zoals Azure Key Vault. Zie Beveiliging van Azure AI-services voor meer informatie.
Voorbeeld van Asynchrone vertalingscode
Voer het volgende codevoorbeeld in het Program.cs-bestand van uw toepassing in:
using Azure;
using Azure.AI.Translation.Document;
using System;
using System.Threading;
using System.Text;
class Program {
// create variables for your custom endpoint and resource key
private static readonly string endpoint = "<your-document-translation-endpoint>";
private static readonly string key = "<your-key>";
static async Task Main(string[] args) {
// create variables for your sourceUrl, targetUrl, and targetLanguageCode
Uri sourceUri = new Uri("<sourceUrl>");
Uri targetUri = new Uri("<targetUrl>");
string targetLanguage = "<targetLanguageCode>"
// initialize a new instance of the DocumentTranslationClient object to interact with the Document Translation feature
DocumentTranslationClient client = new DocumentTranslationClient(new Uri(endpoint), new AzureKeyCredential(key));
// initialize a new instance of the `DocumentTranslationInput` object to provide the location of input for the translation operation
DocumentTranslationInput input = new DocumentTranslationInput(sourceUri, targetUri, targetLanguage);
// initialize a new instance of the DocumentTranslationOperation class to track the status of the translation operation
DocumentTranslationOperation operation = await client.StartTranslationAsync(input);
await operation.WaitForCompletionAsync();
Console.WriteLine($" Status: {operation.Status}");
Console.WriteLine($" Created on: {operation.CreatedOn}");
Console.WriteLine($" Last modified: {operation.LastModified}");
Console.WriteLine($" Total documents: {operation.DocumentsTotal}");
Console.WriteLine($" Succeeded: {operation.DocumentsSucceeded}");
Console.WriteLine($" Failed: {operation.DocumentsFailed}");
Console.WriteLine($" In Progress: {operation.DocumentsInProgress}");
Console.WriteLine($" Not started: {operation.DocumentsNotStarted}");
await foreach(DocumentStatusResult document in operation.Value) {
Console.WriteLine($"Document with Id: {document.Id}");
Console.WriteLine($" Status:{document.Status}");
if (document.Status == DocumentTranslationStatus.Succeeded) {
Console.WriteLine($" Translated Document Uri: {document.TranslatedDocumentUri}");
Console.WriteLine($" Translated to language: {document.TranslatedToLanguageCode}.");
Console.WriteLine($" Document source Uri: {document.SourceDocumentUri}");
} else {
Console.WriteLine($" Error Code: {document.Error.Code}");
Console.WriteLine($" Message: {document.Error.Message}");
}
}
}
}
Uw toepassing uitvoeren
Nadat u het codevoorbeeld aan uw toepassing hebt toegevoegd, voert u uw toepassing uit vanuit de projectmap door de volgende opdracht in uw terminal te typen:
dotnet run
Hier volgt een fragment van de verwachte uitvoer:
Voorbeeld van synchrone vertaalcode
U kunt ons voorbeelddocument voor documentomzetting downloaden voor deze quickstart. De brontaal is Engels.
using Azure;
using Azure.AI.Translation.Document;
using System;
using System.Threading;
using System.Text;
class Program {
string endpoint = "{your-document-translation-endpoint}";
string apiKey = "{your-api-key}";
SingleDocumentTranslationClient client = new SingleDocumentTranslationClient(new Uri(endpoint), new AzureKeyCredential(apiKey));
try
{
string filePath = @"C:\{folder}\document.txt"
using Stream fileStream = File.OpenRead(filePath);
// MultipartFormFileData (string name, System.IO.Stream content, string contentType);
var sourceDocument = new MultipartFormFileData(Path.GetFileName(filePath), fileStream, "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
DocumentTranslateContent content = new DocumentTranslateContent(sourceDocument);
// DocumentTranslate (string targetLanguage, Azure.AI.Translation.Document.DocumentTranslateContent documentTranslateContent, string sourceLanguage = default, string category = default, bool? allowFallback = default, System.Threading.CancellationToken cancellationToken = default);
var response = client.DocumentTranslate("de", content);
Console.WriteLine($"Request string for translation: {requestString}");
Console.WriteLine($"Response string after translation: {responseString}");
}
catch (RequestFailedException exception) {
Console.WriteLine($"Error Code: {exception.ErrorCode}");
Console.WriteLine($"Message: {exception.Message}");
}
}
Dat is het! U hebt zojuist een programma gemaakt om documenten in een opslagcontainer te vertalen met behulp van de .NET-clientbibliotheek.
Uw project instellen
Zorg ervoor dat de nieuwste versie van Python is geïnstalleerd.
De clientbibliotheek installeren
Installeer de nieuwste versie van de clientbibliotheek voor documentomzetting:
pip install azure-ai-translation-document==1.1.0b1
Batchbestanden vertalen
Voor dit project hebt u een brondocument nodig dat is geüpload naar uw broncontainer. U kunt ons voorbeelddocument voor documentomzetting downloaden voor deze quickstart. De brontaal is Engels.
Maak in uw Python-toepassingsbestand variabelen voor uw resourcesleutel en aangepast eindpunt. Zie Uw sleutel en aangepast domeineindpunt ophalen voor meer informatie.
key = "{your-api-key}"
endpoint = "{your-document-translation-endpoint}"
Initialiseer een
DocumentTranslationClient
object dat uwendpoint
enkey
parameters bevat.Roep de
begin_translation
methode aan en geef desourceUri
parameterstargetUri
targetLanguageCode
door.Maak voor autorisatie van beheerde identiteit de volgende variabelen:
sourceUri. De URL voor de broncontainer met documenten die moeten worden vertaald.
targetUri De URL voor de doelcontainer waarnaar de vertaalde documenten worden geschreven.
targetLanguageCode. De taalcode voor de vertaalde documenten. U vindt taalcodes op onze ondersteuningspagina voor talen.
Als u uw bron- en doel-URL's wilt vinden, gaat u naar uw opslagaccount in Azure Portal. Selecteer in de linkerzijbalk onder Gegevensopslag de optie Containers en volg deze stappen om uw brondocumenten en doelcontainer
URLS
op te halen.Source Target 1. Schakel het selectievakje naast de broncontainer in 1. Schakel het selectievakje naast de doelcontainer in. 2. Selecteer in het hoofdvenstergebied een bestand of documenten voor vertaling. 2. Selecteer het beletselteken aan de rechterkant en kies Eigenschappen. 3. De bron-URL bevindt zich boven aan de lijst Eigenschappen. 3. De doel-URL bevindt zich boven aan de lijst Eigenschappen.
Voor SAS-autorisatie (Shared Access Signature) maakt u deze variabelen
- sourceUri. De SAS-URI, waaraan een SAS-token is toegevoegd als een querytekenreeks, zodat de broncontainer met documenten moet worden vertaald.
- targetUri De SAS-URI, met een SAS-token toegevoegd als een querytekenreeks, voor de doelcontainer waarnaar de vertaalde documenten worden geschreven.
- targetLanguageCode. De taalcode voor de vertaalde documenten. U vindt taalcodes op onze ondersteuningspagina voor talen.
Voorbeeld van Asynchrone vertalingscode
Belangrijk
Vergeet niet de sleutel uit uw code te verwijderen wanneer u klaar bent, en maak deze sleutel nooit openbaar. Gebruik voor productie een veilige manier om uw referenties op te slaan en te openen, zoals Azure Key Vault. Zie Beveiliging van Azure AI-services voor meer informatie.
Voer het volgende codevoorbeeld in uw Python-toepassing in:
# import libraries
from azure.core.credentials import AzureKeyCredential
from azure.ai.translation.document import DocumentTranslationClient
# create variables for your resource key, custom endpoint, sourceUrl, targetUrl, and targetLanguage
key = '{your-api-key}'
endpoint = '{your-document-translation-endpoint}'
sourceUri = '<your-container-sourceUrl>'
targetUri = '<your-container-targetUrl>'
targetLanguage = '<target-language-code>'
# initialize a new instance of the DocumentTranslationClient object to interact with the asynchronous Document Translation feature
client = DocumentTranslationClient(endpoint, AzureKeyCredential(key))
# include source and target locations and target language code for the begin translation operation
poller = client.begin_translation(sourceUri, targetUri, targetLanguage)
result = poller.result()
print('Status: {}'.format(poller.status()))
print('Created on: {}'.format(poller.details.created_on))
print('Last updated on: {}'.format(poller.details.last_updated_on))
print(
'Total number of translations on documents: {}'.format(
poller.details.documents_total_count
)
)
print('\nOf total documents...')
print('{} failed'.format(poller.details.documents_failed_count))
print('{} succeeded'.format(poller.details.documents_succeeded_count))
for document in result:
print('Document ID: {}'.format(document.id))
print('Document status: {}'.format(document.status))
if document.status == 'Succeeded':
print('Source document location: {}'.format(document.source_document_url))
print(
'Translated document location: {}'.format(document.translated_document_url)
)
print('Translated to language: {}\n'.format(document.translated_to))
else:
print(
'Error Code: {}, Message: {}\n'.format(
document.error.code, document.error.message
)
)
Uw toepassing uitvoeren
Nadat u het codevoorbeeld aan uw toepassing hebt toegevoegd, typt u de volgende opdracht in uw terminal:
python asynchronous-sdk.py
Hier volgt een fragment van de verwachte uitvoer:
Voorbeeld van synchrone vertaalcode
U kunt ons voorbeelddocument voor documentomzetting downloaden voor deze quickstart. De brontaal is Engels.
import os
from azure.core.credentials import AzureKeyCredential
from azure.ai.translation.document import SingleDocumentTranslationClient
from azure.ai.translation.document.models import DocumentTranslateContent
def sample_single_document_translation():
# create variables for your resource api key, document translation endpoint, and target language
key = "<your-api-key>"
endpoint = "<your-document-translation-endpoint>"
target_language = "{target-language-code}"
# initialize a new instance of the SingleDocumentTranslationClient object to interact with the synchronous Document Translation feature
client = SingleDocumentTranslationClient(endpoint, AzureKeyCredential(key))
# absolute path to your document
file_path = "C:/{your-file-path}/document-translation-sample.docx"
file_name = os.path.path.basename(file_path)
file_type = (
"application/vnd.openxmlformats-officedocument.wordprocessingml.document"
)
print(f"File for translation: {file_name}")
with open(file_name, "r") as file:
file_contents = file.read()
document_content = (file_name, file_contents, file_type)
document_translate_content = DocumentTranslateContent(document=document_content)
response_stream = client.document_translate(
body=document_translate_content, target_language=target_language
)
translated_response = response_stream.decode("utf-8-sig") # type: ignore[attr-defined]
print(f"Translated response: {translated_response}")
if __name__ == "__main__":
sample_single_document_translation()
Dat is het! U hebt zojuist een programma gemaakt om documenten asynchroon en synchroon te vertalen met behulp van de Python-clientbibliotheek.