Анализ пакетной аналитики документов
API пакетного анализа позволяет выполнять массовую обработку нескольких документов с помощью одного асинхронного запроса. Вместо того чтобы отправлять документы по отдельности и отслеживать несколько идентификаторов запросов, вы можете проанализировать коллекцию документов, таких как счета, ряд документов по кредиту или группу пользовательских документов одновременно. Пакетный API поддерживает чтение документов из хранилища BLOB-объектов Azure и запись результатов в хранилище BLOB-объектов.
- Для использования пакетного анализа требуется учетная запись хранения BLOB-объектов Azure с определенными контейнерами для исходных документов и обработанных выходных данных.
- После завершения пакетная операция выводит список всех отдельных документов, обработанных с их состоянием, например
succeeded
,skipped
илиfailed
. - Версия пакетной Предварительная версия API доступна с помощью цен на оплату по мере использования.
Руководство по пакетной аналитике
Максимальное количество документов, обрабатываемых на один пакетный анализ запроса (включая пропущенные документы), составляет 10 000.
Результаты операции сохраняются в течение 24 часов после завершения. Документы и результаты указаны в учетной записи хранения, но состояние операции больше не доступно через 24 часа после завершения.
Готовы приступить к работе?
Необходимые компоненты
наличие активной подписки Azure. Если у вас нет подписки Azure, создайте ее бесплатно.
После получения подписки Azure экземпляра Аналитики документов в портал Azure. Вы можете использовать ценовую категорию "Бесплатный" (
F0
), чтобы поработать со службой.После развертывания ресурса выберите элемент Перейти к ресурсу, чтобы получить ключ и конечную точку.
- Для подключения приложения к службе аналитики документов требуется ключ и конечная точка из ресурса. Вставьте ключ и конечную точку в код далее в кратком руководстве. Эти значения можно найти на странице "Ключи портал Azure" и "Конечная точка".
Учетная запись хранения BLOB-объектов Azure. Вы создадите контейнеры в учетной записи Хранилище BLOB-объектов Azure для исходных и результирующих файлов:
- Контейнер исходных файлов. В этом контейнере вы отправляете файлы для анализа (обязательно).
- Контейнер результатов. Этот контейнер хранит обработанные файлы (необязательно).
Вы можете назначить тот же контейнер Хранилище BLOB-объектов Azure для исходных и обработанных документов. Тем не менее, чтобы свести к минимуму потенциальные шансы случайного перезаписи данных, рекомендуется выбрать отдельные контейнеры.
Авторизация контейнера хранилища
Вы можете выбрать один из следующих вариантов, чтобы авторизовать доступ к ресурсу Document.
✔️ Управляемое удостоверение. Управляемое удостоверение — это субъект-служба, создающий удостоверение Microsoft Entra и определенные разрешения для управляемого ресурса Azure. Управляемые удостоверения позволяют запускать приложение Аналитики документов без необходимости внедрять учетные данные в код. Управляемые удостоверения — это более безопасный способ предоставления доступа к данным хранилища и замены требования к включению маркеров подписи общего доступа (SAS) в URL-адреса источника и результата.
Дополнительные сведения см. в разделе"Управляемые удостоверения" для аналитики документов.
Внимание
- При использовании управляемых удостоверений не включайте URL-адрес маркера SAS в HTTP-запросы, иначе запросы будут завершаться ошибкой. Использование управляемых удостоверений заменяет требование для включения маркеров подписанных URL-адресов (SAS).
✔️ Подписанный URL-адрес (SAS). Подписанный URL-адрес — это URL-адрес, предоставляющий ограниченный доступ в течение указанного периода времени службе аналитики документов. Чтобы использовать этот метод, необходимо создать маркеры подписанного URL-адреса (SAS) для исходных и результирующих контейнеров. Исходные и результирующий контейнеры должны включать маркер подписанного URL-адреса (SAS), добавленного в качестве строки запроса. Маркер может быть назначен контейнеру или конкретным BLOB-объектам.
- Исходныйконтейнер или большой двоичный объект должен назначить доступ для чтения, записи, списка и удаления.
- Контейнер результатов или большой двоичный объект должны назначить запись, список, удалить доступ.
Дополнительные сведения см. в разделе "Создание маркеров SAS".
Вызов API пакетного анализа
- Укажите URL-адрес контейнера Хранилище BLOB-объектов Azure для исходного
azureBlobSource
документа в пределах илиazureBlobFileListSource
объектов.
Указание входных файлов
Пакетный API поддерживает два варианта указания обрабатываемого файла. Если вам нужны все файлы в контейнере или папке, а количество файлов меньше 10000 для одного пакетного запроса, используйте azureBlobSource
контейнер.
Если у вас есть определенные файлы в контейнере или папке для обработки, или количество обрабатываемых файлов превышает максимальное ограничение для одного пакета, используйте этот azureBlobFileListSource
параметр. Разделите набор данных на несколько пакетов и добавьте файл со списком файлов, которые будут обрабатываться в формате JSONL в корневой папке контейнера. Примером формата списка файлов является.
{"file": "Adatum Corporation.pdf"}
{"file": "Best For You Organics Company.pdf"}
Укажите расположение результатов
Укажите URL-адрес контейнера Хранилище BLOB-объектов Azure для результатов пакетного анализа с помощью resultContainerUrl
. Чтобы избежать случайного перезаписи, рекомендуется использовать отдельные контейнеры для исходных и обработанных документов.
overwriteExisting
Задайте для логического свойства значение false, если вы не хотите, чтобы существующие результаты были перезаписаны с теми же именами файлов. Этот параметр не влияет на выставление счетов и запрещает перезаписывать результаты после обработки входного файла.
resultPrefix
Задайте для пространства имен результаты этого запуска пакетного API.
- Если вы планируете использовать один и тот же контейнер для входных и выходных данных, задайте
resultContainerUrl
иresultPrefix
для сопоставления входных данныхazureBlobSource
. - При использовании того же контейнера можно включить
overwriteExisting
поле, чтобы решить, следует ли перезаписать файлы с файлами результатов анализа.
Создание и запуск запроса POST
Перед выполнением запроса POST замените {your-source-container-SAS-URL} и {your-result-container-SAS-URL} значениями из экземпляров контейнеров хранилища BLOB-объектов Azure.
В следующем примере показано, как добавить azureBlobSource
свойство в запрос:
Разрешить только один или один из azureBlobSource
azureBlobFileListSource
них.
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
}
В следующем примере показано, как добавить azureBlobFileListSource
свойство в запрос:
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
}
Успешный ответ
202 Accepted
Operation-Location: /documentModels/{modelId}/analyzeBatchResults/{resultId}
Получение результатов API пакетного анализа
После выполнения операции пакетного API можно получить результаты пакетного анализа с помощьюGET
операции. Эта операция извлекает сведения о состоянии операции, процент завершения операции и создание и обновление даты и времени.
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"
...
}
Интерпретация сообщений о состоянии
Для каждого документа набор назначается состояние либо succeeded
, failed
либо skipped
. Для каждого документа есть два URL-адреса, предоставляемые для проверки результатов: sourceUrl
это контейнер исходного хранилища BLOB-объектов для успешного входного документа, который resultUrl
создается путем объединения resultContainerUrl
иresultPrefix
создания относительного пути для исходного файла и .ocr.json
.
Состояние
notStarted
илиrunning
. Операция пакетного анализа не инициируется или не завершена. Дождитесь завершения операции для всех документов.Состояние
completed
. Операция пакетного анализа завершена.Состояние
failed
. Сбой пакетной операции. Этот ответ обычно возникает при наличии общих проблем с запросом. Ошибки отдельных файлов возвращаются в ответе пакетного отчета, даже если все файлы не удалось. Например, ошибки хранения не останавливают пакетную операцию в целом, чтобы получить доступ к частичным результатам с помощью ответа пакетного отчета.
Только файлы с состоянием succeeded
имеют свойство resultUrl
, созданное в ответе. Это позволяет обучению модели обнаруживать имена файлов, которые заканчиваются .ocr.json
и определять их как единственные файлы, которые можно использовать для обучения.
succeeded
Пример ответа состояния:
[
"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}"
}
}
}
]
}
]
...
failed
Пример ответа состояния:
- Эта ошибка возвращается только в случае возникновения ошибок в общем пакетном запросе.
- После запуска операции пакетного анализа состояние отдельной операции документа не влияет на состояние общего пакетного задания, даже если все файлы имеют состояние
failed
.
[
"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}"
}
}
]
}
]
...
skipped
Пример ответа состояния:
[
"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."
}
]
}
]
...
Результаты пакетного анализа помогают определить, какие файлы успешно анализируются и проверяют результаты анализа, сравнивая файл в resultUrl
выходном файле в файле resultContainerUrl
вывода.
Примечание.
Результаты анализа не возвращаются для отдельных файлов до завершения всего пакетного анализа набора документов. Чтобы отслеживать подробный ход выполнения, percentCompleted
вы можете отслеживать *.ocr.json
файлы по мере их записи в resultContainerUrl
.