Text aus einem Foto übersetzen

Auf dieser Seite wird beschrieben, wie Sie Text in einem Bild erkennen, Übersetzungen personalisieren und synthetische Sprache aus Text generieren. In dieser Anleitung wird Cloud Vision verwendet, um Text in einer Bilddatei zu erkennen. Anschließend wird gezeigt, wie Sie mithilfe von Cloud Translation eine benutzerdefinierte Übersetzung des erkannten Textes bereitstellen. Schließlich wird mithilfe von Text-to-Speech ein maschinelles Diktat des übersetzten Textes bereitgestellt.

Ziele

  1. Von der Cloud Vision API erkannten Text an die Cloud Translation API übergeben

  2. Cloud Translation-Glossare erstellen und verwenden, um Cloud Translation API-Übersetzungen zu personalisieren

  3. Mit der Text-to-Speech API eine Audiodarstellung für übersetzten Text erstellen

Kosten

Für jede Google Cloud API gilt eine eigene Preisstruktur.

Preisdetails finden Sie in der Preisübersicht für Cloud Vision, in der Preisübersicht für Cloud Translation und in der Preisübersicht für Text-to-Speech.

Vorbereitung

Folgende Voraussetzungen müssen erfüllt sein:

  • Sie haben ein Projekt in der Google Cloud Console mit der Vision API, der Cloud Translation API und der Text-to-Speech API aktiviert.
  • Sie haben Grundkenntnisse bezüglich der Programmierung in Python oder Node.js.

Clientbibliotheken einrichten

In dieser Anleitung werden Vision-, Translation- und Text-to-Speech-Clientbibliotheken verwendet.

Führen Sie die folgenden Befehle über das Terminal aus, um die relevanten Clientbibliotheken zu installieren.

Python

  pip install --upgrade google-cloud-vision
  pip install --upgrade google-cloud-translate
  pip install --upgrade google-cloud-texttospeech
  

Node.js

  npm install @google-cloud/vision
  npm install @google-cloud/translate
  npm install @google-cloud/text-to-speech
  

Berechtigungen für die Glossarerstellung einrichten

Zum Erstellen von Translation-Glossaren ist ein Dienstkontoschlüssel mit den Cloud Translation API-Bearbeiter-Berechtigungen erforderlich.

So richten Sie einen Dienstkontoschlüssel mit den Cloud Translation API-Bearbeiterberechtigungen ein:

  1. Erstellen Sie ein Dienstkonto:

    1. Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf.

      Zur Seite „Dienstkonten“

    2. Wählen Sie Ihr Projekt aus.

    3. Klicken Sie auf Dienstkonto erstellen.

    4. Geben Sie im Feld Dienstkontoname einen Namen ein. DieGoogle Cloud Console füllt das Feld Dienstkonto-ID anhand dieses Namens aus.

    5. Optional: Im Feld Beschreibung des Dienstkontos können Sie eine entsprechende Beschreibung eingeben.

    6. Klicken Sie auf Erstellen und fortfahren.

    7. Klicken Sie auf das Feld Rolle auswählen und wählen Sie Cloud Translation > Cloud Translation API-Bearbeiter aus.

    8. Klicken Sie auf Fertig, um das Erstellen des Dienstkontos abzuschließen.

      Schließen Sie das Browserfenster nicht. Sie verwenden es in der nächsten Aufgabe.

  2. Laden Sie einen JSON-Schlüssel für das gerade erstellte Dienstkonto herunter:

    1. Klicken Sie in der Google Cloud Console auf die E-Mail-Adresse des von Ihnen erstellten Dienstkontos.
    2. Klicken Sie auf Schlüssel.
    3. Klicken Sie auf Schlüssel hinzufügen > Neuen Schlüssel erstellen.
    4. Klicken Sie auf Erstellen. Daraufhin wird eine JSON-Schlüsseldatei auf Ihren Computer heruntergeladen.

      Bewahren Sie die Schlüsseldatei sicher auf, da sie zur Authentifizierung als Ihr Dienstkonto verwendet werden kann. Sie können diese Datei beliebig verschieben und umbenennen.

    5. Klicken Sie auf Schließen.

  3. Legen Sie im Terminal die Variable GOOGLE_APPLICATION_CREDENTIALS mit dem folgenden Befehl fest. Ersetzen Sie path_to_key durch den Pfad zur heruntergeladenen JSON-Datei, die den neuen Dienstkontoschlüssel enthält.

    Linux oder macOS

    export GOOGLE_APPLICATION_CREDENTIALS=path_to_key

    Windows

    set GOOGLE_APPLICATION_CREDENTIALS=path_to_key

Bibliotheken importieren

In dieser Anleitung werden die folgenden Systeme und Clientbibliotheken importiert.

Python

Folgen Sie den Einrichtungshinweisen für Python in der Cloud Translation-Kurzanleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der API-Referenzdokumentation zu Cloud Translation Python.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Translation zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

import html
import os

# Imports the Google Cloud client libraries
from google.api_core.exceptions import AlreadyExists
from google.cloud import texttospeech
from google.cloud import translate_v3beta1 as translate
from google.cloud import vision

Node.js

Folgen Sie dem Einrichtungsleitfaden für Node.js in der Cloud Translation-Kurzanleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der API-Referenzdokumentation zu Cloud Translation Node.js.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Translation zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

// Imports the Google Cloud client library
const textToSpeech = require('@google-cloud/text-to-speech');
const translate = require('@google-cloud/translate').v3beta1;
const vision = require('@google-cloud/vision');

// Import other required libraries
const fs = require('fs');
//const escape = require('escape-html');
const util = require('util');

Projekt-ID festlegen

Sie müssen ein Projekt inGoogle Cloud für jede Anfrage mit einer Google Cloud API verknüpfen. Legen Sie im Terminal die Umgebungsvariable GCLOUD_PROJECT fest, um Ihr Projekt vonGoogle Cloud zu bestimmen.

Ersetzen Sie im folgenden Befehl project-id durch Ihre Projekt-ID von Google Cloud : Führen Sie den folgenden Befehl über das Terminal aus.

Linux oder macOS

export GCLOUD_PROJECT=project-id

Windows

set GCLOUD_PROJECT=project-id

Vision zum Erkennen von Text in einem Bild verwenden

Verwenden Sie die Vision API, um Text in einem Bild zu erkennen und daraus zu extrahieren. Die Vision API verwendet Optische Zeichenerkennung (Optical Character Recognition, OCR) zur Unterstützung von zwei Features zur Texterkennung: Erkennung von dichtem Text oder DOCUMENT_TEXT_DETECTION und Erkennung von dünn besetztem Text oder TEXT_DETECTION.

Der folgende Code zeigt die Verwendung der Vision API-Funktion DOCUMENT_TEXT_DETECTION zur Erkennung von dichtem Text in einem Foto.

Python

Folgen Sie den Einrichtungshinweisen für Python in der Cloud Translation-Kurzanleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der API-Referenzdokumentation zu Cloud Translation Python.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Translation zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

def pic_to_text(infile: str) -> str:
    """Detects text in an image file

    Args:
    infile: path to image file

    Returns:
    String of text detected in image
    """

    # Instantiates a client
    client = vision.ImageAnnotatorClient()

    # Opens the input image file
    with open(infile, "rb") as image_file:
        content = image_file.read()

    image = vision.Image(content=content)

    # For dense text, use document_text_detection
    # For less dense text, use text_detection
    response = client.document_text_detection(image=image)
    text = response.full_text_annotation.text
    print(f"Detected text: {text}")

    return text

Node.js

Folgen Sie dem Einrichtungsleitfaden für Node.js in der Cloud Translation-Kurzanleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der API-Referenzdokumentation zu Cloud Translation Node.js.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Translation zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

/**
 * Detects text in an image file
 *
 * ARGS
 * inputFile: path to image file
 * RETURNS
 * string of text detected in the input image
 **/
async function picToText(inputFile) {
  // Creates a client
  const client = new vision.ImageAnnotatorClient();

  // Performs text detection on the local file
  const [result] = await client.textDetection(inputFile);