Installieren und Ausführen eines Containers für die Formularerkennung (Außerbetriebnahme)

Achtung

  • Der Formularerkennungscontainer v1.0 wird eingestellt. Dieser Artikel dient nur zu Informationszwecken.
  • Sie können über die REST-API und das SDK auf die neueste Version der API zugreifen.

Die Azure-Formularerkennung wendet Technologien des maschinellen Lernens an, um Schlüssel-Wert-Paare und Tabellen in Formularen zu identifizieren und daraus zu extrahieren. Sie ordnet Werte und Tabelleneinträge den Schlüssel-Wert-Paaren zu und gibt dann strukturierte Daten aus, die die Beziehungen in der ursprünglichen Datei enthalten.

Um die Komplexität zu verringern und ein benutzerdefiniertes Formularerkennungsmodell auf einfache Weise in Ihren Prozess zur Workflowautomatisierung oder eine andere Anwendung zu integrieren, können Sie das Modell mithilfe einer einfachen REST-API aufrufen. Es werden nur fünf Formulardokumente benötigt, damit Sie Ergebnisse schnell und präzise erhalten, die auf Ihren spezifischen Inhalt zugeschnitten sind. Es sind keine starken manuellen Eingriffe oder umfangreichen Kenntnisse im Bereich der Data Science erforderlich. Und es sind keine Datenbeschriftungen oder Datenanmerkungen erforderlich.

Funktion Features
Formularerkennung
  • Verarbeitet PDF-, PNG- und JPG-Dateien.
  • Trainiert benutzerdefinierte Modelle mit mindestens fünf Formularen desselben Layouts
  • Extrahiert Schlüssel-Wert-Paare und Tabelleninformationen.
  • Verwendet das Feature Maschinelles Sehen-API von Azure Cognitive Service (Texterkennung) zum Erkennen und Extrahieren von gedrucktem Text aus Bildern in Formularen.
  • Erfordert keine Anmerkungen oder Bezeichnungen.
  • Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

    Voraussetzungen

    Bevor Sie Container für die Formularerkennung verwenden können, müssen Sie die folgenden Voraussetzungen erfüllen:

    Erforderlich Zweck
    Docker-Engine Die Docker-Engine muss auf einem Hostcomputer installiert sein. Für die Docker-Umgebung stehen Konfigurationspakete für macOS, Windows und Linux zur Verfügung. Eine Einführung in Docker und Container finden Sie in der Docker-Übersicht.

    Docker muss so konfiguriert werden, dass die Container eine Verbindung mit Azure herstellen und Abrechnungsdaten an Azure senden können.

    Unter Windows muss Docker auch für die Unterstützung von Linux-Containern konfiguriert werden.

    Kenntnisse zu Docker Sie sollten über Grundkenntnisse der Konzepte von Docker – z.B. Registrierungen, Repositorys, Container und Containerimages – verfügen und die grundlegenden docker-Befehle kennen.
    Die Azure-CLI Installieren Sie die Azure-CLI auf Ihrem Host.
    Maschinelles Sehen-API-Ressource Zum Verarbeiten von gescannten Dokumenten und Bildern benötigen Sie eine Maschinelles Sehen-Ressource. Sie können auf das Feature zur Texterkennung entweder als Azure-Ressource (REST-API oder SDK) oder als cognitive-services-recognize-text-Container zugreifen. Die üblichen Gebühren werden abgerechnet.

    Übergeben Sie sowohl den API-Schlüssel als auch die Endpunkte für Ihre „Maschinelles Sehen“-Ressource (Azure-Cloud oder Cognitive Services-Container). Verwenden Sie diesen API-Schlüssel und die Endpunkte als {COMPUTER_VISION_API_KEY} und {COMPUTER_VISION_ENDPOINT_URI} .

    Wenn Sie den Container cognitive-services-recognize-text verwenden, stellen Sie Folgendes sicher:

    Ihr Maschinelles Sehen-Schlüssel für den Container für die Formularerkennung ist der Schlüssel, der im Maschinelles Sehen-Befehl docker run für den Container cognitive-services-recognize-text angegeben ist.
    Ihr Abrechnungsendpunkt ist der Endpunkt des Containers (z.B. http://localhost:5000). Wenn Sie sowohl den Maschinelles Sehen-Container als auch den Container für die Formularerkennung zusammen auf demselben Host verwenden, können nicht beide mit dem Standardport 5000 gestartet werden.
    Formularerkennungsressource Zur Verwendung dieser Container benötigen Sie Folgendes:

    Eine Azure-Ressource vom Typ Formularerkennung, um den entsprechenden API-Schlüssel und den URI des Endpunkts zu erhalten. Beide Werte stehen im Azure-Portal auf der Übersichtsseite und auf der Schlüsselseite der Formularerkennung zur Verfügung und werden zum Starten des Containers benötigt.

    {FORM_RECOGNIZER_API_KEY} : Einer der beiden verfügbaren Ressourcenschlüssel auf der Seite „Schlüssel“

    {FORM_RECOGNIZER_ENDPOINT_URI} : Der Endpunkt, der auf der Seite „Übersicht“ angegeben ist

    Hinweis

    Der Name der Ressource für maschinelles Sehen muss ein einzelnes Wort sein, ohne Bindestrich (-) oder andere Sonderzeichen. Diese Einschränkung soll die Kompatibilität mit Formularerkennungs- und Texterkennungscontainern sicherstellen.

    Ermitteln erforderlicher Parameter

    Es gibt drei primäre Parameter, die für alle Cognitive Services-Container benötigt werden. Die Lizenzbedingungen müssen mit dem Wert accept vorhanden sein. Außerdem werden sowohl die Endpunkt-URL als auch der API-Schlüssel benötigt.

    Endpunkt-URI {COMPUTER_VISION_ENDPOINT_URI} und {FORM_RECOGNIZER_ENDPOINT_URI}

    Der Endpunkt-URI-Wert ist im Azure-Portal auf der Seite Übersicht der entsprechenden Cognitive Service-Ressource verfügbar. Navigieren Sie zur Seite Übersicht, und bewegen Sie den Mauszeiger auf den Endpunkt. Ein Copy to clipboard-Symbol () wird angezeigt. Kopieren und verwenden Sie diesen bei Bedarf.

    Erfassen der Endpunkt-URI für die spätere Verwendung

    Schlüssel {COMPUTER_VISION_API_KEY} und {FORM_RECOGNIZER_API_KEY}

    Dieser Schlüssel wird zum Starten des Containers verwendet und ist im Azure-Portal auf der Seite „Schlüssel“ der entsprechenden Cognitive Service-Ressource verfügbar. Navigieren Sie zur Seite Schlüssel, und klicken Sie auf das Copy to clipboard-Symbol ().

    Abrufen eines der beiden Schlüssel für die spätere Verwendung

    Wichtig

    Diese Abonnementschlüssel werden für den Zugriff auf Ihre Cognitive Service-API verwendet. Geben Sie Ihre Schlüssel nicht weiter. Speichern Sie diese beispielsweise sicher mit Azure Key Vault. Es wird außerdem empfohlen, diese Schlüssel regelmäßig neu zu generieren. Für einen API-Aufruf ist nur ein Schlüssel erforderlich. Beim erneuten Generieren des ersten Schlüssels können Sie den zweiten Schlüssel für kontinuierlichen Zugriff auf den Dienst verwenden.

    Der Hostcomputer

    Der Host ist ein x64-basierter Computer, auf dem der Docker-Container ausgeführt wird. Dies kann ein lokaler Computer oder ein Docker-Hostingdienst in Azure sein, z. B.:

    Containeranforderungen und -empfehlungen

    Die Mindestanforderungen und empfohlenen Werte für CPU-Kerne und Arbeitsspeicher, die jedem Container für die Formularerkennung zugeordnet werden müssen, werden in der nachstehenden Tabelle beschrieben:

    Container Minimum Empfohlen
    Formularerkennung 2 Kerne, 4 GB Arbeitsspeicher 4 Kerne, 8 GB Arbeitsspeicher
    Texterkennung 1 Kern, 8 GB Arbeitsspeicher 2 Kerne, 8 GB Arbeitsspeicher
    • Jeder Kern muss eine Geschwindigkeit von mindestens 2,6 GHz aufweisen.
    • Kern und Arbeitsspeicher entsprechen den Einstellungen --cpus und --memory, die im Rahmen des Befehls docker run verwendet werden.

    Hinweis

    Die Mindestanforderungen und empfohlenen Werte basieren auf Docker-Grenzwerten und nicht auf den Ressourcen des Hostcomputers.

    Sie benötigen sowohl den Container „Formularerkennung“ als auch den Container „Texterkennung“. Beachten Sie, dass der Container Texterkennung außerhalb dieses Artikels beschrieben wird.

    Tipp

    Mithilfe des Befehls docker images können Sie Ihre heruntergeladenen Containerimages auflisten. Mit dem folgenden Befehl werden beispielsweise die ID, das Repository und das Tag jedes heruntergeladenen Containerimages in Form einer Tabelle aufgelistet:

    docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
    
    IMAGE ID         REPOSITORY                TAG
    <image-id>       <repository-path/name>    <tag-name>
    

    Verwenden des Containers

    Wenn sich der Container auf dem Hostcomputer befindet, können Sie über den folgenden Prozess mit dem Container arbeiten.

    1. Führen Sie den Container aus, und verwenden Sie dabei die erforderlichen Abrechnungseinstellungen. Es sind noch weitere Beispiele für den Befehl docker run verfügbar.
    2. Fragen Sie den Vorhersageendpunkt des Containers ab.

    Ausführen des Containers mit dem Befehl „docker run“

    Verwenden Sie den Befehl docker run, um den Container auszuführen. Genaue Informationen dazu, wie Sie die Werte {COMPUTER_VISION_ENDPOINT_URI}, {COMPUTER_VISION_API_KEY}, {FORM_RECOGNIZER_ENDPOINT_URI} und {FORM_RECOGNIZER_API_KEY} abrufen, erhalten Sie unter Ermitteln erforderlicher Parameter.

    Es sind Beispiele für den Befehl docker run verfügbar.

    Formularerkennung

    Hinweis

    Die Verzeichnisse, die in diesen Beispielen für --mount verwendet werden, sind Windows-Verzeichnispfade. Wenn Sie Linux oder macOS verwenden, ändern Sie den Parameter entsprechend für Ihre Umgebung.

    docker run --rm -it -p 5000:5000 --memory 8g --cpus 2 \
    --mount type=bind,source=c:\input,target=/input  \
    --mount type=bind,source=c:\output,target=/output \
    containerpreview.azurecr.io/microsoft/cognitive-services-form-recognizer \
    Eula=accept \
    Billing={FORM_RECOGNIZER_ENDPOINT_URI} \
    ApiKey={FORM_RECOGNIZER_API_KEY} \
    FormRecognizer:ComputerVisionApiKey={COMPUTER_VISION_API_KEY} \
    FormRecognizer:ComputerVisionEndpointUri={COMPUTER_VISION_ENDPOINT_URI}
    

    Dieser Befehl:

    • Führt einen Container für die Formularerkennung auf der Grundlage des Containerimages aus.
    • Ordnet zwei CPU-Kerne und 8 GB Arbeitsspeicher zu.
    • Macht den TCP-Port 5000 verfügbar und ordnet eine Pseudo-TTY-Verbindung für den Container zu.
    • Entfernt den Container automatisch, nachdem er beendet wurde. Das Containerimage ist auf dem Hostcomputer weiterhin verfügbar.
    • Stellt dem Container ein „/input“- und ein „/output“-Volume bereit.

    Ausführen mehrerer Container auf dem gleichen Host

    Wenn Sie beabsichtigen, mehrere Container mit offengelegten Ports auszuführen, stellen Sie sicher, dass jeder Container mit einem anderen offengelegten Port ausgeführt wird. Führen Sie beispielsweise den ersten Container an Port 5000 und den zweiten Container an Port 5001 aus.

    Sie können diesen Container und einen anderen Azure Cognitive Services-Container zusammen auf dem Host ausführen. Sie können auch mehrere Container desselben Cognitive Services-Containers ausführen.

    Ausführen separater Container als separate Docker-Ausführungsbefehle

    Verwenden Sie für die Kombination aus Formularerkennung und Texterkennung, die lokal auf demselben Host gehostet wird, die beiden folgenden Docker CLI-Beispielbefehle:

    Führen Sie den ersten Container an Port 5000 aus.

    docker run --rm -it -p 5000:5000 --memory 4g --cpus 1 \
    --mount type=bind,source=c:\input,target=/input  \
    --mount type=bind,source=c:\output,target=/output \
    containerpreview.azurecr.io/microsoft/cognitive-services-form-recognizer \
    Eula=accept \
    Billing={FORM_RECOGNIZER_ENDPOINT_URI} \
    ApiKey={FORM_RECOGNIZER_API_KEY}
    FormRecognizer:ComputerVisionApiKey={COMPUTER_VISION_API_KEY} \
    FormRecognizer:ComputerVisionEndpointUri={COMPUTER_VISION_ENDPOINT_URI}
    

    Führen Sie den zweiten Container an Port 5001 aus.

    docker run --rm -it -p 5001:5000 --memory 4g --cpus 1 \
    containerpreview.azurecr.io/microsoft/cognitive-services-recognize-text \
    Eula=accept \
    Billing={COMPUTER_VISION_ENDPOINT_URI} \
    ApiKey={COMPUTER_VISION_API_KEY}
    

    Jeder weitere Container sollte an einem anderen Port ausgeführt werden.

    Ausführen von separaten Containern mit Docker Compose

    Sehen Sie sich für die Kombination aus Formularerkennung und Texterkennung, die lokal auf demselben Host gehostet wird, die folgende Docker Compose YAML-Beispieldatei an. Die Texterkennung {COMPUTER_VISION_API_KEY} muss für die Container formrecognizer und ocr gleich sein. {COMPUTER_VISION_ENDPOINT_URI} wird nur im Container ocrverwendet, weil der Container formrecognizer den ocr-Namen und -Port verwendet.

    version: '3.3'
    services:   
      ocr:
        image: "containerpreview.azurecr.io/microsoft/cognitive-services-recognize-text"
        deploy:
          resources:
            limits:
              cpus: '2'
              memory: 8g
            reservations:
              cpus: '1'
              memory: 4g
        environment:
          eula: accept
          billing: "{COMPUTER_VISION_ENDPOINT_URI}"
          apikey: "{COMPUTER_VISION_API_KEY}"
    
      formrecognizer:
        image: "containerpreview.azurecr.io/microsoft/cognitive-services-form-recognizer"
        deploy:
          resources:
            limits:
              cpus: '2'
              memory: 8g
            reservations:
              cpus: '1'
              memory: 4g
        environment:
          eula: accept
          billing: "{FORM_RECOGNIZER_ENDPOINT_URI}"
          apikey: "{FORM_RECOGNIZER_API_KEY}"
          FormRecognizer__ComputerVisionApiKey: {COMPUTER_VISION_API_KEY}
          FormRecognizer__ComputerVisionEndpointUri: "http://ocr:5000"
          FormRecognizer__SyncProcessTaskCancelLimitInSecs: 75
        links:
          - ocr
        volumes:
          - type: bind
            source: c:\output
            target: /output
          - type: bind
            source: c:\input
            target: /input
        ports:
          - "5000:5000"
    

    Wichtig

    Die Optionen Eula, Billing und ApiKey sowie FormRecognizer:ComputerVisionApiKey und FormRecognizer:ComputerVisionEndpointUri müssen zum Ausführen des Containers angegeben werden; andernfalls wird der Container nicht gestartet. Weitere Informationen finden Sie unter Abrechnung.

    Abfragen des Vorhersageendpunkts des Containers

    Container Endpunkt
    Formularerkennung http://localhost:5000

    Formularerkennung

    Der Container stellt websocketbasierte Abfrageendpunkt-APIs bereit, auf die Sie über die Dokumentation zum Formularerkennungsdienste-SDK zugreifen.

    Das Formularerkennungs-SDK verwendet standardmäßig die Onlinedienste. Um den Container verwenden zu können, müssen Sie die Initialisierungsmethode ändern. Weitere Informationen finden Sie in den folgenden Beispielen.

    C#

    Ändern Sie den folgenden Azure-Cloudinitialisierungsaufruf

    var config =
        FormRecognizerConfig.FromSubscription(
            "YourSubscriptionKey",
            "YourServiceRegion");
    

    für diesen Aufruf, der den Containerendpunkt verwendet:

    var config =
        FormRecognizerConfig.FromEndpoint(
            "ws://localhost:5000/formrecognizer/v1.0-preview/custom",
            "YourSubscriptionKey");
    

    Für Python

    Ändern Sie den folgenden Azure-Cloudinitialisierungsaufruf

    formrecognizer_config =
        formrecognizersdk.FormRecognizerConfig(
            subscription=formrecognizer_key, region=service_region)
    

    für diesen Aufruf, der den Containerendpunkt verwendet:

    formrecognizer_config = 
        formrecognizersdk.FormRecognizerConfig(
            subscription=formrecognizer_key,
            endpoint="ws://localhost:5000/formrecognizer/v1.0-preview/custom"
    

    Formularerkennung

    Der Container umfasst REST-Endpunkt-APIs, die Sie auf der Referenzseite zur [Formularerkennungs-API]https://westus.dev.cognitive.microsoft.com/docs/services/form-recognizer-api-v2-1/operations/AnalyzeWithCustomForm) finden können.

    Überprüfen auf aktive Container

    Es gibt mehrere Möglichkeiten zu überprüfen, ob ein Container aktiv ist. Suchen Sie die externe IP-Adresse und den verfügbar gemachten Port des betreffenden Containers, und öffnen Sie Ihren bevorzugten Webbrowser. Verwenden Sie die verschiedenen URLs der untenstehenden Anforderungen, um zu überprüfen, ob der Container ausgeführt wird. Die unten aufgeführten Beispiel-URLs für Anforderungen sind http://localhost:5000, aber Ihr spezifischer Container kann variieren. Denken Sie daran, dass Sie sich auf die externe IP-Adresse Ihres Containers und den verfügbar gemachten Port verlassen müssen.

    Anfrage-URL Zweck
    http://localhost:5000/ Der Container stellt eine Homepage bereit.
    http://localhost:5000/ready Dies ermöglicht eine Überprüfung mit GET-Anforderung, dass der Container bereit ist, eine Abfrage des Modells zu akzeptieren. Diese Anforderung kann für Live- und Bereitschaftstests von Kubernetes verwendet werden.
    http://localhost:5000/status Dies ermöglicht auch eine Überprüfung mit GET-Anforderung, dass der zum Starten des Containers verwendete API-Schlüssel gültig ist, ohne dass eine Endpunktabfrage veranlasst wird. Diese Anforderung kann für Live- und Bereitschaftstests von Kubernetes verwendet werden.
    http://localhost:5000/swagger Der Container stellt eine umfassende Dokumentation für die Endpunkte sowie die Funktion Jetzt ausprobieren bereit. Diese Funktion ermöglicht Ihnen die Eingabe Ihrer Einstellungen in einem webbasierten HTML-Formular, sodass Sie die Abfrage ausführen können, ohne Code schreiben zu müssen. Nach der Rückgabe der Abfrage wird ein cURL-Beispielbefehl bereitgestellt, der das erforderliche Format für HTTP-Header und -Text veranschaulicht.

    Homepage des Containers

    Beenden des Containers

    Zum Herunterfahren des Containers drücken Sie in der Befehlszeilenumgebung, in der der Container ausgeführt wird, STRG+C.

    Problembehandlung

    Wenn Sie den Container mit einer Ausgabenbereitstellung ausführen und die Protokollierung aktiviert ist, generiert der Container Protokolldateien. Diese sind hilfreich, um Probleme beim Starten oder Ausführen des Containers zu beheben.

    Tipp

    Weitere Informationen zur Problembehandlung und Anleitungen finden Sie unter Häufig gestellte Fragen (FAQ) zu Cognitive Services-Containern.

    Abrechnung

    Der Container für die Formularerkennung sendet Abrechnungsinformationen an Azure und verwendet dafür eine Ressource vom Typ Formularerkennung in Ihrem Azure-Konto.

    Abfragen des Containers werden gemäß des Tarifs der Azure-Ressource in Rechnung gestellt, die für ApiKey verwendet wird.

    Für die Ausführung von Azure Cognitive Services-Containern besteht keine Lizenz, wenn sie nicht mit dem Endpunkt für Messung/Abrechnung verbunden sind. Sie müssen sicherstellen, dass die Container jederzeit Abrechnungsinformationen an den Abrechnungsendpunkt übermitteln können. Cognitive Services-Container senden keine Kundendaten (z. B. das analysierte Bild oder den analysierten Text) an Microsoft.

    Herstellen einer Verbindung mit Azure

    Der Container benötigt die Abrechnungsargumentwerte, um ausgeführt werden zu können. Diese Werte ermöglichen es dem Container, eine Verbindung mit dem Abrechnungsendpunkt herzustellen. Der Container meldet die Nutzung etwa alle 10 bis 15 Minuten. Wenn der Container nicht innerhalb des zulässigen Zeitfensters eine Verbindung mit Azure herstellt, wird der Container weiterhin ausgeführt, verarbeitet aber keine Anfragen, bis der Abrechnungsendpunkt wiederhergestellt wurde. Es erfolgen 10 Verbindungsversuche im gleichen Zeitintervall von 10 bis 15 Minuten. Wenn die Verbindung mit dem Abrechnungsendpunkt nicht innerhalb der 10 Versuche hergestellt werden kann, wird die Bereitstellung von Anforderungen durch den Container beendet. Ein Beispiel für die Informationen, die für die Abrechnung an Microsoft gesendet werden, finden Sie in den Häufig gestellten Fragen zu Cognitive Services-Containern.

    Abrechnungsargumente

    Der Befehl docker run startet den Container, wenn alle drei der folgenden Optionen über gültige Werte verfügen:

    Option BESCHREIBUNG
    ApiKey Der API-Schlüssel der Cognitive Services-Ressource, der zum Nachverfolgen von Abrechnungsinformationen verwendet wird.
    Der Wert dieser Option muss für die bereitgestellte Ressource, die in Billing angegeben wurde, auf einen API-Schlüssel festgelegt werden.
    Billing Der Endpunkt der Cognitive Services-Ressource, der zum Nachverfolgen von Abrechnungsinformationen verwendet wird.
    Der Wert dieser Option muss auf den Endpunkt-URI einer bereitgestellten Azure-Ressource festgelegt werden.
    Eula Gibt an, dass Sie die Lizenz für den Container akzeptiert haben.
    Der Wert dieser Option muss auf accept festgelegt werden.

    Weitere Informationen zu diesen Optionen finden Sie unter Konfigurieren von Containern.

    Zusammenfassung

    In diesem Artikel haben Sie die Konzepte und den Workflow zum Herunterladen, Installieren und Ausführen von Containern für die Formularerkennung kennengelernt. Zusammenfassung:

    • Die Formularerkennung stellt einen Linux-Container für Docker bereit.
    • Containerimages werden aus der privaten Containerregistrierung in Azure heruntergeladen.
    • Containerimages werden in Docker ausgeführt.
    • Sie können entweder die REST-API oder das REST-SDK verwenden, um Vorgänge in einem Container für die Formularerkennung über dessen Host-URI aufzurufen.
    • Bei der Instanziierung eines Containers müssen Sie die Abrechnungsinformationen angeben.

    Wichtig

    Für die Ausführung von Cognitive Services-Containern besteht keine Lizenz, wenn sie nicht zu Messzwecken mit Azure verbunden sind. Kunden müssen sicherstellen, dass Container jederzeit Abrechnungsinformationen an den Messungsdienst übermitteln können. Cognitive Services-Container senden keine Kundendaten (etwa das analysierte Bild oder den analysierten Text) an Microsoft.

    Nächste Schritte