Delen via


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:

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.

Schermopname van een beheerde identiteitsstroom (RBAC).

✔️ 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.

Schermopname van een resource-URI met een SAS-token.

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

  1. 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.

  2. 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!").

  3. 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>";
    
  4. Roep de StartTranslationAsync methode aan om een vertaalbewerking te starten voor een of meer documenten in één blobcontainer.

  5. Als u wilt aanroepen StartTranslationAsync, moet u een DocumentTranslationInput object initialiseren dat de sourceUri, targetUrien targetLanguageCode 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 URLSop 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:

Schermopname van de Visual Studio Code-uitvoer in het terminalvenster.

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

  1. 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.

  2. 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}"

  1. Initialiseer een DocumentTranslationClient object dat uw endpoint en key parameters bevat.

  2. Roep de begin_translation methode aan en geef de sourceUriparameters targetUritargetLanguageCode 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 URLSop 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:

Schermopname van de Python-uitvoer in het terminalvenster.

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.

Volgende stap