Konfigurieren von Read-OCR-Docker-Containern

In diesem Artikel konfigurieren Sie die Runtimeumgebung für Ihren Read OCR-Container in Azure KI Vision mithilfe der docker run-Befehlsargumente. Dieser Container verfügt über mehrere erforderliche Einstellungen sowie einige optionale Einstellungen. Es sind noch viele Beispiele für den Befehl verfügbar. Die containerspezifischen Einstellungen sind die für die Abrechnung.

Konfigurationseinstellungen

Der Container hat die folgenden Konfigurationseinstellungen:

Erforderlich Einstellung Zweck
Ja ApiKey Nachverfolgen von Abrechnungsinformationen
Nein ApplicationInsights Ermöglicht das Hinzufügen von Unterstützung für Azure Application Insights-Telemetriedaten in Ihrem Container.
Ja Abrechnung Gibt den Endpunkt-URI der Dienstressource in Azure an.
Ja Eula Gibt an, dass Sie die Lizenz für den Container akzeptiert haben.
Nein Fluentd Schreibt Protokoll- und optional auch Metrikdaten auf einen Fluentd-Server.
Nein HTTP-Proxy Konfiguriert einen HTTP-Proxy für ausgehende Anforderungen.
Nein Logging Bietet Unterstützung für die ASP.NET Core-Protokollierung für Ihren Container.
Nein Mounts Liest und schreibt Daten vom Hostcomputer in den Container und umgekehrt.

Wichtig

Die Einstellungen ApiKey, Billing und Eula werden gemeinsam verwendet, und Sie müssen gültige Werte für alle drei angeben, da der Container andernfalls nicht startet. Weitere Informationen zum Instanziieren eines Containers mithilfe dieser Konfigurationseinstellungen finden Sie unter Abrechnung.

Der Container hat außerdem die folgenden containerspezifischen Konfigurationseinstellungen:

Erforderlich Einstellung Zweck
Nein ReadEngineConfig:ResultExpirationPeriod Gilt nur für v2.0-Container. Ablaufzeitraum für das Ergebnis in Stunden. Der Standardwert beträgt 48 Stunden. Die Einstellung gibt an, wann das System Erkennungsergebnisse löschen soll. Wenn beispielsweise resultExpirationPeriod=1 festgelegt ist, löscht das System das Erkennungsergebnis eine Stunde nach dem Prozess. Wird resultExpirationPeriod=0 festgelegt, löscht das System das Erkennungsergebnis nach dem Abrufen des Ergebnisses.
Nein Cache:Redis Gilt nur für v2.0-Container. Aktiviert Redis-Speicher zum Speichern von Ergebnissen. Ein Cache ist erforderlich, wenn mehrere OCR-Lesecontainer hinter einem Lastenausgleich platziert werden.
Nein Queue:RabbitMQ Gilt nur für v2.0-Container. Aktiviert RabbitMQ zum Verteilen von Aufgaben. Die Einstellung ist nützlich, wenn mehrere OCR-Lesecontainer hinter einem Lastenausgleich platziert werden.
Nein Queue:Azure:QueueVisibilityTimeoutInMilliseconds Gilt nur für v3.x-Container. Hiermit wir die Zeit angegeben, während der eine Nachricht nicht sichtbar ist, wenn sie von einem anderen Worker verarbeitet wird.
Nein Storage::DocumentStore::MongoDB Gilt nur für v2.0-Container. Aktiviert MongoDB für den permanenten Ergebnisspeicher.
Nein Storage:ObjectStore:AzureBlob:ConnectionString Gilt nur für v3.x-Container. Verbindungszeichenfolge für Azure Blob Storage.
Nein Storage:TimeToLiveInDays Gilt nur für v3.x-Container. Ablaufzeitraum für das Ergebnis in Tagen. Die Einstellung gibt an, wann das System Erkennungsergebnisse löschen soll. Der Standardwert ist 2 Tage und bedeutet, dass alle Ergebnisse, die länger als der Zeitraum sind, nicht garantiert erfolgreich abgerufen werden. Der Wert ist eine ganze Zahl, die zwischen 1 Tag und 7 Tagen liegen muss.
Nein StorageTimeToLiveInMinutes v3.2-model-2021-09-30-preview und neue Container. Ablaufzeitraum für Ergebnisse in Minuten. Die Einstellung gibt an, wann das System Erkennungsergebnisse löschen soll. Der Standardwert ist 2 Tage (2.880 Minuten) und bedeutet, dass alle Ergebnisse, die länger als der Zeitraum sind, nicht garantiert erfolgreich abgerufen werden. Der Wert ist eine ganze Zahl, die zwischen 60 Minuten und 7 Tagen (10.080 Minuten) liegen muss.
Nein Task:MaxRunningTimeSpanInMinutes Gilt nur für v3.x-Container. Maximale Ausführungszeit für eine einzelne Anforderung. Der Standardwert ist 60 Sekunden.
Nein EnableSyncNTPServer Nur v3.x-Container, außer für v3.2-model-2021-09-30-preview und neuere Container. Aktiviert den NTP-Serversynchronisierungsmechanismus, der die Synchronisierung zwischen der Systemzeit und der erwarteten Tasklaufzeit sicherstellt. Beachten Sie, dass hierfür externer Netzwerkdatenverkehr erforderlich ist. Der Standardwert lautet true.
Nein NTPServerAddress Nur v3.x-Container, außer für v3.2-model-2021-09-30-preview und neuere Container. NTP-Server für die Zeitsynchronisierung. Der Standardwert lautet time.windows.com.
Nein Mounts:Shared Gilt nur für v3.x-Container. Lokaler Ordner zum Speichern des Erkennungsergebnisses. Der Standardwert lautet /share. Zum Ausführen eines Containers ohne Azure Blob Storage empfehlen wir, ein Volume in diesen Ordner einzubinden und auf diese Weise sicherzustellen, dass genügend Speicherplatz für die Erkennungsergebnisse vorhanden ist.

Konfigurationseinstellung „ApiKey“

Die ApiKey-Einstellung gibt den Schlüssel der Vision-Ressource an, mit dem die Abrechnungsinformationen für den Container verfolgt werden. Sie müssen einen Wert für „ApiKey“ angeben. Bei diesem Wert muss es sich um einen gültigen Schlüssel für die Vision-Ressource handeln, die für die Billing-Konfigurationseinstellung angegeben wurde.

Diese Einstellung finden Sie hier:

  • Azure-Portal: Ressourcenverwaltung für Azure KI Services unter Schlüssel

ApplicationInsights-Einstellung

Die ApplicationInsights-Einstellung ermöglicht das Hinzufügen von Unterstützung für Azure Application Insights-Telemetriedaten in Ihrem Container. Application Insights ermöglicht eine tief greifende Überwachung Ihrer Container. Sie können ganz einfach die Verfügbarkeit, Leistung und Nutzung Ihrer Container überwachen. Außerdem können Sie schnell Fehler in Ihrem Container erkennen und diagnostizieren.

In der folgenden Tabelle werden die Konfigurationseinstellungen beschrieben, die unter dem Abschnitt ApplicationInsights unterstützt werden.

Erforderlich Name Datentyp BESCHREIBUNG
Nein InstrumentationKey String Der Instrumentierungsschlüssel der Application Insights-Instanz, an die Telemetriedaten für den Container gesendet werden. Weitere Informationen finden Sie unter Application Insights für ASP.NET Core.

Beispiel:
InstrumentationKey=123456789

Konfigurationseinstellung „Billing“

Die Billing-Einstellung gibt den Endpunkt-URI der Azure KI Services-Ressource in Azure an, der zum Messen der Abrechnungsinformationen für den Container verwendet wird. Sie müssen einen Wert für diese Konfigurationseinstellung angeben, und bei dem Wert muss es sich um einen gültigen URI-Endpunkt für eine Azure KI Services-Ressource in Azure handeln. Der Container meldet die Nutzung etwa alle 10 bis 15 Minuten.

Diese Einstellung finden Sie hier:

  • Azure-Portal: Azure KI Services-Übersicht, Bezeichnung Endpoint

Denken Sie daran, die vision/<version>-Weiterleitung an den Endpunkt-URI anzufügen, wie in der folgenden Tabelle dargestellt.

Erforderlich Name Datentyp Beschreibung
Ja Billing String URI des Abrechnungsendpunkts

Beispiel:
Billing=https://westcentralus.api.cognitive.microsoft.com/vision/v3.2

Eula-Einstellung

Die Eula-Einstellung gibt an, dass Sie die Lizenz für den Container akzeptiert haben. Sie müssen einen Wert für diese Konfigurationseinstellung angeben, und der Wert muss auf accept festgelegt werden.

Erforderlich Name Datentyp Beschreibung
Ja Eula String Zustimmung zur Lizenz

Beispiel:
Eula=accept

Azure KI Services-Container werden im Rahmen Ihres Vertrags lizenziert, der Ihre Nutzung von Azure regelt. Wenn Sie über keine Vereinbarung zur Nutzung von Azure verfügen, bestätigen Sie, dass Ihre Vereinbarung zur Nutzung von Azure der Microsoft Online-Abonnementvertrag ist, der die Nutzungsbedingungen für Onlinedienste umfasst. Für Vorschauversionen stimmen Sie auch den ergänzenden Nutzungsbedingungen für Microsoft Azure-Vorschauversionen zu. Durch die Nutzung von Containern stimmen Sie diesen Bedingungen zu.

Fluentd-Einstellungen

Fluentd ist ein Open-Source-Datensammler für die einheitliche Protokollierung. Die Fluentd-Einstellungen verwalten die Verbindung des Containers mit einem Fluentd-Server. Der Container enthält einen Fluentd-Protokollanbieter, der es Ihrem Container ermöglicht, Protokolldaten (und optional auch Metrikdaten) auf einen Fluentd-Server zu schreiben.

In der folgenden Tabelle werden die Konfigurationseinstellungen beschrieben, die unter dem Abschnitt Fluentd unterstützt werden.

Name Datentyp Beschreibung
Host String Die IP-Adresse oder der DNS-Hostname des Fluentd-Servers.
Port Integer Der Port des Fluentd-Servers.
Standardwert: 24224
HeartbeatMs Integer Das Heartbeatintervall in Millisekunden. Wurde bis zum Ablauf dieses Intervalls kein Ereignisdatenverkehr gesendet, wird ein Heartbeat an den Fluentd-Server gesendet. Standardwert: 60.000 Millisekunden (eine Minute)
SendBufferSize Integer Der für Sendevorgänge zugeordnete Netzwerkpufferspeicher (in Byte). Standardwert: 32.768 Byte (32 KB)
TlsConnectionEstablishmentTimeoutMs Integer Das Timeout (in Millisekunden) für die Herstellung einer SSL/TLS-Verbindung mit dem Fluentd-Server. Der Standardwert beträgt 10.000 Millisekunden (zehn Sekunden).
Wenn UseTLS auf FALSE festgelegt ist, wird dieser Wert ignoriert.
UseTLS Boolean Gibt an, ob der Container für die Kommunikation mit dem Fluentd-Server SSL/TLS verwenden soll. Der Standardwert ist „FALSE“.

Anmeldeinformationseinstellungen für HTTP-Proxy

Wenn Sie einen HTTP-Proxy für ausgehende Anforderungen konfigurieren müssen, verwenden Sie diese zwei Argumente:

Name Datentyp BESCHREIBUNG
HTTP_PROXY string Der zu verwendende Proxy, z. B. http://proxy:8888.
<proxy-url>
HTTP_PROXY_CREDS Zeichenfolge Beliebige Anmeldeinformationen, die zur Authentifizierung bei dem Proxy erforderlich sind, z. B. username:password. Dieser Wert muss in Kleinbuchstaben eingegeben werden.
<proxy-user> string Der Benutzer für den Proxy.
<proxy-password> string Das Kennwort, das dem <proxy-user> für den Proxy zugeordnet ist.
docker run --rm -it -p 5000:5000 \
--memory 2g --cpus 1 \
--mount type=bind,src=/home/azureuser/output,target=/output \
<registry-location>/<image-name> \
Eula=accept \
Billing=<endpoint> \
ApiKey=<api-key> \
HTTP_PROXY=<proxy-url> \
HTTP_PROXY_CREDS=<proxy-user>:<proxy-password> \

Logging-Einstellungen

Die Logging-Einstellungen dienen zur Verwaltung der ASP.NET Core-Protokollierungsunterstützung für Ihren Container. Sie können für Ihren Container die gleichen Konfigurationseinstellungen und Werte verwenden wie für eine ASP.NET Core-Anwendung.

Der Container unterstützt folgende Protokollanbieter:

Anbieter Zweck
Konsole Der ASP.NET Core-Protokollierungsanbieter Console. Alle ASP.NET Core-Konfigurationseinstellungen und Standardwerte für diesen Protokollanbieter werden unterstützt.
Debuggen Der ASP.NET Core-Protokollierungsanbieter Debug. Alle ASP.NET Core-Konfigurationseinstellungen und Standardwerte für diesen Protokollanbieter werden unterstützt.
Datenträger Der JSON-Protokollanbieter. Dieser Protokollanbieter schreibt Protokolldaten in die Ausgabeeinbindung.

Dieser Containerbefehl speichert Protokollierungsinformationen im JSON-Format für die Ausgabeeinbindung:

docker run --rm -it -p 5000:5000 \
--memory 2g --cpus 1 \
--mount type=bind,src=/home/azureuser/output,target=/output \
<registry-location>/<image-name> \
Eula=accept \
Billing=<endpoint> \
ApiKey=<api-key> \
Logging:Disk:Format=json \
Mounts:Output=/output

Dieser Containerbefehl zeigt Debuginformationen an, denen dbug vorangestellt ist, während der Container ausgeführt wird:

docker run --rm -it -p 5000:5000 \
--memory 2g --cpus 1 \
<registry-location>/<image-name> \
Eula=accept \
Billing=<endpoint> \
ApiKey=<api-key> \
Logging:Console:LogLevel:Default=Debug

Datenträgerprotokollierung

Der Protokollanbieter Disk unterstützt folgende Konfigurationseinstellungen:

Name Datentyp Beschreibung
Format String Das Ausgabeformat für Protokolldateien.
Hinweis: Dieser Wert muss auf json festgelegt werden, um den Protokollanbieter zu aktivieren. Wenn dieser Wert bei der Containerinstanziierung angegeben wird, ohne eine Ausgabeeinbindung anzugeben, tritt ein Fehler auf.
MaxFileSize Integer Die maximale Größe einer Protokolldatei (in MB). Wenn die Größe der aktuellen Protokolldatei diesen Wert erreicht oder übersteigt, wird vom Protokollanbieter eine neue Protokolldatei erstellt. Bei Angabe von „-1“ wird die Größe der Protokolldatei nur durch die maximal zulässige Dateigröße für die Ausgabeeinbindung begrenzt (sofern vorhanden). Der Standardwert ist 1.

Weitere Informationen zum Konfigurieren der ASP.NET Core-Protokollierungsunterstützung finden Sie unter Protokollierung in ASP.NET Core.

Einbindungseinstellungen

Verwenden Sie Bindungsbereitstellungen zum Lesen und Schreiben von Daten im Container. Sie können eine Eingabe- oder Ausgabebereitstellung über die Option --mount im Befehl docker run angeben.

Die Container für Azure KI Vision verwenden keine Eingabe- oder Ausgabeeinbindungen zum Speichern von Trainings- oder Dienstdaten.

Die genaue Syntax für den Bereitstellungspunkt auf dem Host variiert je nach Betriebssystem des Hosts. Darüber hinaus ist es eventuell nicht möglich, auf den Bereitstellungspunkt auf dem Hostcomputer zuzugreifen, wenn ein Konflikt zwischen den vom Docker-Dienstkonto verwendeten Berechtigungen und den für den Bereitstellungspunkt auf dem Host verwendeten Berechtigungen besteht.

Optional Name Datentyp BESCHREIBUNG
Nicht zulässig Input String Azure KI Vision-Container verwenden dies nicht.
Optional Output String Das Ziel der Ausgabeeinbindung. Standardwert: /output. Dies ist der Speicherort der Protokolle. Beinhaltet Containerprotokolle.

Beispiel:
--mount type=bind,src=c:\output,target=/output

Beispiele für den Befehl „docker run“

Die folgenden Beispiele verwenden die Konfigurationseinstellungen, um zu veranschaulichen, wie docker run-Befehle geschrieben und verwendet werden. Nach dem Ausführen wird der Container so lange ausgeführt, bis Sie ihn beenden.

  • Zeilenfortsetzungszeichen: In den Docker-Befehlen in den folgenden Abschnitten wird der umgekehrte Schrägstrich (\) als Zeilenfortsetzungszeichen verwendet. Ersetzen oder entfernen Sie diesen je nach den Anforderungen des Hostbetriebssystems.
  • Argumentreihenfolge: Ändern Sie die Reihenfolge der Argumente nur, wenn Sie mit Docker-Containern sehr gut vertraut sind.

Ersetzen Sie {argument_name} durch Ihre eigenen Werte:

Platzhalter Wert Format oder Beispiel
{API_KEY} Endpunktschlüssel der Vision-Ressource auf der Seite „Ressourcenschlüssel“ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{ENDPOINT_URI} Den Wert des Abrechnungsendpunkts finden Sie in der Ressourcenübersicht. Explizite Beispiele finden Sie unter Erfassen erforderlicher Parameter.

Hinweis

Neue Ressourcen, die nach dem 1. Juli 2019 erstellt wurden, verwenden benutzerdefinierte Unterdomänennamen. Weitere Informationen und eine vollständige Liste mit regionalen Endpunkten finden Sie unter Benutzerdefinierte Unterdomänennamen für Azure KI Services.

Wichtig

Die Optionen Eula, Billing und ApiKey müssen angegeben werden, um den Container auszuführen, andernfalls wird der Container nicht gestartet. Weitere Informationen finden Sie unter Abrechnung. Bei dem ApiKey-Wert handelt es sich um den Schlüssel von der Seite der Vision-Ressourcenschlüssel.

Beispiele für Docker-Container

Im Folgenden finden Sie Docker-Beispiele für den OCR-Lesecontainer.

Einfaches Beispiel

docker run --rm -it -p 5000:5000 --memory 16g --cpus 8 \
mcr.microsoft.com/azure-cognitive-services/vision/read:3.2-model-2022-04-30 \
Eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY}

Beispiel für die Protokollierung

docker run --rm -it -p 5000:5000 --memory 16g --cpus 8 \
mcr.microsoft.com/azure-cognitive-services/vision/read:3.2-model-2022-04-30 \
Eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY}
Logging:Console:LogLevel:Default=Information

Nächste Schritte