1. Übersicht
Was ist Document AI?
Die Document AI API ist eine Lösung zum Verständnis von Dokumenten, die unstrukturierte Daten wie Dokumente, E‑Mails usw. leichter verständlich, analysierbar und nutzbar macht. Über die API stehen Funktionen wie Inhaltsklassifizierung, Entitätserkennung, erweiterte Suche und weitere Optionen zur Verfügung.
In dieser Anleitung konzentrieren Sie sich auf die Verwendung der Document AI API mit Node.js. In dieser Anleitung wird gezeigt, wie Sie ein einfaches medizinisches Aufnahmeformular parsen.
Lerninhalte
- Document AI API aktivieren
- API-Anfragen authentifizieren
- Clientbibliothek für Node.js installieren
- Daten aus einem gescannten Formular parsen
Voraussetzungen
- Google Cloud-Projekt
- Ein Browser wie Google Chrome oder Mozilla Firefox
- Node.js-Kenntnisse
Umfrage
Wie werden Sie diese Anleitung verwenden?
Wie würden Sie Ihre Erfahrung mit Node.js bewerten?
Wie würden Sie Ihre Erfahrungen mit Google Cloud-Diensten bewerten?
2. Einrichtung und Anforderungen
Umgebung zum selbstbestimmten Lernen einrichten
- Melden Sie sich in der Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes Projekt. Wenn Sie noch kein Gmail- oder G Suite-Konto haben, müssen Sie eines erstellen.



Denken Sie daran, dass die Projekt-ID für alle Google Cloud-Projekte ein eindeutiger Name ist. Der Name oben ist bereits vergeben und kann von dir leider nicht verwendet werden. Sie müssen diese ID später als PROJECT_ID angeben.
- Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Google Cloud-Ressourcen verwenden zu können.
Folgen Sie bitte der Anleitung im Abschnitt „Bereinigen“. In diesem Abschnitt erfahren Sie, wie Sie Ressourcen herunterfahren können, damit nach Abschluss dieser Anleitung keine Gebühren anfallen. Neue Nutzer von Google Cloud kommen für das Programm für den kostenlosen Testzeitraum mit einem Guthaben von 300$ infrage.
Cloud Shell starten
Sie können Google Cloud von Ihrem Laptop aus per Fernzugriff nutzen. In diesem Codelab wird jedoch Google Cloud Shell verwendet, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.
Cloud Shell aktivieren
- Klicken Sie in der Cloud Console auf Cloud Shell aktivieren
.
Wenn Sie die Cloud Shell zuvor noch nicht gestartet haben, wird ein Fenster mit einer Beschreibung eingeblendet. Klicken Sie in diesem Fall einfach auf Weiter. So sieht dieses Fenster aus:
Das Herstellen der Verbindung mit der Cloud Shell sollte nur wenige Augenblicke dauern.
Mit der Cloud Shell erhalten Sie Terminalzugriff auf eine in der Cloud gehostete virtuelle Maschine. Die virtuelle Maschine enthält alle Entwicklungstools, die Sie benötigen. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft in Google Cloud, was die Netzwerkleistung und Authentifizierung erheblich verbessert. Die meisten, wenn nicht sogar alle Aufgaben in diesem Codelab können mit einem Browser oder Ihrem Chromebook erledigt werden.
Sobald die Verbindung mit der Cloud Shell hergestellt ist, sehen Sie, dass Sie bereits authentifiziert sind und für das Projekt schon Ihre Projekt-ID eingestellt ist.
- Führen Sie in der Cloud Shell den folgenden Befehl aus, um zu prüfen, ob Sie authentifiziert sind:
gcloud auth list
Befehlsausgabe
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
gcloud config list project
Befehlsausgabe
[core] project = <PROJECT_ID>
Ist dies nicht der Fall, können Sie die Einstellung mit diesem Befehl vornehmen:
gcloud config set project <PROJECT_ID>
Befehlsausgabe
Updated property [core/project].
3. Cloud Document AI API aktivieren
Bevor Sie mit Document AI arbeiten können, müssen Sie die API aktivieren. Öffnen Sie die Cloud Console in Ihrem Browser.
- Klicken Sie auf das Navigationsmenü ☰ > APIs & Dienste > Bibliothek.

- Suchen Sie nach „Document AI API“ und klicken Sie dann auf Aktivieren, um die API in Ihrem Google Cloud-Projekt zu verwenden.
4. Prozessor erstellen und testen
Sie müssen zuerst eine Instanz des Formularparser-Prozessors erstellen, die Sie in der Document AI Platform für diese Anleitung verwenden können.
- Rufen Sie in der Console die Document AI Platform-Übersicht auf.
- Klicken Sie auf Prozessor erstellen und wählen Sie Formularparser
aus. - Geben Sie einen Prozessornamen an und wählen Sie Ihre Region aus der Liste aus.
- Klicken Sie auf Erstellen, um den Prozessor zu erstellen.
- Kopieren Sie Ihre Prozessor-ID. Sie müssen sie später in Ihrem Code verwenden.
Optional: Sie können Ihren Prozessor in der Console testen, indem Sie ein Dokument hochladen. Klicken Sie auf Dokument hochladen und wählen Sie ein zu parsendes Formular aus. Sie können dieses Musterformular herunterladen und verwenden, wenn Sie kein eigenes Formular haben.

Die Ausgabe sollte so aussehen: 
5. API-Anfragen authentifizieren
Für Anfragen an die Document AI API müssen Sie ein Dienstkonto verwenden. Das Dienstkonto gehört zu Ihrem Projekt und wird von der Google Client Node.js-Bibliothek zum Ausführen von API-Anfragen verwendet. Wie jedes andere Nutzerkonto wird auch ein Dienstkonto durch eine E‑Mail-Adresse dargestellt. In diesem Abschnitt verwenden Sie das Cloud SDK, um ein Dienstkonto zu erstellen. Anschließend erstellen Sie die Anmeldedaten, die Sie für die Authentifizierung als Dienstkonto benötigen.
Legen Sie zuerst mit Ihrer PROJECT_ID eine Umgebungsvariable fest, die Sie in diesem Codelab verwenden werden:
export GOOGLE_CLOUD_PROJECT=$(gcloud config get-value core/project)
Erstellen Sie als Nächstes ein neues Dienstkonto, um auf die Document AI API zuzugreifen:
gcloud iam service-accounts create my-docai-sa \
--display-name "my-docai-service-account"
Erstellen Sie als Nächstes Anmeldedaten, die der Node.js-Code verwendet, um sich mit dem neuen Dienstkonto anzumelden. Erstellen Sie die Anmeldedaten und speichern Sie sie mit dem folgenden Befehl als JSON-Datei ~/key.json:
gcloud iam service-accounts keys create ~/key.json \
--iam-account my-docai-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
Legen Sie schließlich die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS fest, die von der Bibliothek verwendet wird, um Ihre Anmeldedaten zu finden. Weitere Informationen zu dieser Form der Authentifizierung finden Sie in der Anleitung. Die Umgebungsvariable sollte auf den vollständigen Pfad der von Ihnen erstellten JSON-Datei mit den Anmeldedaten festgelegt werden:
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/key.json"
6. Beispielformular herunterladen
Ein Beispielformular ist in unserem öffentlichen Google Cloud Storage-Beispiel-Bucket gespeichert. Verwenden Sie den folgenden Befehl, um die Datei in Ihr Arbeitsverzeichnis herunterzuladen.
gsutil cp gs://cloud-samples-data/documentai/form.pdf .
Prüfen Sie mit dem folgenden Befehl, ob die Datei in die Cloud Shell heruntergeladen wurde:
ls -ltr form.pdf
7. Clientbibliothek installieren
Richten Sie als Nächstes den Code in Ihrem Arbeitsverzeichnis ein.
Initialisieren Sie ein neues Node.js-Paket:
npm init
Installieren Sie die Document AI-Clientbibliothek:
npm install @google-cloud/documentai
8. Anfrage zur synchronen Dokumentverarbeitung stellen
In diesem Schritt senden Sie über den synchronen Endpunkt einen Aufruf zur Dokumentverarbeitung. Zur gleichzeitigen Verarbeitung großer Mengen an Dokumenten können Sie auch die asynchrone API verwenden. Weitere Informationen zur Verwendung der Form Parser APIs finden Sie in diesem Leitfaden.
Erstellen Sie eine index.js-Datei und fügen Sie den folgenden Code ein. Ersetzen Sie die entsprechenden Variablen durch die Informationen Ihres Prozessors.
const { DocumentProcessorServiceClient } = require('@google-cloud/documentai').v1;
const fs = require('fs');
/**
* Runs the sample document through Document AI to get key/value pairs and
* confidence scores.
*/
async function processDocument(projectId, location, processorId, filePath, mimeType) {
// Instantiates a client
const documentaiClient = new DocumentProcessorServiceClient();
// The full resource name of the processor, e.g.:
// projects/project-id/locations/location/processor/processor-id
// You must create new processors in the Cloud Console first
const resourceName = documentaiClient.processorPath(projectId, location, processorId);
// Read the file into memory.
const imageFile = fs.readFileSync(filePath);
// Convert the image data to a Buffer and base64 encode it.
const encodedImage = Buffer.from(imageFile).toString('base64');
// Load Binary Data into Document AI RawDocument Object
const rawDocument = {
content: encodedImage,
mimeType: mimeType,
};
// Configure ProcessRequest Object
const request = {
name: resourceName,
rawDocument: rawDocument
};
// Use the Document AI client to process the sample form
const [result] = await documentaiClient.processDocument(request);
return result.document;
}
/**
* Run the codelab.
*/
async function main() {
const projectId = 'YOUR_PROJECT_ID';
const location = 'YOUR_PROJECT_LOCATION'; // Format is 'us' or 'eu'
const processorId = 'YOUR_PROCESSOR_ID'; // Should be a Hexadecimal string
// Supported File Types
// https://cloud.google.com/document-ai/docs/processors-list#processor_form-parser
filePath = 'form.pdf'; // The local file in your current working directory
mimeType = 'application/pdf';
const document = await processDocument(projectId, location, processorId, filePath, mimeType);
console.log("Document Processing Complete");
// Print the document text as one big string
console.log(`Text: ${document.text}`);
}
main(...process.argv.slice(2)).catch(err => {
console.error(err);
process.exitCode = 1;
});
Führen Sie den Code jetzt aus. In der Console sollte der folgende Text angezeigt werden.
Text: FakeDoc M.D. HEALTH INTAKE FORM Please fill out the questionnaire carefully. The information you provide will be used to complete your health profile and will be kept confidential. Name: Date: Sally Walker DOB: 09/04/1986 Address: 24 Barney Lane City: Towalo State: NJ Zip: 07082 Email: Sally, waller@cmail.com Phone #: (906) 917-3486 Gender: Marital Status: Single Occupation: Software Engineer Referred By: None Emergency Contact: Eva Walker Emergency Contact Phone: (906) 334-8926 Describe your medical concerns (symptoms, diagnoses, etc): Runny nose, mucas in throat, weakness, aches, chills, tired Are you currently taking any medication? (If yes, please describe): Vyvanse (25mg) daily for attention
In den nächsten Schritten extrahieren Sie strukturierte Daten, die einfacher in Datenbanken gespeichert oder in anderen Anwendungen verwendet werden können.
9. Schlüssel/Wert-Paare aus Formularen extrahieren
Sie können jetzt die Schlüssel/Wert-Paare aus dem Formular und die entsprechenden Konfidenzwerte extrahieren. Das Antwortobjekt Document enthält eine Liste der Seiten aus dem Eingabedokument. Jedes page-Objekt enthält eine Liste der Formularfelder und ihrer Positionen im Text.
Der folgende Code durchläuft alle Seiten und extrahiert alle Schlüssel, Werte und Konfidenzwerte.
Fügen Sie Ihrem Code die folgende Funktion hinzu.
/**
* Extract form data and confidence from processed document.
*/
function extractFormData(document) {
// Extract shards from the text field
function getText(textAnchor, document) {
if (!textAnchor.textSegments || textAnchor.textSegments.length === 0) {
return '';
}
// First shard in document doesn't have startIndex property
const startIndex = textAnchor.textSegments[0].startIndex || 0;
const endIndex = textAnchor.textSegments[0].endIndex;
return document.text.substring(startIndex, endIndex);
}
var formData = [];
const pages = document.pages;
pages.forEach((page) => {
const formFields = page.formFields;
formFields.forEach((field) => {
// Get the extracted field names and remove extra space from text
const fieldName = getText(field.fieldName.textAnchor, document);
// Confidence - How "sure" the API is that the text is correct
const nameConfidence = field.fieldName.confidence.toFixed(4);
const fieldValue = getText(field.fieldValue.textAnchor, document);
const valueConfidence = field.fieldValue.confidence.toFixed(4);
formData.push({
fieldName: fieldName,
fieldValue: fieldValue,
nameConfidence: nameConfidence,
valueConfidence: valueConfidence
});
});
});
return formData;
}
Fügen Sie in der Hauptfunktion einen Aufruf der Funktion extractFormData() hinzu und geben Sie das resultierende Objekt als Tabelle aus.
/**
* Run the codelab.
*/
async function main() {
const projectId = 'YOUR_PROJECT_ID';
const location = 'YOUR_PROJECT_LOCATION'; // Format is 'us' or 'eu'
const processorId = 'YOUR_PROCESSOR_ID'; // Should be a Hexadecimal string
// Supported File Types
// https://cloud.google.com/document-ai/docs/processors-list#processor_form-parser
filePath = 'form.pdf'; // The local file in your current working directory
mimeType = 'application/pdf';
const document = await processDocument(projectId, location, processorId, filePath, mimeType);
const formData = extractFormData(document);
console.log('\nThe following form key/value pairs were detected:');
console.table(formData);
}
Führen Sie nun Ihren Code aus. Wenn Sie unser Beispieldokument verwenden, sollte die folgende Ausgabe angezeigt werden:
The following form key/value pairs were detected: ┌─────────┬────────────────────────────────────────────────────────────────┬──────────────────────────────────────────────────────────────────┬────────────────┬─────────────────┐ │ (index) │ fieldName │ fieldValue │ nameConfidence │ valueConfidence │ ├─────────┼────────────────────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────┼────────────────┼─────────────────┤ │ 0 │ 'Marital Status: ' │ 'Single ' │ '1.0000' │ '1.0000' │ │ 1 │ 'DOB: ' │ '09/04/1986\n' │ '0.9999' │ '0.9999' │ │ 2 │ 'City: ' │ 'Towalo ' │ '0.9996' │ '0.9996' │ │ 3 │ 'Address: ' │ '24 Barney Lane ' │ '0.9994' │ '0.9994' │ │ 4 │ 'Referred By: ' │ 'None\n' │ '0.9968' │ '0.9968' │ │ 5 │ 'Phone #: ' │ '(906) 917-3486\n' │ '0.9961' │ '0.9961' │ │ 6 │ 'State: ' │ 'NJ ' │ '0.9960' │ '0.9960' │ │ 7 │ 'Emergency Contact Phone: ' │ '(906) 334-8926\n' │ '0.9925' │ '0.9925' │ │ 8 │ 'Name:\n' │ 'Sally\nWalker\n' │ '0.9922' │ '0.9922' │ │ 9 │ 'Occupation: ' │ 'Software Engineer\n' │ '0.9914' │ '0.9914' │ │ 10 │ 'Zip: ' │ '07082\n' │ '0.9904' │ '0.9904' │ │ 11 │ 'Email: ' │ 'Sally, waller@cmail.com ' │ '0.9681' │ '0.9681' │ │ 12 │ 'Emergency Contact: ' │ 'Eva Walker ' │ '0.9430' │ '0.9430' │ │ 13 │ 'Describe your medical concerns (symptoms, diagnoses, etc):\n' │ 'Runny nose, mucas in throat, weakness,\naches, chills, tired\n' │ '0.7817' │ '0.7817' │ └─────────┴────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────┴────────────────┴─────────────────┘
10. Glückwunsch!
Gute Arbeit. Sie haben mit der Document AI API Daten aus einem handschriftlich ausgefüllten Formular extrahiert. Wir empfehlen Ihnen, mit anderen Bildern für das Formular zu experimentieren.
Bereinigen
So vermeiden Sie, dass Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen in Rechnung gestellt werden:
- Wechseln Sie in der Cloud Console zur Seite Ressourcen verwalten.
- Wählen Sie in der Projektliste Ihr Projekt aus und klicken Sie auf „Löschen“.
- Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf „Beenden“, um das Projekt zu löschen.
Weitere Informationen
- The Future of Documents – YouTube-Playlist
- Document AI-Dokumentation
- Referenz zur Document AI Node.js-Clientbibliothek
- Document AI Node.js-Beispiele