

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Llamar a operaciones asíncronas de Amazon Textract
<a name="api-async"></a>

Amazon Textract Texact proporciona una API asíncrona que puede utilizar para procesar documentos de varias páginas en formato PDF o TIFF. También puede utilizar operaciones asíncronas para procesar documentos de una sola página en formato JPEG, PNG, TIFF o PDF. 

La información de este tema utiliza operaciones de detección de texto para mostrar cómo utilizar las operaciones asíncronas de Amazon Textract Texact. El mismo enfoque funciona con las operaciones de análisis de textos de[StartDocumentAnalysis](API_StartDocumentAnalysis.md)y[GetDocumentAnalysis](API_GetDocumentAnalysis.md). También funciona igual con[StartExpenseAnalysis](API_StartExpenseAnalysis.md)y[GetExpenseAnalysis](API_GetExpenseAnalysis.md). 

Para ver un ejemplo, consulte [Detección o análisis de texto en un documento de varias páginas](async-analyzing-with-sqs.md).

Amazon Textract procesa de forma asíncrona un documento almacenado en un bucket de Amazon S3. Empiezas a procesar llamando a un`Start`operación, tales como[StartDocumentTextDetection](API_StartDocumentTextDetection.md). El estado de realización de la solicitud se publica en un tema de Amazon Simple Notification Service (Amazon SNS). Para obtener el estado de realización del tema de Amazon SNS, puede utilizar una cola de Amazon Simple Queue Service (Amazon SQS) o unaAWS Lambdafunción. Una vez que disponga del estado de realización, llame a una operación `Get`, como [GetDocumentTextDetection](API_GetDocumentTextDetection.md), para obtener los resultados de la solicitud. 

Los resultados de las llamadas asíncronas se cifran y almacenan durante 7 días en un bucket propiedad de Amazon Textract Texact de forma predeterminada, a menos que especifique un bucket de Amazon S3 mediante una operación`OutputConfig`argumento.

En la tabla siguiente se muestran las operaciones Start y Get correspondientes para los distintos tipos de procesamiento asíncrono admitidos por Amazon Textract:


**Iniciar/obtener operaciones de API para operaciones asíncronas de Amazon Textract**  

| Tipo de procesamiento | API de inicio | Obtenga la API | 
| --- | --- | --- | 
| Detección de texto | StartDocumentTextDetection | GetDocumentTextDetection | 
| Análisis de texto | StartDocumentAnalysis | GetDocumentAnalysis | 
| Análisis de gastos | Iniciar análisis de gastos | Obtener análisis de gastos | 

Para un ejemplo que utilizaAWS Lambdafunciones, consulte[Procesamiento de documentos a gran escala con Amazon Textract](https://github.com/aws-samples/amazon-textract-serverless-large-scale-document-processing).

En el siguiente diagrama se muestra el proceso para detectar el texto de un documento en una imagen de documento almacenada en un bucket de Amazon S3. En el diagrama, una cola de Amazon SQS obtiene el estado de realización a partir del tema de Amazon SNS. 

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


El proceso que muestra el diagrama anterior es el mismo para analizar texto y facturas/recibos. Empiezas a analizar texto llamando[StartDocumentAnalysis](API_StartDocumentAnalysis.md)y comienza a analizar facturas/recibos llamando[StartExpenseAnalysis](API_StartExpenseAnalysis.md)Obtienes los resultados llamando[GetDocumentAnalysis](API_GetDocumentAnalysis.md)o[GetExpenseAnalysis](API_GetExpenseAnalysis.md)respectivamente.

## Iniciar la detección de texto
<a name="api-async-start"></a>

Para iniciar una solicitud de detección de texto de Amazon Textract, llame a[StartDocumentTextDetection](API_StartDocumentTextDetection.md). El siguiente es un ejemplo de una solicitud JSON que ha transferido `StartDocumentTextDetection`.

```
{
    "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"
}
```

El parámetro de entrada`DocumentLocation`proporciona el nombre de archivo de documento y el bucket de Amazon S3 desde el que recuperarlo.`NotificationChannel`contiene el nombre de recurso de Amazon (ARN) del tema de Amazon SNS que Amazon Textract notifica cuando finaliza la solicitud de detección de texto. El tema de Amazon SNS debe estar en la misma región de AWS que el punto de enlace Amazon Textract Texact al que está llamando.`NotificationChannel`también contiene el ARN de un rol que permite a Amazon Textract Texact publicar en el tema de Amazon SNS. Puede conceder permisos de Amazon Textract Texact a sus temas de Amazon SNS creando un rol de servicio de IAM. Para obtener más información, consulte [Configuración de Amazon Textract Texact para operaciones asíncronas](api-async-roles.md).

También puede especificar un parámetro de entrada opcional,`JobTag`, que le permite identificar el trabajo o los grupos de trabajos en el estado de realización que se ha publicado en el tema de Amazon SNS. Por ejemplo, puede utilizar`JobTag`para identificar el tipo de documento que se está procesando, como un formulario fiscal o un recibo.

Para evitar la duplicación accidental de trabajos de análisis, tiene la opción de proporcionar un token idempotente, `ClientRequestToken`. Si proporciona un valor para`ClientRequestToken`, el`Start`La operación devuelve lo mismo`JobId`para varias llamadas idénticas al`Start`operación, tales como`StartDocumentTextDetection`. Un token `ClientRequestToken` tiene una vida útil de 7 días. Después de 7 días, puede volver a utilizarla. Si reutiliza el token durante el ciclo de vida del token, sucede lo siguiente: 
+ Si reutiliza el token con la misma operación `Start` y los mismos parámetros de entrada, se devuelve el mismo `JobId`. El trabajo no se vuelve a realizar de nuevo y Amazon Textract no envía un estado de realización al tema de Amazon SNS registrado.
+ Si vuelve a utilizar el token con la misma operación `Start` y un cambio de parámetro de entrada menor, obtendrá una excepción `idempotentparametermismatchexception` (código de estado HTTP: 400).
+ Si reutiliza el token con otra operación `Start` distinta, la operación se realiza correctamente.

Otro parámetro opcional disponible es`OutputConfig`, que le permite ajustar dónde se colocará la salida. De forma predeterminada, Amazon Textract Texact almacenará los resultados internamente y solo se puede acceder a ellos mediante las operaciones de Get API. con`OutputConfig`habilitado, puede establecer el nombre del depósito al que se enviará la salida y el prefijo de archivo de los resultados, donde puede descargar los resultados. También puede configurar la`KMSKeyID`parámetro a una clave administrada por el cliente para cifrar la salida. Sin este conjunto de parámetros, Amazon Textract Texact cifrará el lado del servidor mediante elClave administrada de AWSpara Amazon S3

**nota**  
Antes de utilizar este parámetro, asegúrese de tener el permiso PutObject para el bucket de salida. Además, asegúrese de tener los permisos Descifrar, ReEncrypt, GenerateDataKey y DescribeKey para elAWS KMSclave si decides usarla.

La respuesta a la operación `StartDocumentTextDetection` es un identificador de trabajo (`JobId`). Usar`JobId`para realizar un seguimiento de las solicitudes y obtener los resultados de análisis después de que Amazon Textract haya publicado el estado de realización en el tema de Amazon SNS. A continuación se muestra un ejemplo:

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

Si empiezas demasiados trabajos simultáneamente, llama a`StartDocumentTextDetection`RAISE UN`LimitExceededException`excepción (código de estado HTTP: 400) hasta que el número de trabajos ejecutados simultáneamente se encuentre por debajo del límite de servicio de Amazon Textract Texact. 

Si descubre que las excepciones LimitExceededException se producen con picos de actividad, considere la posibilidad de usar una cola de Amazon SQS para administrar las solicitudes entrantes. ContactoAWSSupport técnico si descubre que el número medio de solicitudes simultáneas no se puede administrar con una cola de Amazon SQS y sigue recibiendo`LimitExceededException`excepciones. 

## Obtención del estado de realización de una solicitud de Amazon Textract Analysis
<a name="api-async-get-status"></a>

Amazon Textract envía una notificación a la realización de análisis al tema de Amazon SNS registrado. La notificación incluye el identificador de trabajo y el estado de realización de la operación en una cadena de JSON. Una solicitud de detección de texto correcta tiene un`SUCCEEDED`estado. Por ejemplo, el siguiente resultado muestra el procesamiento correcto de un trabajo de detección de texto.

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

Para obtener más información, consulte [Notificación de resultados de Amazon Textract](async-notification-payload.md).

Para obtener la información de estado que Amazon Textract ha publicado en el tema de Amazon SNS, utilice una de las siguientes opciones:
+ **AWS Lambda**— Puede suscribirse a unAWS Lambdaque escribe en un tema de Amazon SNS. Se llama a la función cuando Amazon Textract notifica al tema de Amazon SNS que la solicitud se ha completado. Utilice una función Lambda si desea que el código del servidor procese los resultados de una solicitud de detección de texto. Por ejemplo, es posible que desee utilizar el código del servidor para anotar la imagen o crear un informe sobre el texto detectado antes de devolver la información a una aplicación cliente.
+ **Amazon SQS**— Puede suscribir una cola de Amazon SQS a un tema de Amazon SNS. A continuación, sondee la cola de Amazon SQS para recuperar el estado de realización publicado por Amazon Textract cuando se completa una solicitud de detección de texto. Para obtener más información, consulte [Detección o análisis de texto en un documento de varias páginas](async-analyzing-with-sqs.md). Utilice una cola de Amazon SQS si desea llamar a operaciones de Amazon Textract Texact solo desde una aplicación cliente. 

**importante**  
No le recomendamos obtener el estado de realización de solicitud llamando repetidamente a Amazon Textract`Get`. Esto se debe a que Amazon Textract Texact limita el`Get`si se realizan demasiadas solicitudes. Si está procesando varios documentos al mismo tiempo, es más sencillo y más eficaz supervisar una cola de SQS para la notificación de realización que sondear Amazon Textract detectar el estado de cada trabajo individualmente.

## Obtener resultados de detección de texto de Amazon Textract
<a name="api-async-get"></a>

Para obtener los resultados de una solicitud de detección de texto, en primer lugar, asegúrese de que el estado de realización que se ha recuperado del tema de Amazon SNS es`SUCCEEDED`. A continuación, llame a `GetDocumentTextDetection`, que transfiere el valor `JobId` que se devuelve desde `StartDocumentTextDetection`. El JSON de la solicitud es similar al siguiente ejemplo:

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

`JobId`es el identificador de la operación de detección de texto. Como la detección de texto puede generar grandes cantidades de datos, utilice`MaxResults`para especificar el número máximo de resultados que se devuelven en un solo`Get`. El valor predeterminado de`MaxResults`es 1000. Si especifica un valor superior a 1 000, solo se devuelven 1 000 resultados. Si la operación no devuelve todos los resultados, se devuelve un token de paginación para la página siguiente. Para obtener la siguiente página de resultados, especifique el token en el`NextToken`parámetro. 

**nota**  
Amazon Textract Texact conserva los resultados de operaciones asíncronas durante siete días. No puede recuperar los resultados transcurrido este plazo.

La`GetDocumentTextDetection`JSON de respuesta de operación es similar al siguiente. El número total de páginas detectadas se devuelve en`DocumentMetadata`. El texto detectado se devuelve en el`Blocks`matriz. Para obtener información sobre`Block`objetos, consulte[Objetos de respuesta de detección de texto y análisis de documentos](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
        }
    ]
}
```