

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 文档处理模式
<a name="concepts-processing-modes"></a>

Amazon Comprehend 支持三种文档处理模式。您选择的模式取决于您需要处理的文档数量以及查看结果所需的立即程度：
+ **单文档同步**：您使用单个文档调用 Amazon Comprehend，并收到同步响应，该响应会立即发送到您的应用程序（或控制台）。
+ **多文档同步**：您使用最多 25 个文档的集合调用 Amazon Comprehend API，然后收到同步响应。
+ **异步批处理**：对于大量文档集合，请将文档放入 Amazon S3 存储桶中，然后启动异步任务（使用控制台或 API 操作）来分析文档。Amazon Comprehend 将分析结果存储在您在请求中指定的 S3 bucket/folder 中。

**Topics**
+ [单个文档处理](#how-single)
+ [多文档同步处理](#how-batch)
+ [异步批处理](#how-async)

## 单个文档处理
<a name="how-single"></a>

单文档操作是将文档分析结果直接返回到应用程序的同步操作。当您创建一次只能处理一个文档的交互式应用程序时，请使用单文档同步操作。

有关同步 API 操作的更多信息，请参阅 [使用内置模型进行实时分析](realtime-console-analysis.md)（适用于控制台）和 [使用 API 进行实时分析](using-api-sync.md)。

## 多文档同步处理
<a name="how-batch"></a>

如果您要处理多个文档，则可以使用 `Batch*` API 操作将多个文档一次发送到 Amazon Comprehend。每次请求中您最多可以发送 25 个文档。Amazon Comprehend 会发回一份响应列表，每个响应对应请求中的每个文档。通过这些操作发出的请求是同步的。您的应用程序调用该操作，然后等待服务的响应。

使用这些`Batch*`操作与 APIs 为请求中的每个文档调用单个文档相同。使用它们 APIs 可以提高应用程序的性能。

每个的输入都 APIs 是一个 JSON 结构，其中包含要处理的文档。对于除 `BatchDetectDominantLanguage` 之外的所有操作，您都必须设置输入语言。只能为每个请求设置一种输入语言。例如，以下是 `BatchDetectEntities` 操作的输入。它包含两个文档，并且是英文的。

```
{
   "LanguageCode": "en",
   "TextList": [
      "I have been living in Seattle for almost 4 years",
      "It is raining today in Seattle"
   ]
}
```

`Batch*` 操作的响应包含两个列表，即 `ResultList` 和 `ErrorList`。`ResultList` 包含成功处理的每个文档的一条记录。请求中每个文档的结果与您在文档上运行单个文档操作时得到的结果相同。根据输入文件中文档的顺序为每个文档的结果分配一个索引。`BatchDetectEntities` 操作的响应是：

```
{
   "ResultList"  : [
      {
         "Index": 0,
         "Entities": [
            {
               "Text": "Seattle", 
               "Score": 0.95, 
               "Type": "LOCATION", 
               "BeginOffset": 22, 
               "EndOffset": 29
            },
            {
               "Text": "almost 4 years", 
               "Score": 0.89, 
               "Type": "QUANTITY", 
               "BeginOffset": 34, 
               "EndOffset": 48
            }
         ]
      },
      {
         "Index": 1,
         "Entities": [
            {
              "Text": "today",
              "Score": 0.87,
              "Type": "DATE",
              "BeginOffset": 14,
              "EndOffset": 19
            },
            {
               "Text": "Seattle",
               "Score": 0.96,
               "Type": "LOCATION",
               "BeginOffset": 23,
               "EndOffset": 30
            }
         ]
      }
   ],
   "ErrorList": []
}
```

当请求中出现错误时，响应中会包含一个 `ErrorList`，用于标识包含错误的文档。文档由其在输入列表中的索引标识。例如，`BatchDetectLanguage` 操作的以下输入包含无法处理的文档：

```
{
   "TextList": [
     "hello friend", 
     "$$$$$$",
     "hola amigo"
   ]       
}
```

来自 Amazon Comprehend 的响应包括一个错误列表，用于标识包含错误的文档：

```
{
    "ResultList": [
        {
          "Index": 0,
          "Languages":[
            {
              "LanguageCode":"en",
              "Score": 0.99
            }
          ]
        },
        {
          "Index": 2
          "Languages":[
            {
              "LanguageCode":"es",
              "Score": 0.82
            }
          ]
        }
    ],
    "ErrorList": [
      {
        "Index": 1,
        "ErrorCode": "InternalServerException",
        "ErrorMessage": "Unexpected Server Error. Please try again."
      }
    ]
}
```

有关同步批处理 API 操作的更多信息，请参阅 [实时批处理 APIs](using-api-sync.md#get-started-batch)。

## 异步批处理
<a name="how-async"></a>

要分析大型文档和大型文档集合，请使用 Amazon Comprehend 异步操作。

要分析文档集合，通常执行以下步骤：

1. 将这些文档存储在 Amazon S3 存储桶中。

1. 启动一个或多个分析任务来分析文档。

1. 监控分析任务的进度。

1. 任务完成后，从 S3 存储桶中检索分析结果。

有关使用异步 API 操作的更多信息，请参阅 [使用控制台运行分析任务](analysis-jobs.md)（控制台）和 [使用 API 执行异步分析任务](api-async.md)。