

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon Textract 비동기 작업 호출
<a name="api-async"></a>

Amazon Textract Textract는 PDF 또는 TIFF 형식으로 여러 페이지 문서를 처리하는 데 사용할 수 있는 비동기 API를 제공합니다. 비동기 작업을 사용하여 JPEG, PNG, TIFF 또는 PDF 형식의 단일 페이지 문서를 처리할 수도 있습니다.

이 주제의 정보는 텍스트 검색 작업을 사용하여 Amazon Textract 비동기 작업을 사용하는 방법을 보여줍니다. 동일한 접근 방식이 텍스트 분석 작업에서 작동합니다.[StartDocumentAnalysis](API_StartDocumentAnalysis.md)과[GetDocumentAnalysis](API_GetDocumentAnalysis.md). 또한 에서 동일하게 작동합니다.[StartExpenseAnalysis](API_StartExpenseAnalysis.md)과[GetExpenseAnalysis](API_GetExpenseAnalysis.md).

문제 해결 예는 [다중 페이지 문서에서 텍스트 감지 또는 분석](async-analyzing-with-sqs.md)을(를) 참조하십시오.

Amazon Textract S3 버킷에 저장된 문서를 비동기식으로 처리합니다. a를 호출하여 처리를 시작합니다.`Start`다음과 같은 작업[StartDocumentTextDetection](API_StartDocumentTextDetection.md). 요청 완료 상태가 Amazon Simple Notification Service (Amazon SNS) 주제에 게시됩니다. Amazon SNS 주제에서 완료 상태를 가져오려면 Amazon Simple Queue Service (Amazon SQS) 대기열 또는AWS Lambda함수. 완료 상태가 되면 [GetDocumentTextDetection](API_GetDocumentTextDetection.md) 같은 `Get` 작업을 불러와 요청 결과를 가져옵니다.

작업을 사용하여 Amazon S3 버킷을 지정하지 않는 한 비동기 호출 결과는 기본적으로 Amazon Textract 소유 버킷에 7일 동안 암호화되어 저장됩니다.`OutputConfig`인수.

다음 표에는 Amazon Textract Textract에서 지원하는 다양한 유형의 비동기 처리에 대한 해당 시작 및 Get 작업이 나와 있습니다.


**Amazon Textract 비동기 작업을 위한 API 작업 시작/가져오기**  

| 처리 유형 | API 시작 | API 가져오기 | 
| --- | --- | --- | 
| 텍스트 감지 | StartDocumentTextDetection | GetDocumentTextDetection | 
| 텍스트 분석 | StartDocumentAnalysis | GetDocumentAnalysis | 
| 비용 분석 | 시작익스텐스분석 | GetExpense분석 | 

를 사용하는 예제의 경우AWS Lambda함수, 참조[Amazon Textract Textract를 사용한 대규모 문서 처리](https://github.com/aws-samples/amazon-textract-serverless-large-scale-document-processing).

다음 그림은 Amazon S3 버킷에 저장된 문서 이미지에서 문서 텍스트를 감지하는 프로세스를 보여줍니다. 이 다이어그램에서 Amazon SQS 대기열은 Amazon SNS 주제의 완료 상태를 가져옵니다.

![\[alt text not found\]](http://docs.aws.amazon.com/ko_kr/textract/latest/dg/images/asynchronous.png)


위 다이어그램에서 표시하는 프로세스는 텍스트 및 송장/영수증을 분석할 때 동일합니다. 호출하여 텍스트 분석을 시작합니다.[StartDocumentAnalysis](API_StartDocumentAnalysis.md)전화를 통해 인보이스/영수증 분석을 시작합니다.[StartExpenseAnalysis](API_StartExpenseAnalysis.md)호출하여 결과를 얻을 수 있습니다.[GetDocumentAnalysis](API_GetDocumentAnalysis.md)또는[GetExpenseAnalysis](API_GetExpenseAnalysis.md)각각.

## 텍스트 감지 시작
<a name="api-async-start"></a>

을 불러와 Amazon Textract 텍스트 감지 요청을 시작합니다.[StartDocumentTextDetection](API_StartDocumentTextDetection.md). 다음은 `StartDocumentTextDetection`으로 전달되는 JSON 요청의 예입니다.

```
{
    "DocumentLocation": {
        "S3Object": {
            "Bucket": "bucket",
            "Name": "image.pdf"
        }
    },
    "ClientRequestToken": "DocumentDetectionToken",
    "NotificationChannel": {
        "SNSTopicArn": "arn:aws:sns:us-east-1:nnnnnnnnnn:topic",
        "RoleArn": "arn:aws:iam::nnnnnnnnnn:role/roleTopic"
    },
    "JobTag": "Receipt"
}
```

입력 파라미터`DocumentLocation`에서는 문서 파일 이름과 파일을 검색할 수 있는 Amazon S3 버킷을 제공합니다.`NotificationChannel`텍스트 검색 요청이 완료될 때 Amazon Textract가 통지하는 Amazon SNS 주제의 Amazon 리소스 이름 (ARN) 이 포함됩니다. Amazon SNS 주제는 호출하는 Amazon Textract 엔드포인트와 동일한 AWS 리전에 있어야 합니다.`NotificationChannel`또한 Amazon Textract SNS 주제에 게시할 때 사용할 수 있는 역할의 ARN도 있습니다. Amazon Textract Textract는 IAM 서비스 역할을 생성하여 Amazon SNS 주제에 Amazon Textract의 게시 권한을 줍니다. 자세한 정보는 [비동기 작업을 위한 Amazon Textract 구성](api-async-roles.md)을 참조하십시오.

선택적 입력 파라미터를 지정할 수도 있습니다.`JobTag`이렇게 하면 Amazon SNS 주제에 게시된 완료 상태에서 작업 또는 작업 그룹을 식별할 수 있습니다. 예를 들어 를 사용할 수 있습니다.`JobTag`세금 양식 또는 영수증과 같이 처리되는 문서의 유형을 식별합니다.

분석 작업이 실수로 중복되지 않도록 idempotent 토큰 `ClientRequestToken`을 선택적으로 제공할 수 있습니다. 에 대한 값을 제공하는 경우`ClientRequestToken`,`Start`작업이 동일하게 반환됩니다.`JobId`여러 개의 동일한 호출에 대해`Start`다음과 같은 작업`StartDocumentTextDetection`. `ClientRequestToken` 토큰은 수명이 7일입니다. 7일 후에 다시 사용할 수 있습니다. 토큰 수명 기간 동안 토큰을 재사용할 경우 다음과 같은 현상이 생깁니다.
+ 동일한 `Start` 작업과 동일한 입력 파라미터로 토큰을 다시 사용할 경우 동일한 `JobId`가 반환됩니다. 이 작업은 다시 실행되지 않으며 Amazon Textract TExtract는 등록된 Amazon SNS 주제에 완료 상태를 전송하지 않습니다.
+ 동일한 `Start` 작업에서 약간의 입력 파라미터를 변경하여 토큰을 재사용할 경우 `idempotentparametermismatchexception`(HTTP 상태 코드: 400) 예외가 표시됩니다.
+ 다른 `Start` 작업에 토큰을 재사용할 경우 작업이 진행됩니다.

사용 가능한 또 다른 선택적 매개 변수는`OutputConfig`를 사용하면 출력 위치를 조정할 수 있습니다. 기본적으로 Amazon Textract Textract는 결과를 내부적으로 저장하며 Get API 작업에서만 액세스할 수 있습니다. 다음으로 바꿉니다.`OutputConfig`활성화하면 출력이 전송될 버킷의 이름과 결과를 다운로드할 수 있는 결과의 파일 접두사를 설정할 수 있습니다. 또한 를 설정할 수 있습니다.`KMSKeyID`고객 관리 키에 대한 매개 변수를 사용하여 출력을 암호화합니다. 이 매개 변수를 설정하지 않으면 Amazon Textract Textract는 다음을 사용하여 서버 측을 암호화합니다.AWS 관리형 키Amazon S3용

**참고**  
이 매개 변수를 사용하기 전에 출력 버킷에 대한 PutObject 권한이 있는지 확인하십시오. 또한, 에 대한 암호 해독, ReEncrypt, GenerateDataKey 및 DescribeKey 권한이 있는지 확인합니다.AWS KMS키를 사용하기로 결정한 경우.

`StartDocumentTextDetection` 작업에 대한 응답은 작업 식별자입니다(`JobId`). 사용`JobId`을 사용하여 Amazon Textract가 Amazon SNS 주제에 완료 상태를 게시한 후에 요청을 추적하고 분석 결과를 가져옵니다. 다음은 그 한 예입니다.

```
{"JobId":"270c1cc5e1d0ea2fbc59d97cb69a72a5495da75851976b14a1784ca90fc180e3"}
```

너무 많은 작업을 동시에 시작하는 경우`StartDocumentTextDetection`를 올리십시오`LimitExceededException`동시 실행 작업의 수가 Amazon Textract 서비스 제한 미만이 될 때까지 예외 (HTTP 상태 코드: 400) 입니다.

다수의 작업으로 인해 LimitExceededException 예외가 발생하는 경우에는 Amazon SQS 대기열을 사용하여 수신되는 요청을 관리하는 것이 좋습니다. 연락처AWSAmazon SQS 대기열로도 평균 동시 요청 수를 관리하지 못하여 계속 수신할 경우에는 Support`LimitExceededException`예외.

## Amazon Textract 분석 요청의 완료 상태 가져오기
<a name="api-async-get-status"></a>

Amazon Textract Textract는 등록된 Amazon SNS 주제로 분석 완료 알림을 보냅니다. 알림에는 JSON 문자열 형태의 작업 완료 상태와 작업 식별자가 포함됩니다. 성공적인 텍스트 감지 요청에는`SUCCEEDED`상태가 됩니다. 예를 들어, 다음 결과는 텍스트 감지 작업의 성공적인 처리를 보여줍니다.

```
{
    "JobId": "642492aea78a86a40665555dc375ee97bc963f342b29cd05030f19bd8fd1bc5f",
    "Status": "SUCCEEDED",
    "API": "StartDocumentTextDetection",
    "JobTag": "Receipt",
    "Timestamp": 1543599965969,
    "DocumentLocation": {
        "S3ObjectName": "document",
        "S3Bucket": "bucket"
    }
}
```

자세한 정보는 [Amazon Textract TextractResults 알림](async-notification-payload.md)을 참조하십시오.

Amazon Textract가 Amazon SNS 주제에 게시한 상태 정보를 가져오려면 다음 옵션 중 하나를 사용합니다.
+ **AWS Lambda**— 구독할 수 있습니다AWS LambdaAmazon SNS 주제에 기록하는 함수입니다. 이 함수는 Amazon Textract Textract가 Amazon SNS 주제에 요청 완료 사실을 알릴 때 호출됩니다. 서버 측 코드로 텍스트 감지 요청 결과를 처리하도록 하려면 Lambda 함수를 사용합니다. 예를 들어, 서버 측 코드를 사용하여 이미지에 주석을 달거나 감지된 텍스트에 관한 보고서를 생성한 후에 정보를 클라이언트 애플리케이션으로 반환해야 하는 경우가 있을 수 있습니다.
+ **Amazon SQS**— Amazon SQS 대기열에서 Amazon SNS 주제를 구독할 수 있습니다. 그런 다음 Amazon SQS 대기열을 폴링하여 텍스트 검색 요청이 완료될 때 Amazon Textract Textract가 게시한 완료 상태를 검색합니다. 자세한 정보는 [다중 페이지 문서에서 텍스트 감지 또는 분석](async-analyzing-with-sqs.md)을 참조하십시오. Amazon Textract 작업을 클라이언트 애플리케이션에서만 불러와야 할 경우에는 Amazon SQS 대기열을 사용합니다.

**중요**  
Amazon Textract 을 반복해서 불러와 요청 완료 상태를 가져오는 것은 권장하지 않습니다.`Get`작업을 사용합니다. 이는 Amazon Textract Textract가`Get`요청이 너무 많을 경우 작업을 수행합니다. 여러 문서를 동시에 처리할 경우에는 Amazon Textract Textract가 각 작업의 상태를 개별적으로 확인하기 위해 폴링하는 것보다는 하나의 SQS 대기열을 완료 알림을 모니터링하는 것이 더 효율적이고 간단합니다.

## Amazon Textract 텍스트 탐지 결과 얻기
<a name="api-async-get"></a>

텍스트 탐지 요청의 결과를 가져오려면 먼저 Amazon SNS 주제에서 검색된 완료 상태가 인지 확인합니다.`SUCCEEDED`. 그런 다음 `GetDocumentTextDetection`을 호출하면 이에 의해 `StartDocumentTextDetection`에서 반환된 `JobId` 값이 통과됩니다. 요청 JSON은 다음 예제와 비슷합니다.

```
{
    "JobId": "270c1cc5e1d0ea2fbc59d97cb69a72a5495da75851976b14a1784ca90fc180e3",
    "MaxResults": 10,
    "SortBy": "TIMESTAMP"
}
```

`JobId`는 텍스트 감지 작업의 식별자입니다. 텍스트 감지는 대량의 데이터를 생성할 수 있으므로`MaxResults`단일 결과로 반환할 최대 결과 수를 지정합니다.`Get`작업을 사용합니다. 의 기본값`MaxResults`1,000입니다. 1,000보다 큰 값을 지정한 경우에는 1,000개의 결과만 반환됩니다. 작업에서 모든 결과가 반환되지 않을 경우에는 다음 페이지의 페이지 매김 토큰이 반환됩니다. 결과의 다음 페이지를 가져오려면 에서 토큰을 지정하십시오.`NextToken`파라미터.

**참고**  
Amazon Textract Textract는 비동기식 작업의 결과를 7일 동안 보유합니다. 이 후에는 결과를 검색할 수 없습니다.

이`GetDocumentTextDetection`작업 응답 JSON은 다음과 유사합니다. 검색된 총 페이지 수가 반환됩니다.`DocumentMetadata`. 검색된 텍스트는 다음 위치에 반환됩니다.`Blocks`어레이. 에 대한 내용은`Block`객체, 참조[텍스트 감지 및 문서 분석 응답 객체](how-it-works-document-layout.md).

```
{
    "DocumentMetadata": {
        "Pages": 1
    },
    "JobStatus": "SUCCEEDED",
    "Blocks": [
        {
            "BlockType": "PAGE",
            "Geometry": {
                "BoundingBox": {
                    "Width": 1.0,
                    "Height": 1.0,
                    "Left": 0.0,
                    "Top": 0.0
                },
                "Polygon": [
                    {
                        "X": 0.0,
                        "Y": 0.0
                    },
                    {
                        "X": 1.0,
                        "Y": 0.0
                    },
                    {
                        "X": 1.0,
                        "Y": 1.0
                    },
                    {
                        "X": 0.0,
                        "Y": 1.0
                    }
                ]
            },
            "Id": "64533157-c47e-401a-930e-7ca1bb3ac3fa",
            "Relationships": [
                {
                    "Type": "CHILD",
                    "Ids": [
                        "4297834d-dcb1-413b-8908-3b96866ebbb5",
                        "1d85ba24-2877-4d09-b8b2-393833d769e9",
                        "193e9c47-fd87-475a-ba09-3fda210d8784",
                        "bd8aeb62-961b-4b47-b78a-e4ed9eeecd0f"
                    ]
                }
            ],
            "Page": 1
        },
        {
            "BlockType": "LINE",
            "Confidence": 53.301639556884766,
            "Text": "ellooworio",
            "Geometry": {
                "BoundingBox": {
                    "Width": 0.9999999403953552,
                    "Height": 0.5365243554115295,
                    "Left": 0.0,
                    "Top": 0.46347561478614807
                },
                "Polygon": [
                    {
                        "X": 0.0,
                        "Y": 0.46347561478614807
                    },
                    {
                        "X": 0.9999999403953552,
                        "Y": 0.46347561478614807
                    },
                    {
                        "X": 0.9999999403953552,
                        "Y": 1.0
                    },
                    {
                        "X": 0.0,
                        "Y": 1.0
                    }
                ]
            },
            "Id": "4297834d-dcb1-413b-8908-3b96866ebbb5",
            "Relationships": [
                {
                    "Type": "CHILD",
                    "Ids": [
                        "170c3eb9-5155-4bec-8c44-173bba537e70"
                    ]
                }
            ],
            "Page": 1
        },
        {
            "BlockType": "LINE",
            "Confidence": 89.15632629394531,
            "Text": "He llo,",
            "Geometry": {
                "BoundingBox": {
                    "Width": 0.33642634749412537,
                    "Height": 0.49159330129623413,
                    "Left": 0.13885067403316498,
                    "Top": 0.17169663310050964
                },
                "Polygon": [
                    {
                        "X": 0.13885067403316498,
                        "Y": 0.17169663310050964
                    },
                    {
                        "X": 0.47527703642845154,
                        "Y": 0.17169663310050964
                    },
                    {
                        "X": 0.47527703642845154,
                        "Y": 0.6632899641990662
                    },
                    {
                        "X": 0.13885067403316498,
                        "Y": 0.6632899641990662
                    }
                ]
            },
            "Id": "1d85ba24-2877-4d09-b8b2-393833d769e9",
            "Relationships": [
                {
                    "Type": "CHILD",
                    "Ids": [
                        "516ae823-3bab-4f9a-9d74-ad7150d128ab",
                        "6bcf4ea8-bbe8-4686-91be-b98dd63bc6a6"
                    ]
                }
            ],
            "Page": 1
        },
        {
            "BlockType": "LINE",
            "Confidence": 82.44834899902344,
            "Text": "worlo",
            "Geometry": {
                "BoundingBox": {
                    "Width": 0.33182239532470703,
                    "Height": 0.3766750991344452,
                    "Left": 0.5091826915740967,
                    "Top": 0.23131252825260162
                },
                "Polygon": [
                    {
                        "X": 0.5091826915740967,
                        "Y": 0.23131252825260162
                    },
                    {
                        "X": 0.8410050868988037,
                        "Y": 0.23131252825260162
                    },
                    {
                        "X": 0.8410050868988037,
                        "Y": 0.607987642288208
                    },
                    {
                        "X": 0.5091826915740967,
                        "Y": 0.607987642288208
                    }
                ]
            },
            "Id": "193e9c47-fd87-475a-ba09-3fda210d8784",
            "Relationships": [
                {
                    "Type": "CHILD",
                    "Ids": [
                        "ed135c3b-35dd-4085-8f00-26aedab0125f"
                    ]
                }
            ],
            "Page": 1
        },
        {
            "BlockType": "LINE",
            "Confidence": 88.50325775146484,
            "Text": "world",
            "Geometry": {
                "BoundingBox": {
                    "Width": 0.35004907846450806,
                    "Height": 0.19635874032974243,
                    "Left": 0.527581512928009,
                    "Top": 0.30100569128990173
                },
                "Polygon": [
                    {
                        "X": 0.527581512928009,
                        "Y": 0.30100569128990173
                    },
                    {
                        "X": 0.8776305913925171,
                        "Y": 0.30100569128990173
                    },
                    {
                        "X": 0.8776305913925171,
                        "Y": 0.49736443161964417
                    },
                    {
                        "X": 0.527581512928009,
                        "Y": 0.49736443161964417
                    }
                ]
            },
            "Id": "bd8aeb62-961b-4b47-b78a-e4ed9eeecd0f",
            "Relationships": [
                {
                    "Type": "CHILD",
                    "Ids": [
                        "9e28834d-798e-4a62-8862-a837dfd895a6"
                    ]
                }
            ],
            "Page": 1
        },
        {
            "BlockType": "WORD",
            "Confidence": 53.301639556884766,
            "Text": "ellooworio",
            "Geometry": {
                "BoundingBox": {
                    "Width": 1.0,
                    "Height": 0.5365243554115295,
                    "Left": 0.0,
                    "Top": 0.46347561478614807
                },
                "Polygon": [
                    {
                        "X": 0.0,
                        "Y": 0.46347561478614807
                    },
                    {
                        "X": 1.0,
                        "Y": 0.46347561478614807
                    },
                    {
                        "X": 1.0,
                        "Y": 1.0
                    },
                    {
                        "X": 0.0,
                        "Y": 1.0
                    }
                ]
            },
            "Id": "170c3eb9-5155-4bec-8c44-173bba537e70",
            "Page": 1
        },
        {
            "BlockType": "WORD",
            "Confidence": 88.46246337890625,
            "Text": "He",
            "Geometry": {
                "BoundingBox": {
                    "Width": 0.15350718796253204,
                    "Height": 0.29955607652664185,
                    "Left": 0.13885067403316498,
                    "Top": 0.21856294572353363
                },
                "Polygon": [
                    {
                        "X": 0.13885067403316498,
                        "Y": 0.21856294572353363
                    },
                    {
                        "X": 0.292357861995697,
                        "Y": 0.21856294572353363
                    },
                    {
                        "X": 0.292357861995697,
                        "Y": 0.5181190371513367
                    },
                    {
                        "X": 0.13885067403316498,
                        "Y": 0.5181190371513367
                    }
                ]
            },
            "Id": "516ae823-3bab-4f9a-9d74-ad7150d128ab",
            "Page": 1
        },
        {
            "BlockType": "WORD",
            "Confidence": 89.8501968383789,
            "Text": "llo,",
            "Geometry": {
                "BoundingBox": {
                    "Width": 0.17724157869815826,
                    "Height": 0.49159327149391174,
                    "Left": 0.2980354428291321,
                    "Top": 0.17169663310050964
                },
                "Polygon": [
                    {
                        "X": 0.2980354428291321,
                        "Y": 0.17169663310050964
                    },
                    {
                        "X": 0.47527703642845154,
                        "Y": 0.17169663310050964
                    },
                    {
                        "X": 0.47527703642845154,
                        "Y": 0.6632899045944214
                    },
                    {
                        "X": 0.2980354428291321,
                        "Y": 0.6632899045944214
                    }
                ]
            },
            "Id": "6bcf4ea8-bbe8-4686-91be-b98dd63bc6a6",
            "Page": 1
        },
        {
            "BlockType": "WORD",
            "Confidence": 82.44834899902344,
            "Text": "worlo",
            "Geometry": {
                "BoundingBox": {
                    "Width": 0.33182239532470703,
                    "Height": 0.3766750991344452,
                    "Left": 0.5091826915740967,
                    "Top": 0.23131252825260162
                },
                "Polygon": [
                    {
                        "X": 0.5091826915740967,
                        "Y": 0.23131252825260162
                    },
                    {
                        "X": 0.8410050868988037,
                        "Y": 0.23131252825260162
                    },
                    {
                        "X": 0.8410050868988037,
                        "Y": 0.607987642288208
                    },
                    {
                        "X": 0.5091826915740967,
                        "Y": 0.607987642288208
                    }
                ]
            },
            "Id": "ed135c3b-35dd-4085-8f00-26aedab0125f",
            "Page": 1
        },
        {
            "BlockType": "WORD",
            "Confidence": 88.50325775146484,
            "Text": "world",
            "Geometry": {
                "BoundingBox": {
                    "Width": 0.35004907846450806,
                    "Height": 0.19635874032974243,
                    "Left": 0.527581512928009,
                    "Top": 0.30100569128990173
                },
                "Polygon": [
                    {
                        "X": 0.527581512928009,
                        "Y": 0.30100569128990173
                    },
                    {
                        "X": 0.8776305913925171,
                        "Y": 0.30100569128990173
                    },
                    {
                        "X": 0.8776305913925171,
                        "Y": 0.49736443161964417
                    },
                    {
                        "X": 0.527581512928009,
                        "Y": 0.49736443161964417
                    }
                ]
            },
            "Id": "9e28834d-798e-4a62-8862-a837dfd895a6",
            "Page": 1
        }
    ]
}
```