Dokument Intelligenz-Batchanalyse
Die Batchanalyse-API ermöglicht mithilfe einer asynchronen Anforderung die Massenverarbeitung mehrerer Dokumente. Anstatt Dokumente einzeln zu übermitteln und mehrere Anforderungs-IDs nachzuverfolgen, können Sie eine Sammlung von Dokumenten wie Rechnungen, eine Reihe von Kreditunterlagen oder eine Gruppe von Dokumenten gleichzeitig zum Trainieren benutzerdefinierter Modelle analysieren. Die Batch-API unterstützt das Lesen der Dokumente aus Azure Blob Storage und das Schreiben der Ergebnisse in Blob Storage.
- Um die Batchanalyse zu nutzen, benötigen Sie ein Azure Blob Storage-Konto mit bestimmten Containern für Ihre Quelldokumente und die verarbeiteten Ausgaben.
- Nach Abschluss werden im Ergebnis des Batchvorgangs alle verarbeiteten Einzeldokumente mit ihrem Status wie
succeeded
,skipped
oderfailed
aufgelistet. - Die Vorschauversion der Batch-API ist über die Preise der nutzungsbasierten Bezahlung verfügbar.
Leitfaden zur Batchanalyse
Die maximale Anzahl der Dokumente, die pro Anforderung für die Batchanalyse verarbeitet werden können (einschließlich übersprungener Dokumente), beträgt 10.000.
Die Vorgangsergebnisse werden nach Abschluss 24 Stunden aufbewahrt. Die Dokumente und Ergebnisse befinden sich im bereitgestellten Speicherkonto, der Vorgangsstatus ist jedoch nicht mehr 24 Stunden nach Abschluss verfügbar.
Willst du loslegen?
Voraussetzungen
Sie benötigen ein aktives Azure-Abonnement. Falls Sie über kein Azure-Abonnement verfügen, können Sie ein kostenloses Konto erstellen.
Sobald Ihr Azure-Abonnement im Azure-Portal über eine Dokument Intelligenz-Instanz verfügt, gilt Folgendes: Sie können den kostenlosen Tarif (
F0
) verwenden, um den Dienst auszuprobieren.Wählen Sie nach erfolgter Bereitstellung Ihrer Ressource Zu Ressource wechseln aus, und rufen Sie Ihren Schlüssel und Endpunkt ab.
- Sie benötigen den Schlüssel und Endpunkt aus der Ressource, um Ihre Anwendung mit dem Dokument Intelligenz-Dienst zu verbinden. Den Schlüssel und den Endpunkt werden Sie später im Schnellstart in den Code einfügen. Diese Werte sind im Azure-Portal auf der Seite Schlüssel und Endpunkt aufgeführt.
Ein Azure Blob Storage-Konto. Sie erstellen Container in Ihrem Azure Blob Storage-Konto für Ihre Quell- und Ergebnisdateien:
- Quellcontainer: In diesen Container laden Sie Ihre Dateien zur Analyse hoch (erforderlich).
- Ergebniscontainer: In diesem Container werden Ihre verarbeiteten Dateien gespeichert (optional).
Sie können denselben Azure Blob Storage-Container für Quelldokumente und verarbeitete Dokumente festlegen. Um jedoch potenzielle Chancen für ein versehentliches Überschreiben von Daten zu minimieren, wird die Auswahl separater Container empfohlen.
Speichercontainerautorisierung
Sie können eine der folgenden Optionen auswählen, um den Zugriff auf Ihre Dokumentressource zu autorisieren.
✔️ Verwaltete Identität. Eine verwaltete Identität ist ein Dienstprinzipal, der eine Microsoft Entra-Identität und bestimmte Berechtigungen für von Azure verwaltete Ressourcen erstellt. Mit verwalteten Identitäten können Sie Ihre Dokument Intelligenz-Anwendung ausführen, ohne Anmeldeinformationen in Ihren Code einbetten zu müssen. Verwaltete Identitäten sind eine sicherere Möglichkeit, Zugriff auf Speicherdaten zu gewähren und die Anforderung zu ersetzen, dass Sie SAS-Token (Shared Access Signature) in Ihre Quell- und Ergebnis-URLs einschließen müssen.
Weitere Informationen finden Sie unter Verwaltete Identitäten für Dokument Intelligenz.
Wichtig
- Wenn Sie verwaltete Identitäten verwenden, schließen Sie keine SAS-Token-URL in Ihre HTTP-Anforderungen ein – Ihre Anforderungen schlagen sonst fehl. Die Verwendung verwalteter Identitäten ersetzt die Anforderung, dass Sie SAS-Token (Shared Access Signature) einschließen müssen.
✔️ Shared Access Signature (SAS). Eine Shared Access Signature-URL gewährt für einen bestimmten Zeitraum eingeschränkten Zugriff auf Ihren Dokument Intelligenz-Dienst. Um diese Methode zu verwenden, müssen Sie SAS-Token (Shared Access Signature) für Ihre Quell- und Ergebniscontainer erstellen. Die Quell- und Ergebniscontainer müssen ein SAS-Token (Shared Access Signature) enthalten, das als Abfragezeichenfolge angefügt wird. Das Token kann Ihrem Container oder bestimmten Blobs zugewiesen sein.
- Ihr Quellcontainer oder Blob muss den Zugriff für das Lesen, Schreiben, Auflisten und Löschen festlegen.
- Ihr Ergebniscontainer oder Blob muss den Zugriff für das Schreiben, Auflisten und Löschen festlegen.
Weitere Informationen finden Sie unter Erstellen von SAS-Token.
Aufrufen der Batchanalyse-API
- Geben Sie die URL des Azure Blob Storage-Containers für Ihre Quelldokumentmappe innerhalb der Objekte
azureBlobSource
oderazureBlobFileListSource
an.
Angeben der Eingabedateien
Die Batch-API unterstützt zwei Optionen zum Angeben der zu verarbeitenden Dateien. Wenn Sie alle Dateien in einem Container oder Ordner verarbeiten müssen und die Anzahl der Dateien kleiner als der Grenzwert von 10.000 für eine einzelne Batchanforderung ist, verwenden Sie den Container azureBlobSource
.
Wenn Sie bestimmte Dateien im Container oder Ordner verarbeiten müssen oder die Anzahl der zu verarbeitenden Dateien über dem maximalen Grenzwert für einen einzelnen Batch liegt, verwenden Sie azureBlobFileListSource
. Teilen Sie das Dataset in mehrere Batches auf, und fügen Sie eine Datei mit der Liste der Dateien hinzu, die im JSONL-Format im Stammordner des Containers verarbeitet werden sollen. Ein Beispiel für das Format der Dateiliste.
{"file": "Adatum Corporation.pdf"}
{"file": "Best For You Organics Company.pdf"}
Angeben des Speicherorts der Ergebnisse
Geben Sie mithilfe von resultContainerUrl
die URL des Azure Blob Storage-Containers für die Ergebnisse Ihrer Batchanalyse an. Um ein versehentliches Überschreiben zu vermeiden, wird die Verwendung separater Container für Quelldokumente und verarbeitete Dokumente empfohlen.
Legen Sie die boolesche Eigenschaft overwriteExisting
auf „false” fest, wenn vorhandene Ergebnisse mit denselben Dateinamen nicht überschrieben werden sollen. Diese Einstellung wirkt sich nicht auf die Abrechnung aus und verhindert nur, dass die Ergebnisse nach der Verarbeitung der Eingabedatei überschrieben werden.
Legen Sie resultPrefix
auf den Namespace der Ergebnisse aus dieser Batch-API fest.
- Wenn Sie beabsichtigen, denselben Container sowohl für die Eingabe als auch für die Ausgabe zu verwenden, legen Sie
resultContainerUrl
undresultPrefix
so fest, dass sie Ihrer Eingabe-azureBlobSource
entsprechen. - Wenn Sie denselben Container verwenden, können Sie das Feld
overwriteExisting
einschließen, um festzulegen, ob Dateien mit den Analyseergebnisdateien überschrieben werden sollen.
Erstellen und Ausführen der POST-Anforderung
Ersetzen Sie vor dem Ausführen der POST-Anforderung {Ihre-Quellcontainer-SAS-URL} und {Ihre-Ergebniscontainer-SAS-URL} durch die Werte Ihrer Azure Blob Storage-Containerinstanzen.
Im folgenden Beispiel wird gezeigt, wie Sie der Anforderung die Eigenschaft azureBlobSource
hinzufügen:
Nur azureBlobSource
oder azureBlobFileListSource
zulassen
POST /documentModels/{modelId}:analyzeBatch
{
"azureBlobSource": {
"containerUrl": "https://myStorageAccount.blob.core.windows.net/myContainer?mySasToken",
"prefix": "trainingDocs/"
},
"resultContainerUrl": "https://myStorageAccount.blob.core.windows.net/myOutputContainer?mySasToken",
"resultPrefix": "layoutresult/",
"overwriteExisting": true
}
Im folgenden Beispiel wird gezeigt, wie Sie der Anforderung die Eigenschaft azureBlobFileListSource
hinzufügen:
POST /documentModels/{modelId}:analyzeBatch
{
"azureBlobFileListSource": {
"containerUrl": "https://myStorageAccount.blob.core.windows.net/myContainer?mySasToken",
"fileList": "myFileList.jsonl"
},
"resultContainerUrl": "https://myStorageAccount.blob.core.windows.net/myOutputContainer?mySasToken",
"resultPrefix": "customresult/",
"overwriteExisting": true
}
Erfolgreiche Antwort
202 Accepted
Operation-Location: /documentModels/{modelId}/analyzeBatchResults/{resultId}
Abrufen von Ergebnissen der Batchanalyse-API
Nachdem der Vorgang der Batch-API ausgeführt wurde, können Sie die Ergebnisse der Batchanalyse mithilfe des GET
-Vorgangs abrufen. Dieser Vorgang ruft Statusinformationen, den Prozentsatz des Abschlusses sowie Datum/Uhrzeit für die Erstellung und Aktualisierung des Vorgangs ab.
GET /documentModels/{modelId}/analyzeBatchResults/{resultId}
200 OK
{
"status": "running", // notStarted, running, completed, failed
"percentCompleted": 67, // Estimated based on the number of processed documents
"createdDateTime": "2021-09-24T13:00:46Z",
"lastUpdatedDateTime": "2021-09-24T13:00:49Z"
...
}
Interpretieren von Statusmeldungen
Für jedes Dokument wird ein Status festgelegt, entweder succeeded
, failed
oder skipped
. Für jedes Dokument werden zwei URLs bereitgestellt, um die Ergebnisse zu überprüfen: die sourceUrl
-URL, bei der es sich um den Blob Storage-Quellcontainer für Ihr erfolgreiches Eingabedokument handelt, und die resultUrl
-URL, die erstellt wird, indem resultContainerUrl
und resultPrefix
kombiniert werden, um den relativen Pfad für die Quelldatei und .ocr.json
zu erstellen.
Status
notStarted
oderrunning
: Der Batchanalysevorgang wird nicht initiiert oder nicht abgeschlossen. Warten Sie, bis der Vorgang für alle Dokumente abgeschlossen ist.Status
completed
: Der Batchanalysevorgang ist abgeschlossen.Status
failed
: Beim Batchvorgang ist ein Fehler aufgetreten. Diese Antwort tritt in der Regel dann auf, wenn allgemeine Probleme mit der Anforderung auftreten. Fehler bei einzelnen Dateien werden in der Antwort des Batchberichts zurückgegeben, selbst wenn für alle Dateien ein Fehler aufgetreten ist. Beispiel: Speicherfehler stoppen den Batchvorgang nicht als Ganzes, wodurch Sie über die Antwort des Batchberichts auf Teilergebnisse zugreifen können.
Lediglich bei Dateien mit dem Status succeeded
wurde in der Antwort die resultUrl
-Eigenschaft generiert. Dadurch können beim Trainieren von Modellen Dateinamen erkannt werden, die mit .ocr.json
enden, und als die einzigen Dateien identifiziert werden, die für das Training verwendet werden können.
Beispiel für eine succeeded
-Statusantwort:
[
"result": {
"succeededCount": 0,
"failedCount": 2,
"skippedCount": 2,
"details": [
{
"sourceUrl": "https://{your-source-container}/myContainer/trainingDocs/file2.jpg",
"status": "failed",
"error": {
"code": "InvalidArgument",
"message": "Invalid argument.",
"innererror": {
"code": "InvalidSasToken",
"message": "The shared access signature (SAS) is invalid: {details}"
}
}
}
]
}
]
...
Beispiel für eine failed
-Statusantwort:
- Dieser Fehler wird nur dann zurückgegeben, wenn in der gesamten Batchanforderung Fehler auftreten.
- Nachdem der Batchanalysevorgang gestartet wurde, wirkt sich der Vorgangsstatus der einzelnen Dokumente nicht auf den Status des gesamten Batchauftrags aus, selbst wenn alle Dateien den Status
failed
aufweisen.
[
"result": {
"succeededCount": 0,
"failedCount": 2,
"skippedCount": 2,
"details": [
"sourceUrl": "https://{your-source-container}/myContainer/trainingDocs/file2.jpg",
"status": "failed",
"error": {
"code": "InvalidArgument",
"message": "Invalid argument.",
"innererror": {
"code": "InvalidSasToken",
"message": "The shared access signature (SAS) is invalid: {details}"
}
}
]
}
]
...
Beispiel für eine skipped
-Statusantwort:
[
"result": {
"succeededCount": 3,
"failedCount": 0,
"skippedCount": 2,
"details": [
...
"sourceUrl": "https://myStorageAccount.blob.core.windows.net/myContainer/trainingDocs/file4.jpg",
"status": "skipped",
"error": {
"code": "OutputExists",
"message": "Analysis skipped because result file {path} already exists."
}
]
}
]
...
Anhand der Ergebnisse der Batchanalyse können Sie ermitteln, welche Dateien erfolgreich analysiert und überprüft wurden, indem Sie die Datei in der resultUrl
-URL mit der Ausgabedatei in der resultContainerUrl
-URL vergleichen.
Hinweis
Analyseergebnisse werden erst dann für einzelne Dateien zurückgegeben, wenn die Batchanalyse der gesamten Dokumentenmappen abgeschlossen ist. Um den detaillierten Fortschritt nach percentCompleted
nachzuverfolgen, können Sie *.ocr.json
-Dateien überwachen, während diese in die resultContainerUrl
-URL geschrieben werden.