Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Interfejs API analizy wsadowej umożliwia zbiorcze przetwarzanie maksymalnie 10 000 dokumentów przy użyciu jednego żądania. Zamiast analizować dokumenty jeden po drugim i śledzić ich odpowiednie identyfikatory żądań, można jednocześnie analizować kolekcję dokumentów, takich jak faktury, dokumenty pożyczkowe lub dokumenty niestandardowe. Dokumenty wejściowe muszą być przechowywane w kontenerze usługi Azure Blob Storage. Po przetworzeniu dokumentów interfejs API zapisuje wyniki w określonym kontenerze magazynu.
Limity analizy wsadowej
- Maksymalna liczba plików dokumentów, które mogą znajdować się w pojedynczym żądaniu wsadowym, wynosi 10 000.
- Wyniki operacji wsadowych są zachowywane przez 24 godziny po zakończeniu. Stan operacji wsadowej nie jest już dostępny 24 godziny po zakończeniu przetwarzania wsadowego. Dokumenty wejściowe i odpowiednie pliki wyników pozostają w udostępnionych kontenerach magazynu.
Wymagania wstępne
Aktywna subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, możesz go utworzyć bezpłatnie.
Zasób analizy dokumentów platformy Azure: po utworzeniu subskrypcji platformy Azure utwórz zasób analizy dokumentów w witrynie Azure Portal. Aby wypróbować usługę, możesz użyć bezpłatnej warstwy cenowej (F0). Po wdrożeniu zasobu wybierz pozycję "Przejdź do zasobu" , aby pobrać klucz i punkt końcowy. Aby połączyć aplikację z usługą Document Intelligence, potrzebny jest klucz zasobu i punkt końcowy. Te wartości można również znaleźć na stronie Klucze i punkt końcowy w witrynie Azure Portal.
Konto usługi Azure Blob Storage. Utwórz dwa kontenery na koncie usługi Azure Blob Storage dla plików źródłowych i wynikowych:
- Kontener źródłowy: ten kontener służy do przekazywania plików dokumentów do analizy.
- Kontener wyników: w tym kontenerze są przechowywane wyniki z interfejsu API analizy wsadowej.
Autoryzacja kontenera magazynu
Aby umożliwić interfejsowi API przetwarzanie dokumentów i zapisywanie wyników w kontenerach usługi Azure Storage, musisz autoryzować przy użyciu jednej z następujących dwóch opcji:
✔️ Tożsamość zarządzana. Tożsamość zarządzana to jednostka usługi, która tworzy tożsamość firmy Microsoft Entra i określone uprawnienia dla zasobu zarządzanego platformy Azure. Tożsamości zarządzane umożliwiają uruchamianie aplikacji analizy dokumentów bez konieczności osadzania poświadczeń w kodzie, bezpieczniejszego sposobu udzielania dostępu do danych magazynu bez uwzględniania tokenów sygnatury dostępu (SAS) w kodzie.
Zapoznaj się z tematem Tożsamości zarządzane na potrzeby analizy dokumentów , aby dowiedzieć się, jak włączyć tożsamość zarządzaną zasobu i udzielić jej dostępu do kontenera magazynu.
Ważne
W przypadku korzystania z tożsamości zarządzanych nie dołączaj adresu URL tokenu SAS do żądań HTTP. Użycie tożsamości zarządzanych zastępuje wymaganie uwzględnienia tokenów sygnatury dostępu współdzielonego (SAS).
✔️ Sygnatura dostępu współdzielonego (SAS). Sygnatura dostępu współdzielonego to adres URL, który udziela ograniczonego dostępu do kontenera magazynu. Aby użyć tej metody, utwórz tokeny sygnatury dostępu współdzielonego (SAS) dla kontenerów źródłowych i wynikowych. Przejdź do kontenera magazynu w witrynie Azure Portal i wybierz pozycję "Tokeny dostępu współdzielonego" , aby wygenerować token SAS i adres URL.
- Źródłowy kontener lub obiekt blob musi wyznaczyć uprawnienia do odczytu, zapisu, listy i usuwania.
- Kontener wyników lub obiekt blob musi wyznaczyć uprawnienia do zapisu, listy, usuwania .
Zapoznaj się z artykułem Tworzenie tokenów SAS , aby dowiedzieć się więcej na temat generowania tokenów SAS i sposobu ich działania.
Wywoływanie interfejsu API analizy wsadowej
1. Określ pliki wejściowe
Interfejs API wsadowy obsługuje dwie opcje określania plików do przetworzenia.
Jeśli chcesz przetworzyć wszystkie pliki w kontenerze lub folderze, a liczba plików jest mniejsza niż limit 10000, użyj
azureBlobSourceobiektu w żądaniu.POST {endpoint}/documentintelligence/documentModels/{modelId}:analyzeBatch?api-version=2024-11-30 { "azureBlobSource": { "containerUrl": "https://myStorageAccount.blob.core.windows.net/myContainer?mySasToken" }, { "resultContainerUrl": "https://myStorageAccount.blob.core.windows.net/myOutputContainer?mySasToken", "resultPrefix": "trainingDocsResult/" }Jeśli nie chcesz przetwarzać wszystkich plików w kontenerze lub folderze, ale raczej określonych plików w tym kontenerze lub folderze, użyj
azureBlobFileListSourceobiektu . Ta operacja wymaga pliku JSONL listy plików, który zawiera listę plików do przetworzenia. Zapisz plik JSONL w folderze głównym kontenera. Oto przykładowy plik JSONL z dwoma wymienionymi plikami:{"file": "Adatum Corporation.pdf"} {"file": "Best For You Organics Company.pdf"}
Użyj pliku listy JSONL plików z następującymi warunkami:
- Jeśli musisz przetworzyć określone pliki zamiast wszystkich plików w kontenerze;
- Gdy łączna liczba plików w kontenerze wejściowym lub folderze przekracza limit przetwarzania wsadowego 10 000 plików;
- Jeśli chcesz mieć większą kontrolę nad tym, które pliki są przetwarzane w każdym żądaniu wsadowym;
POST {endpoint}/documentintelligence/documentModels/{modelId}:analyzeBatch?api-version=2024-11-30
{
"azureBlobFileListSource": {
"containerUrl": "https://myStorageAccount.blob.core.windows.net/myContainer?mySasToken",
"fileList": "myFileList.jsonl"
...
},
...
}
Adres URL kontenera lub adres URL sygnatury dostępu współdzielonego kontenera jest wymagany w obu opcjach. Użyj adresu URL kontenera, jeśli używasz tożsamości zarządzanej, aby uzyskać dostęp do kontenera magazynu. Jeśli używasz sygnatury dostępu współdzielonego (SAS), użyj adresu URL sygnatury dostępu współdzielonego.
2. Określ lokalizację wyników
Określ adres URL kontenera usługi Azure Blob Storage (lub adres URL sygnatury dostępu współdzielonego kontenera) dla miejsca przechowywania wyników przy użyciu
resultContainerURLparametru . Zalecamy używanie oddzielnych kontenerów dla źródła i wyników, aby zapobiec przypadkowemu zastąpieniu.overwriteExistingUstaw właściwość logiczną naFalsewartość i zapobiegaj zastępowaniu wszystkich istniejących wyników dla tego samego dokumentu. Jeśli chcesz zastąpić wszystkie istniejące wyniki, ustaw wartość logiczną naTruewartość . Nadal są naliczane opłaty za przetwarzanie dokumentu, nawet jeśli żadne istniejące wyniki nie zostaną zastąpione.Służy
resultPrefixdo grupowania i przechowywania wyników w określonym folderze kontenera.
3. Skompiluj i uruchom żądanie POST
Pamiętaj, aby zastąpić następujące przykładowe wartości adresu URL kontenera rzeczywistymi wartościami kontenerów usługi Azure Blob Storage.
W tym przykładzie pokazano żądanie POST z danymi wejściowymi azureBlobSource
POST {endpoint}/documentintelligence/documentModels/{modelId}:analyzeBatch?api-version=2024-11-30
{
"azureBlobSource": {
"containerUrl": "https://myStorageAccount.blob.core.windows.net/myContainer?mySasToken",
"prefix": "inputDocs/"
},
{
"resultContainerUrl": "https://myStorageAccount.blob.core.windows.net/myOutputContainer?mySasToken",
"resultPrefix": "batchResults/",
"overwriteExisting": true
}
W tym przykładzie pokazano żądanie POST z danymi wejściowymi azureBlobFileListSource listy plików i
POST {endpoint}/documentintelligence/documentModels/{modelId}:analyzeBatch?api-version=2024-11-30
{
"azureBlobFileListSource": {
"containerUrl": "https://myStorageAccount.blob.core.windows.net/myContainer?mySasToken",
"fileList": "myFileList.jsonl"
},
{
"resultContainerUrl": "https://myStorageAccount.blob.core.windows.net/myOutputContainer?mySasToken",
"resultPrefix": "batchResults/",
"overwriteExisting": true
}
Oto przykład pomyślnej odpowiedzi
202 Accepted
Operation-Location: /documentintelligence/documentModels/{modelId}/analyzeBatchResults/{resultId}?api-version=2024-11-30
4. Pobieranie wyników interfejsu API
Użyj operacji , GET aby pobrać wyniki analizy wsadowej po wykonaniu operacji POST. Operacja GET pobiera informacje o stanie, procent ukończenia partii oraz tworzenie i aktualizowanie daty/godziny operacji. Te informacje są przechowywane tylko przez 24 godziny po zakończeniu analizy wsadowej.
GET {endpoint}/documentintelligence/documentModels/{modelId}/analyzeBatchResults/{resultId}?api-version=2024-11-30
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"
...
}
5. Interpretowanie komunikatów o stanie
Dla każdego przetworzonego dokumentu jest przypisywany stan , succeeded, failed, running, notStartedlub skipped. Podano źródłowy adres URL, który jest źródłowym kontenerem magazynu obiektów blob dla dokumentu wejściowego.
Stan
notStartedlubrunning. Operacja analizy wsadowej nie jest inicjowana lub nie została ukończona. Poczekaj, aż operacja zostanie ukończona dla wszystkich dokumentów.Stan
completed. Operacja analizy wsadowej została zakończona.Stan
succeeded. Operacja wsadowa zakończyła się pomyślnie, a dokument wejściowy został przetworzony. Wyniki są dostępne w witrynieresultUrl, która jest tworzona przez połączenieresultContainerUrl,resultPrefix,input filenamei.ocr.jsonrozszerzenia. Tylko pliki, które zakończyły się pomyślnie, mają właściwośćresultUrl.succeededPrzykład odpowiedzi o stanie:{ "resultId": "myresultId-", "status": "succeeded", "percentCompleted": 100, "createdDateTime": "2025-01-01T00:00:000", "lastUpdatedDateTime": "2025-01-01T00:00:000", "result": { "succeededCount": 10,000, "failedCount": 0, "skippedCount": 0, "details": [ { "sourceUrl": "https://{your-source-container}/inputFolder/document1.pdf", "resultUrl": "https://{your-result-container}/resultsFolder/document1.pdf.ocr.json", "status": "succeeded" }, ... { "sourceUrl": "https://{your-source-container}/inputFolder/document10000.pdf", "resultUrl": "https://{your-result-container}/resultsFolder/document10000.pdf.ocr.json", "status": "succeeded" } ] } }Stan
failed. Ten błąd jest zwracany tylko wtedy, gdy występują błędy w ogólnym żądaniu wsadowym. Po rozpoczęciu operacji analizy wsadowej stan operacji pojedynczego dokumentu nie ma wpływu na stan ogólnego zadania wsadowego, nawet jeśli wszystkie pliki mają stanfailed.failedPrzykład odpowiedzi o stanie:[ "result": { "succeededCount": 0, "failedCount": 2, "skippedCount": 0, "details": [ "sourceUrl": "https://{your-source-container}/inputFolder/document1.jpg", "status": "failed", "error": { "code": "InvalidArgument", "message": "Invalid argument.", "innererror": { "code": "InvalidSasToken", "message": "The shared access signature (SAS) is invalid: {details}" } } ] } ] ...Stan
skipped: zazwyczaj ten stan występuje, gdy dane wyjściowe dokumentu są już obecne w określonym folderze wyjściowym, aoverwriteExistingwłaściwość logiczna jest ustawiona nafalsewartość .Przykład odpowiedzi stanu
skipped:[ "result": { "succeededCount": 3, "failedCount": 0, "skippedCount": 2, "details": [ ... "sourceUrl": "https://{your-source-container}/inputFolder/document1.pdf", "status": "skipped", "error": { "code": "OutputExists", "message": "Analysis skipped because result file https://{your-result-container}/resultsFolder/document1.pdf.ocr.json already exists." } ] } ] ...Uwaga
Wyniki analizy nie są zwracane dla poszczególnych plików do momentu ukończenia analizy całej partii. Aby śledzić szczegółowy postęp poza
percentCompletedusługą , możesz monitorować*.ocr.jsonpliki podczas ich zapisywania w plikuresultContainerUrl.