

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.

# Funcionamiento de Amazon Textract
<a name="how-it-works"></a>

Amazon Textract Texact le permite detectar y analizar texto en documentos de entrada de una o varias páginas (consulte[Documentos de entrada](how-it-works-documents.md)). 

Amazon Textract Texact proporciona operaciones para las siguientes acciones.
+ Detección de texto únicamente. Para obtener más información, consulte[Detección de texto](how-it-works-detecting.md).
+ Detección y análisis de relaciones entre texto. Para obtener más información, consulte[Análisis de documentos](how-it-works-analyzing.md).
+ Detección y análisis de texto en facturas y recibos. Para obtener más información, consulte[Análisis de facturas y recibos](invoices-receipts.md).
+ Detección y análisis de texto en documentos de identidad gubernamentales. Para obtener más información, consulte[Análisis de documentos de identidad](how-it-works-identity.md).

Amazon Textract proporciona operaciones sincrónicas para procesar documentos pequeños, de una sola página y con respuestas casi en tiempo real. Para obtener más información, consulte [Procesamiento de documentos con operaciones síncronas](sync.md). Amazon Textract Texact también proporciona operaciones asíncronas que puede utilizar para procesar documentos de mayor tamaño de varias páginas. Las respuestas asíncronas no están en tiempo real. Para obtener más información, consulte [Procesamiento de documentos con operaciones asíncronas](async.md). 

Cuando una operación de Amazon Textract procesa un documento, los resultados se devuelven en una matriz de[Block](API_Block.md)objetos o matriz de[ExpenseDocument](API_ExpenseDocument.md)objects. Ambos objetos contienen información detectada sobre los elementos, incluida su ubicación en el documento y su relación con otros elementos del documento. Para obtener más información, consulte [Objetos de respuesta de Amazon Textract](how-it-works-document-response.md). Para ver ejemplos donde se muestra cómo utilizar`Block`objetos, consulte[Tutoriales](examples-blocks.md).

**Topics**
+ [Detección de texto](how-it-works-detecting.md)
+ [Análisis de documentos](how-it-works-analyzing.md)
+ [Análisis de facturas y recibos](invoices-receipts.md)
+ [Análisis de documentos de identidad](how-it-works-identity.md)
+ [Documentos de entrada](how-it-works-documents.md)
+ [Objetos de respuesta de Amazon Textract](how-it-works-document-response.md)
+ [Ubicación del elemento en una página de documento](text-location.md)

# Detección de texto
<a name="how-it-works-detecting"></a>

Amazon Textract Texact proporciona operaciones sincrónicas y asíncronas que devuelven solo el texto detectado en un documento. Para ambos conjuntos de operaciones, se devuelve la siguiente información en varios[Block](API_Block.md)objects.
+ Las líneas y palabras del texto detectado
+ Relaciones entre las líneas y las palabras del texto detectado
+ Página en la que aparece el texto detectado
+ Ubicación de las líneas y palabras del texto en la página del documento

Para obtener más información, consulte [Líneas y palabras de texto](how-it-works-lines-words.md).

Para detectar texto de forma sincrónica, utilice el[DetectDocumentText](API_DetectDocumentText.md)Operación API y pase un archivo de documento como entrada. La operación devuelve todo el conjunto de resultados. Para obtener más información y un ejemplo, consulte [Procesamiento de documentos con operaciones síncronas](sync.md). 

**nota**  
La operación de la API de Amazon Rekognition`DetectText`es diferente de`DetectDocumentText`. Usas`DetectText`para detectar texto en escenas en directo, como carteles o señales de tráfico.

Para detectar texto de forma asíncrona, utilice[StartDocumentTextDetection](API_StartDocumentTextDetection.md)para empezar a procesar un archivo de documento de entrada. Para obtener los resultados, llame[GetDocumentTextDetection](API_GetDocumentTextDetection.md). Los resultados se devuelven en una o más respuestas de`GetDocumentTextDetection`. Para obtener más información y un ejemplo, consulte [Procesamiento de documentos con operaciones asíncronas](async.md). 

# Análisis de documentos
<a name="how-it-works-analyzing"></a>

Amazon Textract analiza documentos y formularios en busca de relaciones entre el texto detectado. Las operaciones de análisis de Amazon Textract devuelven 3 categorías de extracción de documentos: texto, formularios y tablas. El análisis de facturas y recibos se gestiona mediante un proceso diferente; para obtener más información, consulte[Análisis de facturas y recibos](invoices-receipts.md).

**Extracción de texto**  
Texto sin procesar extraído de un documento. Para obtener más información, consulte[Líneas y palabras de texto](how-it-works-lines-words.md).

**Extraction de formularios**  
Los datos del formulario están vinculados a elementos de texto extraídos de un documento. Amazon Textract representa los datos de formulario como pares clave-valor. En el siguiente ejemplo, una de las líneas de texto detectadas por Amazon Textract es*Name: Jane Doe*. Amazon Textract Texact también identifica una clave (*Name:*) y un valor (*Jane Doe*). Para obtener más información, consulte[Datos de formulario (pares clave-valor)](how-it-works-kvp.md).

*Name: Jane Doe*

*Address: 123 Any Street, Anytown, Estados Unidos*

*Fecha de nacimiento: 12-26-09-1980*

Los pares clave-valor también se utilizan para representar casillas de verificación o botones de opción (botones de opción) que se extraen de los formularios.

*male:*☑

Para obtener más información, consulte[Elementos de selección](how-it-works-selectables.md).

**Extraction de tablas**  
Amazon Texact puede extraer tablas, celdas de tabla y elementos de celdas de tabla y puede programarse para devolver los resultados en un archivo JSON, .csv o un archivo.txt.


| Nombre | Dirección | 
| --- | --- | 
|  Ana Carolina  |  Cualquier Ciudad 123  | 

Para obtener más información, consulte [Tablas](how-it-works-tables.md). Los elementos de selección también se pueden extraer de las tablas. Para obtener más información, consulte[Elementos de selección](how-it-works-selectables.md).

Para los artículos analizados, Amazon Textract devuelve lo siguiente en varios[Block](API_Block.md)objects:
+ Las líneas y palabras del texto detectado
+ El contenido de los elementos detectados
+ Relación entre los elementos detectados
+ Página en la que se ha detectado el elemento
+ Ubicación del elemento en la página del documento

Puede utilizar operaciones síncronas o asíncronas para analizar el texto de un documento. Para analizar el texto de forma sincrónica, utilice el[AnalyzeDocument](API_AnalyzeDocument.md)y pasar un documento como entrada.`AnalyzeDocument`devuelve todo el conjunto de resultados. Para obtener más información, consulte [Análisis del texto del documento con Amazon Textract](analyzing-document-text.md). 

Para detectar texto de forma asíncrona, utilice[StartDocumentAnalysis](API_StartDocumentAnalysis.md)para empezar a procesar. Para obtener los resultados, llame[GetDocumentAnalysis](API_GetDocumentAnalysis.md). Los resultados se devuelven en una o más respuestas de`GetDocumentAnalysis`. Para obtener más información y un ejemplo, consulte [Detección o análisis de texto en un documento de varias páginas](async-analyzing-with-sqs.md). 

Para especificar qué tipo de análisis se va a realizar, puede utilizar el`FeatureTypes`parámetro de entrada de lista. Agregue TABLES a la lista para devolver información sobre las tablas detectadas en el documento de entrada, por ejemplo, celdas de tabla, texto de celda y elementos de selección de celdas. Agregue FORMULARIOS para devolver relaciones de palabras, como pares clave-valor y elementos de selección. Para realizar ambos tipos de análisis, agregue TABLAS y FORMS a`FeatureTypes`. 

Todas las líneas y palabras detectadas en el documento se incluyen en la respuesta (incluido el texto no relacionado con el valor de`FeatureTypes`).

# Análisis de facturas y recibos
<a name="invoices-receipts"></a>

Amazon Textract Texact extrae datos relevantes, como información de contacto, artículos comprados y nombre del proveedor, de casi cualquier factura o recibo sin necesidad de plantillas ni configuración. Las facturas y recibos suelen utilizar varios diseños, lo que dificulta y lleva mucho tiempo extraer datos manualmente a escala. Amazon Textract utiliza ML para comprender el contexto de las facturas y los recibos y extrae automáticamente datos como la fecha de la factura o la recepción, el número de factura o recibo, los precios del artículo, el importe total y las condiciones de pago para satisfacer las necesidades de su empresa.

Amazon Textract también identifica nombres de proveedores que son críticos para sus flujos de trabajo pero que no se etiquetan explícitamente. Por ejemplo, Amazon Textract puede encontrar el nombre del proveedor en un recibo aunque solo se indique dentro de un logotipo en la parte superior de la página sin una combinación explícita de par clave-valor. Amazon Textract Texact también le facilita la consolidación de los insumos de diversos recibos y facturas que utilizan palabras diferentes para el mismo concepto. Por ejemplo, Amazon Textract asigna relaciones entre nombres de campo en distintos documentos, como el número de cliente, el número de cliente y el ID de cuenta, lo que genera taxonomía estándar como`INVOICE_RECEIPT_ID`. En este caso, Amazon Textract los datos de forma coherente en distintos tipos de documentos. Los campos que no se alinean con la taxonomía estándar se clasifican como`OTHER`. 

A continuación se muestra la lista de los campos estándar que AnalyzeExpense admite actualmente:
+ Nombre del proveedor:`VENDOR_NAME`
+ Total:`TOTAL`
+ Dirección del destinatario:`RECEIVER_ADDRESS`
+ Fecha de factura/recepción:`INVOICE_RECEIPT_DATE`
+ ID de factura/recibo:`INVOICE_RECEIPT_ID`
+ Condiciones de pago:`PAYMENT_TERMS`
+ Subtotal:`SUBTOTAL`
+ Fecha de vencimiento:`DUE_DATE`
+ Tax:`TAX`
+ ID del contribuyente de facturas (SSN/ITIN o EIN):`TAX_PAYER_ID`
+ Nombre del objeto:`ITEM_NAME`
+ Precio del artículo:`PRICE`
+ Cantidad de artículo:`QUANTITY`

La API AnalyzeExpense devuelve los siguientes elementos de una página de documento determinada:
+ El número de recibos o facturas de una página representada como`ExpenseIndex`
+ El nombre estandarizado de los campos individuales representados como`Type`
+ El nombre real del campo tal como aparece en el documento, representado como`LabelDetection`
+ El valor del campo correspondiente representado como`ValueDetection`
+ El número de páginas del documento presentado representadas como`Pages`
+ El número de página en el que se detectó el campo, el valor o las líneas de pedido, representado como`PageNumber`
+ La geometría, que incluye el cuadro delimitador y la ubicación de las coordenadas del campo, el valor o los elementos de línea individuales de la página, representada como`Geometry`
+ Puntuación de confianza asociada a cada dato detectado en el documento, representado como`Confidence`
+ La fila completa de líneas de pedido individuales compradas, representadas como`EXPENSE_ROW`

A continuación se muestra una parte de la salida de la API de un recibo procesado por AnalyzeExpense que muestra el Total: 55,64\$1 en el documento extraído como campo estándar`TOTAL`, texto real del documento como «Total», Puntuación de confianza de «97,1», Número de página «1», El valor total como «55,64\$1» y el cuadro delimitador y las coordenadas del polígono: 

```
{
    "Type": {
        "Text": "TOTAL",
        "Confidence": 99.94717407226562
    },
    "LabelDetection": {
        "Text": "Total:",
        "Geometry": {
            "BoundingBox": {
                "Width": 0.09809663146734238,
                "Height": 0.0234375,
                "Left": 0.36822840571403503,
                "Top": 0.8017578125
            },
            "Polygon": [
                {
                    "X": 0.36822840571403503,
                    "Y": 0.8017578125
                },
                {
                    "X": 0.466325044631958,
                    "Y": 0.8017578125
                },
                {
                    "X": 0.466325044631958,
                    "Y": 0.8251953125
                },
                {
                    "X": 0.36822840571403503,
                    "Y": 0.8251953125
                }
        ]
    },
    "Confidence": 97.10792541503906
},
    "ValueDetection": {
        "Text": "$55.64",
        "Geometry": {
            "BoundingBox": {
                "Width": 0.10395314544439316,
                "Height": 0.0244140625,
                "Left": 0.66837477684021,
                "Top": 0.802734375
            },
            "Polygon": [
                {
                    "X": 0.66837477684021,
                    "Y": 0.802734375
                },
                {
                    "X": 0.7723279595375061,
                    "Y": 0.802734375
                },
                {
                    "X": 0.7723279595375061,
                    "Y": 0.8271484375
                },
                {
                    "X": 0.66837477684021,
                    "Y": 0.8271484375
                }
            ]
        },
    "Confidence": 99.85165405273438
},
"PageNumber": 1
}
```

Puede utilizar operaciones síncronas para analizar una factura o un recibo. Para analizar estos documentos, utilice la operación AnalyzeExpense y le pasa un recibo o factura.`AnalyzeExpense`devuelve todo el conjunto de resultados. Para obtener más información, consulte [Análisis de facturas y recibos con Amazon Textract](analyzing-document-expense.md).

Para analizar facturas y recibos de forma asíncrona, utilice[StartExpenseAnalysis](API_StartExpenseAnalysis.md)para empezar a procesar un archivo de documento de entrada. Para obtener los resultados, llame[GetExpenseAnalysis](API_GetExpenseAnalysis.md). Los resultados de una llamada dada a[StartExpenseAnalysis](API_StartExpenseAnalysis.md)son devueltas por`GetExpenseAnalysis`. Para obtener más información y un ejemplo, consulte [Procesamiento de documentos con operaciones asíncronas](async.md). 

# Análisis de documentos de identidad
<a name="how-it-works-identity"></a>

 Amazon Textract puede extraer información relevante de pasaportes, licencias de conducir y otra documentación de identidad emitida por el gobierno de EE. UU. mediante la API AnalyzeID. Con Analyze ID, las empresas pueden extraer información rápida y precisa de identificadores como licencias de conducir estadounidenses, ID de estado y pasaportes que tienen una plantilla o formato diferentes. La API AnalyzeID devuelve dos categorías de tipos de datos: 
+  Pares clave-valor disponibles en ID, como fecha de nacimiento, fecha de emisión, número de ID, clase y restricciones. 
+  Campos implícitos del documento que pueden no tener claves explícitas asociadas a ellos, como Nombre, Dirección y Emitido por. 

Los nombres clave están estandarizados dentro de la respuesta. Por ejemplo, si su licencia de conducir indica el número de licencia (número de licencia) y el pasaporte dice No de pasaporte, la respuesta de Analizar ID devolverá la clave estandarizada como «ID de documento» junto con la clave sin procesar (por ejemplo, número de licencia). Esta estandarización permite a los clientes combinar fácilmente información en muchos ID que utilizan términos diferentes para el mismo concepto.

![\[Texto descriptivo aquí: Una licencia de conducir simulada del estado de Massachusetts. El nombre de la persona propietaria de la licencia es María García. El campo ISS tiene un valor del 18/03/2018. El campo Número tiene un valor de 736HDV7874JSB. El campo EXP tiene un valor del 20/01/2028. El campo DOB tiene un valor del 18/03/2001. El campo CLASS tiene un valor de D. El campo REST es NINGUNO. El campo END es NINGUNO. La dirección del ID es 100 Market Street, Bigtown, MA, 02801. El campo EYES es BLK, el campo SEX es F, el campo HGT es de 4-6", el campo DD es 03/12/2019 y el campo REV es 03/12/2017.\]](http://docs.aws.amazon.com/es_es/textract/latest/dg/images/textract-id-sample-1.png)


 Analizar ID devuelve información de las estructuras denominadas`IdentityDocumentFields`. Estos son`JSON`estructuras que contienen dos fragmentos de información: el tipo normalizado y el valor asociado al tipo. Ambos también tienen un puntaje de confianza. Para obtener más información, consulte [Objetos de respuesta de la documentación](identitydocumentfields.md). 

 Puede utilizar operaciones sincrónicas para analizar una licencia de conducir o pasaporte. Para analizar estos documentos, utilice la operación AnalyzeID y le pasa un documento de identidad.`AnalyzeID`devuelve todo el conjunto de resultados. Para obtener más información, consulte [Análisis de la documentación de identidad con Amazon Textract](analyzing-document-identity.md). 

**nota**  
 Algunos documentos de identidad, como las licencias de conducir, tienen dos caras. Puede pasar las imágenes frontal y posterior de las licencias de conducir como imágenes separadas dentro de la misma solicitud de API de Analyze ID. 

# Documentos de entrada
<a name="how-it-works-documents"></a>

Una entrada adecuada para una operación de Amazon Textract Texact es un documento de una o varias páginas. Algunos ejemplos son un documento legal, un formulario, un documento de identidad o una carta. Un formulario es un documento con preguntas o solicitudes para que un usuario proporcione respuestas. Algunos ejemplos son un formulario de registro de pacientes, un formulario fiscal o un formulario de reclamación de seguro. 

Un documento puede estar en formato JPEG, PNG, PDF o TIFF. Con los archivos en formato PDF y TIFF, puede procesar documentos de varias páginas. Para obtener información sobre cómo Amazon Textract representa los documentos como`Block`objetos, consulte[Objetos de respuesta de detección de texto y análisis de documentos](how-it-works-document-layout.md).

A continuación se muestra el ejemplo de documento de entrada aceptable.

![\[Imagen de un trozo de papel blanco con un encabezado Solicitud de empleo. La siguiente línea dice Información de la aplicación, el siguiente nombre completo: Jane Doe, el siguiente número de teléfono: 555-0100, la siguiente dirección: 123 Any Street, AnyTown USA, la siguiente dirección postal: igual que la anterior. Debajo hay una tabla titulada Historial de empleo anterior. Tiene cinco columnas y cuatro filas. Los títulos de las columnas son Fecha de inicio, Fecha de finalización, Nombre del empleador, Puesto ocupado y Motivo de la salida. La siguiente fila enumera 15/1/2009, 30/6/2011, Any Company, Assistant panadero y reubicado. El próximo 7/1/2011, 8/10/2013, Example Corp. Baker, mejor opp. El próximo 15/8/2013, Present, AnyCompany, head baker, y N/A, actual.\]](http://docs.aws.amazon.com/es_es/textract/latest/dg/images/Handwriting%20Sample%203.png)


Para obtener información sobre los límites de documentos, consulte[Límites máximos de Amazon Textract](limits.md).

Para las operaciones síncronas de Amazon Texact, puede utilizar documentos de entrada almacenados en un bucket de Amazon S3 o pasar bytes de imagen codificados en base64. Para obtener más información, consulte [Llamar a operaciones sincrónicas de Amazon Textract](sync-calling.md). Para operaciones asíncronas, debe proporcionar documentos de entrada en un bucket de Amazon S3. Para obtener más información, consulte [Llamar a operaciones asíncronas de Amazon Textract](api-async.md). 

# Objetos de respuesta de Amazon Textract
<a name="how-it-works-document-response"></a>

Las operaciones de Amazon Textract devuelven distintos tipos de objetos en función de las operaciones ejecutadas. Para detectar texto y analizar un documento genérico, la operación devuelve un objeto Block. Para analizar una factura o un recibo, la operación devuelve un objeto ExpenseDocuments. Para analizar la documentación de identidad, la operación devuelve un objeto IdentityDocumentFields. Para obtener más información acerca de estos objetos de respuesta, consulte las siguientes secciones:

**Topics**
+ [Objetos de respuesta de detección de texto y análisis de documentos](how-it-works-document-layout.md)
+ [Objetos de respuesta de factura y recepción](expensedocuments.md)
+ [Objetos de respuesta de la documentación](identitydocumentfields.md)

# Objetos de respuesta de detección de texto y análisis de documentos
<a name="how-it-works-document-layout"></a>

Cuando Amazon Textract procesa un documento, crea una lista de[Block](API_Block.md)objetos del texto detectado o analizado. Cada bloque contiene información sobre un artículo detectado, dónde se encuentra y la confianza que Amazon Textract tiene en la exactitud del procesamiento.

Un documento se compone de los siguientes tipos de`Block`objects.
+ [Páginas](how-it-works-pages.md)
+  [Líneas y palabras de texto](how-it-works-lines-words.md) 
+  [Datos de formulario (pares clave-valor)](how-it-works-kvp.md) 
+  [Tablas y celdas](how-it-works-tables.md) 
+ [Elementos de selección](how-it-works-selectables.md)

El contenido de un bloque depende de la operación a la que llame. Si llama a una de las operaciones de detección de texto, se devuelven las páginas, las líneas y las palabras del texto detectado. Para obtener más información, consulte [Detección de texto](how-it-works-detecting.md). Si llama a una de las operaciones de análisis de documentos, se devuelve información sobre las páginas detectadas, los pares clave-valor, las tablas, los elementos de selección y el texto. Para obtener más información, consulte [Análisis de documentos](how-it-works-analyzing.md).

Alguno`Block`Los campos de objetos son comunes a ambos tipos de procesamiento. Por ejemplo, cada bloque tiene un identificador único.

Para ver ejemplos donde se muestra cómo usar`Block`objetos, consulte[Tutoriales](examples-blocks.md).

## Diseño de documento
<a name="hows-it-works-blocks-types.title"></a>

Amazon Textract Texact devuelve una representación de un documento como una lista de diferentes tipos de`Block`objetos vinculados en una relación padre a hijo o en un par clave-valor. También se devuelven metadatos que proporcionan el número de páginas de un documento. A continuación se muestra el JSON para un típico`Block`objeto de tipo`PAGE`.

```
{
    "Blocks": [
        {
            "Geometry": {
                "BoundingBox": {
                    "Width": 1.0, 
                    "Top": 0.0, 
                    "Left": 0.0, 
                    "Height": 1.0
                }, 
                "Polygon": [
                    {
                        "Y": 0.0, 
                        "X": 0.0
                    }, 
                    {
                        "Y": 0.0, 
                        "X": 1.0
                    }, 
                    {
                        "Y": 1.0, 
                        "X": 1.0
                    }, 
                    {
                        "Y": 1.0, 
                        "X": 0.0
                    }
                ]
            }, 
            "Relationships": [
                {
                    "Type": "CHILD", 
                    "Ids": [
                        "2602b0a6-20e3-4e6e-9e46-3be57fd0844b", 
                        "82aedd57-187f-43dd-9eb1-4f312ca30042", 
                        "52be1777-53f7-42f6-a7cf-6d09bdc15a30", 
                        "7ca7caa6-00ef-4cda-b1aa-5571dfed1a7c"
                    ]
                }
            ], 
            "BlockType": "PAGE", 
            "Id": "8136b2dc-37c1-4300-a9da-6ed8b276ea97"
        }..... 
        
    ], 
    "DocumentMetadata": {
        "Pages": 1
    }
}
```

Un documento se elabora a partir de uno o varios`PAGE`bloques. Cada página contiene una lista de bloques secundarios para los elementos principales detectados en la página, como líneas de texto y tablas. Para obtener más información, consulte [Páginas](how-it-works-pages.md). 

Puede determinar el tipo de`Block`objeto inspeccionando el`BlockType`.

UNA`Block`contiene una lista de`Block`objetos del`Relationships`, que es una matriz de[Relationship](API_Relationship.md)objects. UNA`Relationships`array es del tipo CHILD o del tipo VALUE. Se utiliza una matriz de tipo CHILD para enumerar los elementos secundarios del bloque actual. Por ejemplo, si el bloque actual es del tipo LINE,`Relationships`contiene una lista de identificadores de los bloques WORD que componen la línea de texto. Una matriz de tipo VALUE se utiliza para contener pares clave-valor. Puede determinar el tipo de relación inspeccionando el`Type`del`Relationship`object. 

Los bloques secundarios no tienen información sobre sus objetos Bloquear padre.

Para ver ejemplos que muestran`Block`información, consulte[Procesamiento de documentos con operaciones síncronas](sync.md).

## Confianza
<a name="how-it-works-confidence"></a>

Las operaciones de Amazon Textract Texact devuelven el porcentaje de confianza que Amazon Textract Texact tiene respecto a la precisión del artículo detectado. Para obtener la confianza, utilice el`Confidence`del`Block`object. Un valor más elevado indica una mayor confianza. Según el escenario, las detecciones con poca confianza podrían necesitar la confirmación visual de un humano.

## Geometry
<a name="how-it-works-geometry"></a>

Las operaciones de Amazon Textract, a excepción del análisis de identidad, devuelven información de ubicación sobre la ubicación de los artículos detectados en una página de documento. Para obtener la ubicación, utilice la`Geometry`del`Block`object. Para obtener más información, consulte[Ubicación del elemento en una página de documento](text-location.md) 

# Páginas
<a name="how-it-works-pages"></a>

Un documento consta de una o más páginas. UNA[Block](API_Block.md)objeto de tipo`PAGE`existe para cada página del documento. UNA`PAGE`objeto bloque contiene una lista de los ID secundarios de las líneas de texto, pares clave-valor y tablas que se detectan en la página del documento. 

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


El JSON para un`PAGE`El bloque tiene un aspecto similar al siguiente.

```
{

    "Geometry": .... 
    "Relationships": [
        {
            "Type": "CHILD", 
            "Ids": [
                "2602b0a6-20e3-4e6e-9e46-3be57fd0844b", // Line - Hello, world.
                "82aedd57-187f-43dd-9eb1-4f312ca30042", // Line - How are you?
                "52be1777-53f7-42f6-a7cf-6d09bdc15a30", 
                "7ca7caa6-00ef-4cda-b1aa-5571dfed1a7c"   
            ]
        }
    ], 
    "BlockType": "PAGE", 
    "Id": "8136b2dc-37c1-4300-a9da-6ed8b276ea97"  // Page identifier
},
```

Si utilizas operaciones asíncronas con un documento de varias páginas en formato PDF, puedes determinar la página en la que se encuentra un bloque inspeccionando la`Page`del`Block`object. Una imagen escaneada (una imagen en formato JPEG, PNG, PDF o TIFF) se considera un documento de una sola página, incluso si hay más de una página de documento en la imagen. Las operaciones asíncronas siempre devuelven un`Page`valor de 1 para imágenes escaneadas.

El número total de páginas se devuelve en la`Pages`field de`DocumentMetadata`.`DocumentMetadata`se devuelve con cada lista de`Block`objetos devueltos por una operación de Amazon Textract Texact.

# Líneas y palabras de texto
<a name="how-it-works-lines-words"></a>

El texto detectado devuelto por las operaciones de Amazon Textract Texact se devuelve en una lista de[Block](API_Block.md)objects. Estos objetos representan líneas de texto o palabras textuales que se detectan en una página de documento. El texto siguiente muestra dos líneas de texto hechas de varias palabras.

Esto es texto.

En dos líneas separadas.

El texto detectado se devuelve en el`Text`de un`Block`object. La`BlockType`determina si el texto es una línea de texto (LINE) o una palabra (WORD). UNA*WORD*es uno o varios caracteres en alfabeto latino básico ISO que no están separados por espacios. UNA*LÍNEA*es una cadena de palabras contiguas y delimitadas por tabulaciones.

 Además, Amazon Textract Texact determinará si un fragmento de texto se ha escrito a mano o se imprimió utilizando el`TextTypes`. Estos devuelven como ESCRITURA A MANO e IMPRESOS respectivamente. 

El otro`Block`las propiedades son comunes a todos los tipos de bloques, como la información de ID, confianza y geometría. Para obtener más información, consulte [Objetos de respuesta de detección de texto y análisis de documentos](how-it-works-document-layout.md). 

Para detectar solo líneas y palabras, puede utilizar[DetectDocumentText](API_DetectDocumentText.md)o[StartDocumentTextDetection](API_StartDocumentTextDetection.md). Para obtener más información, consulte [Detección de texto](how-it-works-detecting.md). Para obtener el texto detectado (líneas y palabras) e información sobre cómo se relaciona con otras partes del documento, como tablas, puede utilizar[AnalyzeDocument](API_AnalyzeDocument.md)o[StartDocumentAnalysis](API_StartDocumentAnalysis.md). Para obtener más información, consulte [Análisis de documentos](how-it-works-analyzing.md).

`PAGE`,`LINE`, y`WORD`los bloques están relacionados entre sí en una relación de padre a hijo. UNA`PAGE`block es el principal de todos`LINE`objetos de bloque en una página de documento. Debido a que una LINE puede tener una o más palabras, la`Relationships`array para un bloque LINE almacena los ID de los bloques WORD secundarios que componen la línea de texto. 

En el siguiente diagrama, se muestra cómo la línea*Hello, world.*del texto*Hello, world. ¿Cómo estás?*está representado por`Block`objects. 

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




A continuación se muestra la salida JSON de`DetectDocumentText`cuando la frase*Hello, world. ¿Cómo estás?*se detecta. El primer ejemplo es el JSON de la página del documento. Tenga en cuenta cómo los ID CHILD le permiten navegar por el documento.

```
{
    "Geometry": {...}, 
    "Relationships": [
        {
            "Type": "CHILD", 
            "Ids": [
                "d7fbd604-d609-4d69-857d-247a3f591238", // Line - Hello, world.
                "b6c19a93-6493-4d8e-958f-853c8f7ca055" //  Line - How are you?
            ]
        }
    ], 
    "BlockType": "PAGE", 
    "Id": "56ec1d77-171f-4881-9852-2b5b7e761608"
},
```

El siguiente es el JSON de los bloques LINE que componen la línea «Hola, Mundo»: 

```
{
    "Relationships": [
        {
            "Type": "CHILD", 
            "Ids": [
                "7f97e2ca-063e-47a8-981c-8beee31afc01", // Word - Hello,
                "4b990aa0-af96-4369-b90f-dbe02538ed21"  // Word - world.
            ]
        }
    ], 
    "Confidence": 99.63229370117188, 
    "Geometry": {...}, 
    "Text": "Hello, world.", 
    "BlockType": "LINE", 
    "Id": "d7fbd604-d609-4d69-857d-247a3f591238"
},
```

El siguiente es el JSON del bloque WORD de la palabra*Hello,*: 

```
{
    "Geometry": {...}, 
    "Text": "Hello,", 
    "TextType": "PRINTED",
    "BlockType": "WORD", 
    "Confidence": 99.74746704101562, 
    "Id": "7f97e2ca-063e-47a8-981c-8beee31afc01"
},
```

El JSON final es el bloque WORD de la palabra*world.*:

```
{
    "Geometry": {...}, 
    "Text": "world.",
    "TextType": "PRINTED",
    "BlockType": "WORD", 
    "Confidence": 99.5171127319336, 
    "Id": "4b990aa0-af96-4369-b90f-dbe02538ed21"
},
```

# Datos de formulario (pares clave-valor)
<a name="how-it-works-kvp"></a>

Amazon Texact puede extraer datos de formulario de documentos en pares clave-valor. Por ejemplo, en el siguiente texto, Amazon Textract puede identificar una clave (*Name:*) y un valor (*Ana Carolina*).

Name: Ana Carolina

Los pares clave-valor detectados se devuelven como[Block](API_Block.md)objetos en las respuestas de[AnalyzeDocument](API_AnalyzeDocument.md)y[GetDocumentAnalysis](API_GetDocumentAnalysis.md). Puede utilizar el`FeatureTypes`parámetro de entrada para recuperar información sobre pares clave-valor, tablas o ambos. Solo para pares clave-valor, utilice el valor`FORMS`. Para ver un ejemplo, consulte [Extracción de pares clave-valor de un documento de formulario](examples-extract-kvp.md). Para obtener información general sobre cómo un documento está representado por`Block`objetos, consulte[Objetos de respuesta de detección de texto y análisis de documentos](how-it-works-document-layout.md). 

Los objetos de bloque con el tipo KEY\$1VALUE\$1SET son los contenedores de los objetos KEY o VALUE Block que almacenan información sobre los elementos de texto vinculados detectados en un documento. Puede utilizar el`EntityType`para determinar si un bloque es KEY o VALUE. 
+ UNA*CLAVE*objeto contiene información sobre la clave del texto vinculado. Por ejemplo,*Name:*. Un bloque KEY tiene dos listas de relaciones. Una relación de tipo VALUE es una lista que contiene el ID del bloque VALUE asociado a la clave. Una relación de tipo CHILD es una lista de ID de los bloques WORD que componen el texto de la clave.
+ UNA*VALUE*objeto contiene información sobre el texto asociado a una clave. En el modelo de ejemplo anterior,*Ana Carolina*es el valor de la clave*Name:*. Un bloque VALUE tiene una relación con una lista de bloques CHILD que identifican bloques WORD. Cada bloque WORD contiene una de las palabras que componen el texto del valor. UNA`VALUE`El objeto también puede contener información sobre los elementos seleccionados. Para obtener más información, consulte [Elementos de selección](how-it-works-selectables.md).

Cada instancia de un KEY\$1VALUE\$1SET`Block`es un elemento secundario de la PAGE`Block`objeto que corresponde a la página actual.

En el siguiente diagrama se muestra cómo el par clave-valor*Name: Ana Carolina*está representado por`Block`objects.

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


En los siguientes ejemplos se muestra cómo el par clave-valor*Name: Ana Carolina*está representado por JSON.

El bloque PAGE tiene bloques CHILD de tipo`KEY_VALUE_SET`para cada bloque KEY y VALUE detectados en el documento. 

```
{
    "Geometry": .... 
    "Relationships": [
        {
            "Type": "CHILD", 
            "Ids": [
                "2602b0a6-20e3-4e6e-9e46-3be57fd0844b", 
                "82aedd57-187f-43dd-9eb1-4f312ca30042", 
                "52be1777-53f7-42f6-a7cf-6d09bdc15a30", // Key - Name:
                "7ca7caa6-00ef-4cda-b1aa-5571dfed1a7c"  // Value - Ana Caroline 
            ]
        }
    ], 
    "BlockType": "PAGE", 
    "Id": "8136b2dc-37c1-4300-a9da-6ed8b276ea97"  // Page identifier
},
```

El siguiente JSON muestra que el bloque KEY (52be1777-53f7-42f6-a7cf-6d09bdc15a30) tiene una relación con el bloque VALUE (7ca7caa6-00ef-4cda-b1aa-5571dfed1a7c). También tiene un bloque CHILD para el bloque WORD (c734fca6-c4c4-415c-b6c1-30f7510b72ee) que contiene el texto de la clave (*Name:*).

```
{
    "Relationships": [
        {
            "Type": "VALUE", 
            "Ids": [
                "7ca7caa6-00ef-4cda-b1aa-5571dfed1a7c"  // Value identifier
            ]
        }, 
        {
            "Type": "CHILD", 
            "Ids": [
                "c734fca6-c4c4-415c-b6c1-30f7510b72ee"  // Name:
            ]
        }
    ], 
    "Confidence": 51.55965805053711, 
    "Geometry": ...., 
    "BlockType": "KEY_VALUE_SET", 
    "EntityTypes": [
        "KEY"
    ], 
    "Id": "52be1777-53f7-42f6-a7cf-6d09bdc15a30"  //Key identifier
},
```

El siguiente JSON muestra que el bloque VALUE 7ca7caa6-00ef-4cda-b1aa-5571dfed1a7c tiene una lista SECUNDARIA de ID para los bloques WORD que componen el texto del valor (*Ana*y*Carolina*).

```
{
    "Relationships": [
        {
            "Type": "CHILD", 
            "Ids": [
                "db553509-64ef-4ecf-ad3c-bea62cc1cd8a", // Ana
                "e5d7646c-eaa2-413a-95ad-f4ae19f53ef3"  // Carolina
            ]
        }
    ], 
    "Confidence": 51.55965805053711, 
    "Geometry": ...., 
    "BlockType": "KEY_VALUE_SET", 
    "EntityTypes": [
        "VALUE"
    ], 
    "Id": "7ca7caa6-00ef-4cda-b1aa-5571dfed1a7c" // Value identifier
}
```

El siguiente JSON muestra el`Block`objetos para las palabras*Name:*,*Ana*, y*Carolina*.

```
{
    "Geometry": {...}, 
    "Text": "Name:", 
    "TextType": "PRINTED".
    "BlockType": "WORD", 
    "Confidence": 99.56285858154297, 
    "Id": "c734fca6-c4c4-415c-b6c1-30f7510b72ee"
},
 {
    "Geometry": {...}, 
    "Text": "Ana", 
    "TextType": "PRINTED",
    "BlockType": "WORD", 
    "Confidence": 99.52057647705078, 
    "Id": "db553509-64ef-4ecf-ad3c-bea62cc1cd8a"
}, 
{
    "Geometry": {...}, 
    "Text": "Carolina", 
    "TextType": "PRINTED",
    "BlockType": "WORD", 
    "Confidence": 99.84207916259766, 
    "Id": "e5d7646c-eaa2-413a-95ad-f4ae19f53ef3"
},
```

# Tablas
<a name="how-it-works-tables"></a>

Amazon Texact puede extraer tablas y celdas de una tabla. Por ejemplo, cuando se detecta la siguiente tabla en un formulario, Amazon Textract Texact detecta una tabla con cuatro celdas. 


| Nombre | Dirección | 
| --- | --- | 
|  Ana Carolina  |  Cualquier Ciudad 123  | 

Las tablas detectadas se devuelven como[Block](API_Block.md)objetos en las respuestas de[AnalyzeDocument](API_AnalyzeDocument.md)y[GetDocumentAnalysis](API_GetDocumentAnalysis.md). Puede utilizar el`FeatureTypes`parámetro de entrada para recuperar información sobre pares clave-valor, tablas o ambos. Solo para tablas, utilice el valor`TABLES`. Para ver un ejemplo, consulte [Exportación de tablas a un archivo CSV](examples-export-table-csv.md). Para obtener información general sobre cómo un documento está representado por`Block`objetos, consulte[Objetos de respuesta de detección de texto y análisis de documentos](how-it-works-document-layout.md).

En el siguiente diagrama se muestra cómo una sola celda de una tabla está representada por:`Block`objects.

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


Una celda contiene`WORD`bloques para palabras detectadas, y`SELECTION_ELEMENT`bloques para elementos de selección, tales como casillas de verificación. 

El siguiente es JSON parcial para la tabla anterior, que tiene cuatro celdas.

El objeto PAGE Block tiene una lista de ID de bloque CHILD para el bloque TABLE y cada LÍNEA de texto detectada. 

```
{
    "Geometry": {...}, 
    "Relationships": [
        {
            "Type": "CHILD", 
            "Ids": [
                "f2a4ad7b-f21d-4966-b548-c859b84f66a4",   // Line - Name
                "4dce3516-ffeb-45e0-92a2-60770e9cb744",   // Line  - Address 
                "ee506578-768f-4696-8f4b-e4917e429f50",   // Line - Ana Carolina
                "33fc7223-411b-4399-8a90-ccd3c5a2c196",   // Line  - 123 Any Town
                "3f9665be-379d-4ae7-be44-d02f32b049c2"    // Table
            ]
        }
    ], 
    "BlockType": "PAGE", 
    "Id": "78c3ce84-ae70-418e-add7-27058418adf6"
},
```

El bloque TABLE incluye una lista de identificadores secundarios de las celdas de la tabla. Un bloque TABLE también incluye información de geometría para la ubicación de la tabla del documento. El siguiente JSON muestra que la tabla tiene cuatro celdas, que se enumeran en el`Ids`matriz.

```
{
    "Geometry": {...}, 
    "Relationships": [
        {
            "Type": "CHILD", 
            "Ids": [
                "505e9581-0d1c-42fb-a214-6ff736822e8c", 
                "6fca44d4-d3d3-46ab-b22f-7fca1fbaaf02", 
                "9778bd78-f3fe-4ae1-9b78-e6d29b89e5e9", 
                "55404b05-ae12-4159-9003-92b7c129532e"
            ]
        }
    ], 
    "BlockType": "TABLE", 
    "Confidence": 92.5705337524414, 
    "Id": "3f9665be-379d-4ae7-be44-d02f32b049c2"
},
```

El tipo de bloque de las celdas de la tabla es CELL. La`Block`objeto de cada celda incluye información sobre la ubicación de la celda en comparación con otras celdas de la tabla. También incluye información de geometría para la ubicación de la celda del documento. En el modelo de ejemplo anterior,`505e9581-0d1c-42fb-a214-6ff736822e8c`es el ID secundario de la celda que contiene la palabra*Nombre*. El ejemplo siguiente es la información de la celda. 

```
{
    "Geometry": {...}, 
    "Relationships": [
        {
            "Type": "CHILD", 
            "Ids": [
                "e9108c8e-0167-4482-989e-8b6cd3c3653e"
            ]
        }
    ], 
    "Confidence": 100.0, 
    "RowSpan": 1, 
    "RowIndex": 1, 
    "ColumnIndex": 1, 
    "ColumnSpan": 1, 
    "BlockType": "CELL", 
    "Id": "505e9581-0d1c-42fb-a214-6ff736822e8c"
},
```

Cada celda tiene una ubicación en una tabla, y la primera celda es 1,1. En el ejemplo anterior, la celda con el valor*Nombre*se encuentra en la fila 1, columna 1. La celda con el valor*Cualquier Ciudad 123*se encuentra en la fila 2, columna 2. Un objeto de bloque de celdas contiene esta información en el`RowIndex`y`ColumnIndex`. La lista secundaria contiene los ID de los objetos WORD Block que contienen el texto que se encuentra dentro de la celda. Las palabras de la lista están en el orden en que se detectan, desde la parte superior izquierda de la celda hasta la parte inferior derecha de la celda. En el ejemplo anterior, la celda tiene un ID secundario con el valor e9108c8e-0167-4482-989e-8b6cd3c3653e. El siguiente resultado es para el bloque WORD con el valor de ID e9108c8e-0167-4482-989e-8b6cd3c3653e: 

```
"Geometry": {...}, 
"Text": "Name", 
"TextType": "Printed",
"BlockType": "WORD",
"Confidence": 99.81139373779297, 
"Id": "e9108c8e-0167-4482-989e-8b6cd3c3653e"
},
```

# Elementos de selección
<a name="how-it-works-selectables"></a>

Amazon Textract puede detectar elementos de selección, tales como botones de opción (botones de opción) y casillas de verificación de una página de documento. Los elementos de selección se pueden detectar en[data del formulario](how-it-works-kvp.md)y en[Tablas de](how-it-works-tables.md). Por ejemplo, cuando se detecta la siguiente tabla en un formulario, Amazon Texact detecta las casillas de verificación de las celdas de la tabla.


|  |  |  |  | 
| --- |--- |--- |--- |
|     |  **Concordar**  |  **Neutral**  |  **Discrepar**  | 
|  **Buen servicio**  |  ☑  |  ☐  |  ☐  | 
|  **Fácil de usar**  |  ☐  |  ☑  |  ☐  | 
|  **Precio justo**  |  ☑  |  ☐  |  ☐  | 

Los elementos de selección detectados se devuelven como[Block](API_Block.md)objetos en las respuestas de[AnalyzeDocument](API_AnalyzeDocument.md)y[GetDocumentAnalysis](API_GetDocumentAnalysis.md).

**nota**  
Puede utilizar el`FeatureTypes`parámetro de entrada para recuperar información sobre pares clave-valor, tablas o ambos. Por ejemplo, si filtra por tablas, la respuesta incluye los elementos de selección que se detectan en las tablas. Los elementos de selección detectados en pares clave-valor no se incluyen en la respuesta.

La información sobre un elemento de selección está contenida en un`Block`objeto de tipo`SELECTION_ELEMENT`. Para determinar el estado de un elemento seleccionable, utilice la`SelectionStatus`del`SELECTION_ELEMENT`bloque. El estado puede ser*SELECCIONADAS*o*NOT\$1SELECTED*. Por ejemplo, el valor de`SelectionStatus`para la imagen anterior es*SELECCIONADAS*.

UNA`SELECTION_ELEMENT` `Block`se asocia a un par clave-valor o a una celda de tabla. UNA`SELECTION_ELEMENT` `Block`contiene información de cuadro delimitador de un elemento de selección en el`Geometry`. UNA`SELECTION_ELEMENT` `Block`objeto no es hijo de un`PAGE` `Block`object.

## Datos de formulario (pares clave-valor)
<a name="how-it-works-selectable-kvp"></a>

Un par clave-valor se utiliza para representar un elemento de selección detectado en un formulario. La`KEY`bloque contiene el texto del elemento de selección. La`VALUE`contiene el bloque SELECTION\$1ELEMENT. En el siguiente diagrama, se muestran cómo los elementos de selección están representados por:[Block](API_Block.md)objects.

![\[alt text not found\]](http://docs.aws.amazon.com/es_es/textract/latest/dg/images/hieroglyph-key-value-set-selectable.png)


Para obtener más información sobre los pares clave-valor, consulte[Datos de formulario (pares clave-valor)](how-it-works-kvp.md).

El siguiente fragmento JSON muestra la clave de un par clave-valor que contiene un elemento de selección (**male ☑**). El ID secundario (Id bd14cfd5-9005-498b-a7f3-45ceb171f0ff) es el ID del bloque WORD que contiene el texto del elemento de selección (*masculino*). El ID del valor (Id. 24aaac7f-fcce-49c7-a4f0-3688b05586d4) es el ID del`VALUE`bloque que contiene el`SELECTION_ELEMENT`objeto de bloque.

```
{
    "Relationships": [
        {
            "Type": "VALUE", 
            "Ids": [
                "24aaac7f-fcce-49c7-a4f0-3688b05586d4"  // Value containing Selection Element
            ]
        }, 
        {
            "Type": "CHILD", 
            "Ids": [
                "bd14cfd5-9005-498b-a7f3-45ceb171f0ff"  // WORD - male
            ]
        }
    ], 
    "Confidence": 94.15619659423828, 
    "Geometry": {
        "BoundingBox": {
            "Width": 0.022914813831448555, 
            "Top": 0.08072036504745483, 
            "Left": 0.18966935575008392, 
            "Height": 0.014860388822853565
        }, 
        "Polygon": [
            {
                "Y": 0.08072036504745483, 
                "X": 0.18966935575008392
            }, 
            {
                "Y": 0.08072036504745483, 
                "X": 0.21258416771888733
            }, 
            {
                "Y": 0.09558075666427612, 
                "X": 0.21258416771888733
            }, 
            {
                "Y": 0.09558075666427612, 
                "X": 0.18966935575008392
            }
        ]
    }, 
    "BlockType": "KEY_VALUE_SET", 
    "EntityTypes": [
        "KEY"
    ], 
    "Id": "a118dc43-d5f7-49a2-a20a-5f876d9ffd79"
}
```

El siguiente fragmento JSON es el bloque WORD de la palabra*Masculino*. El bloque WORD también tiene un bloque LINE principal.

```
{
    "Geometry": {
        "BoundingBox": {
            "Width": 0.022464623674750328, 
            "Top": 0.07842985540628433, 
            "Left": 0.18863198161125183, 
            "Height": 0.01617223583161831
        }, 
        "Polygon": [
            {
                "Y": 0.07842985540628433, 
                "X": 0.18863198161125183
            }, 
            {
                "Y": 0.07842985540628433, 
                "X": 0.2110965996980667
            }, 
            {
                "Y": 0.09460209310054779, 
                "X": 0.2110965996980667
            }, 
            {
                "Y": 0.09460209310054779, 
                "X": 0.18863198161125183
            }
        ]
    }, 
    "Text": "Male", 
    "BlockType": "WORD", 
    "Confidence": 54.06439208984375, 
    "Id": "bd14cfd5-9005-498b-a7f3-45ceb171f0ff"
},
```

El bloque VALUE tiene un hijo (Id. f2f5e8cd-e73a-4e99-a095-053acd3b6bfb) que es el bloque SELECTION\$1ELEMENT. 

```
{
    "Relationships": [
        {
            "Type": "CHILD", 
            "Ids": [
                "f2f5e8cd-e73a-4e99-a095-053acd3b6bfb"  // Selection element
            ]
        }
    ], 
    "Confidence": 94.15619659423828, 
    "Geometry": {
        "BoundingBox": {
            "Width": 0.017281491309404373, 
            "Top": 0.07643391191959381, 
            "Left": 0.2271782010793686, 
            "Height": 0.026274094358086586
        }, 
        "Polygon": [
            {
                "Y": 0.07643391191959381, 
                "X": 0.2271782010793686
            }, 
            {
                "Y": 0.07643391191959381, 
                "X": 0.24445968866348267
            }, 
            {
                "Y": 0.10270800441503525, 
                "X": 0.24445968866348267
            }, 
            {
                "Y": 0.10270800441503525, 
                "X": 0.2271782010793686
            }
        ]
    }, 
    "BlockType": "KEY_VALUE_SET", 
    "EntityTypes": [
        "VALUE"
    ], 
    "Id": "24aaac7f-fcce-49c7-a4f0-3688b05586d4"
}, 
}
```

El siguiente JSON es el bloque SELECTION\$1ELEMENT. El valor de`SelectionStatus`indica que la casilla de verificación está activada.

```
{
    "Geometry": {
        "BoundingBox": {
            "Width": 0.020316146314144135, 
            "Top": 0.07575977593660355, 
            "Left": 0.22590067982673645, 
            "Height": 0.027631107717752457
        }, 
        "Polygon": [
            {
                "Y": 0.07575977593660355, 
                "X": 0.22590067982673645
            }, 
            {
                "Y": 0.07575977593660355, 
                "X": 0.2462168186903
            }, 
            {
                "Y": 0.1033908873796463, 
                "X": 0.2462168186903
            }, 
            {
                "Y": 0.1033908873796463, 
                "X": 0.22590067982673645
            }
        ]
    }, 
    "BlockType": "SELECTION_ELEMENT", 
    "SelectionStatus": "SELECTED", 
    "Confidence": 74.14942932128906, 
    "Id": "f2f5e8cd-e73a-4e99-a095-053acd3b6bfb"
}
```

## Celdas de tabla
<a name="how-it-works-selectable-table"></a>

Amazon Textract puede detectar elementos de selección dentro de una celda de tabla. Por ejemplo, las celdas de la tabla siguiente tienen casillas de verificación.


|  |  |  |  | 
| --- |--- |--- |--- |
|     |  **Concordar**  |  **Neutral**  |  **Discrepar**  | 
|  **Buen servicio**  |  ☑  |  ☐  |  ☐  | 
|  **Fácil de usar**  |  ☐  |  ☑  |  ☐  | 
|  **Precio justo**  |  ☑  |  ☐  |  ☐  | 

UNA`CELL`puede contener un bloque secundario`SELECTION_ELEMENT`objetos para elementos de selección, así como secundarios`WORD`bloques para texto detectado.

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


Para obtener más información sobre las tablas, consulte[Tablas](how-it-works-tables.md).

La TABLA`Block`objeto de la tabla anterior tiene un aspecto similar a este.

```
{
    "Geometry": {.....}, 
    "Relationships": [
        {
            "Type": "CHILD", 
            "Ids": [
                "652c09eb-8945-473d-b1be-fa03ac055928", 
                "37efc5cc-946d-42cd-aa04-e68e5ed4741d", 
                "4a44940a-435a-4c5c-8a6a-7fea341fa295", 
                "2de20014-9a3b-4e26-b453-0de755144b1a", 
                "8ed78aeb-5c9a-4980-b669-9e08b28671d2", 
                "1f8e1c68-2c97-47b2-847c-a19619c02ca9", 
                "9927e1d1-6018-4960-ac17-aadb0a94f4d9", 
                "68f0ed8b-a887-42a5-b618-f68b494a6034", 
                "fcba16e0-6bd7-4ea5-b86e-36e8330b68ea", 
                "2250357c-ae34-4ed9-86da-45dac5a5e903", 
                "c63ad40d-5a14-4646-a8df-2d4304213dbc",   // Cell
                "2b8417dc-e65f-4fcd-aa0f-61a23f1e8cb0", 
                "26c62932-72f0-4dc2-9893-1ae27829c060", 
                "27f291cc-abf4-4c23-aa24-676abe99cb1e", 
                "7e5ce028-1bcd-4d9f-ad42-15ac181c5b47", 
                "bf32e3d2-efa2-4fc1-b09b-ab9cc52ff734"
            ]
        }
    ], 
    "BlockType": "TABLE", 
    "Confidence": 99.99993896484375, 
    "Id": "f66eac36-2e74-406e-8032-14d1c14e0b86"
}
```

Celda`BLOCK`object (Id. c63ad40d-5a14-4646-a8df-2d4304213dbc) para la celda que contiene la casilla de verificación*Buen servicio*parece ser el siguiente. Incluye a un niño`Block`(Id = 26d122fd-c5f4-4b53-92c4-0ae92730ee1e) que es el`SELECTION_ELEMENT` `Block`para la casilla de verificación.

```
{
    "Geometry": {.....}, 
    "Relationships": [
        {
            "Type": "CHILD", 
            "Ids": [
                "26d122fd-c5f4-4b53-92c4-0ae92730ee1e"  // Selection Element
            ]
        }
    ], 
    "Confidence": 79.741689682006836, 
    "RowSpan": 1, 
    "RowIndex": 3, 
    "ColumnIndex": 3, 
    "ColumnSpan": 1, 
    "BlockType": "CELL", 
    "Id": "c63ad40d-5a14-4646-a8df-2d4304213dbc"
}
```

SELECTION\$1ELEMENT`Block`para la casilla de verificación es el siguiente. El valor de`SelectionStatus`indica que la casilla de verificación está activada.

```
{
    "Geometry": {.......}, 
    "BlockType": "SELECTION_ELEMENT", 
    "SelectionStatus": "SELECTED", 
    "Confidence": 88.79517364501953, 
    "Id": "26d122fd-c5f4-4b53-92c4-0ae92730ee1e"
}
```

# Objetos de respuesta de factura y recepción
<a name="expensedocuments"></a>

Cuando envía una factura o un recibo a la API AnalyzeExpense, devuelve una serie de objetos ExpenseDocuments. Cada documento de gastos se divide aún más en`LineItemGroups`y`SummaryFields`. La mayoría de las facturas y recibos contienen información como el nombre del proveedor, el número de recibo, la fecha de recepción o el importe total. AnalyzeExpense devuelve esta información en`SummaryFields`. Los recibos y facturas también contienen detalles sobre los artículos comprados. La API AnalyzeExpense devuelve esta información en`LineItemGroups`. La`ExpenseIndex`identifica de forma exclusiva el gasto y asocia el correspondiente`SummaryFields`y`LineItemGroups`detectado en ese gasto.

El nivel de datos más granular en la respuesta de AnalyzeExpense consiste en`Type`,`ValueDetection`, y`LabelDetection`(Opcional). Las entidades individuales son:
+ [Tipo](how-it-works-type.md): Hace referencia a qué tipo de información se detecta a alto nivel.
+ [Detección de etiquetas](how-it-works-labeldetection.md): hace referencia a la etiqueta de un valor asociado dentro del texto del documento.`LabelDetection`es opcional y solo se devuelve si la etiqueta está escrita.
+ [Detección de valor](how-it-works-valuedetection.md): hace referencia al valor de la etiqueta o el tipo devuelto.

La API AnalyzeExpense también detecta`ITEM`,`QUANTITY`, y`PRICE`dentro de las líneas de pedido como campos normalizados. Si hay otro texto en una línea de pedido en la imagen del recibo, como SKU o descripción detallada, se incluirá en el JSON como`EXPENSE_ROW`como se muestra en el siguiente ejemplo:

```
               {
                                    "Type": {
                                        "Text": "EXPENSE_ROW",
                                        "Confidence": 99.95216369628906
                                    },
                                    "ValueDetection": {
                                        "Text": "Banana 5 $2.5",
                                        "Geometry": {
                                          …
                                        },
                                        "Confidence": 98.11214447021484
                                    }
```

El ejemplo anterior muestra cómo la API AnalyzeExpense devuelve toda la fila de un recibo que contiene información de línea de pedido de 5 plátanos vendidos por 2,5 USD. 

# Tipo
<a name="how-it-works-type"></a>

A continuación se muestra el tipo estándar o normalizado del par clave-valor:

```
               {
                    "PageNumber": 1, 
                    "Type": {
                        "Text": "VENDOR_NAME", 
                        "Confidence": 70.0
                    }, 
                    "ValueDetection": {
                        "Geometry": { ... }, 
                        "Text": "AMAZON", 
                        "Confidence": 87.89806365966797
                    }
                }
```

El recibo no incluía el «Nombre del proveedor» en la lista explícita. Sin embargo, la API de análisis de gastos reconoció el documento como un recibo y clasificó el valor «AMAZON» como Tipo`VENDOR_NAME`. 

# Detección de etiquetas
<a name="how-it-works-labeldetection"></a>

A continuación se muestra un ejemplo de texto tal como se muestra en una página de documento de cliente:

```
               {
                    "PageNumber": 1, 
                    "Type": {
                        "Text": "OTHER", 
                        "Confidence": 70.0
                    }, 
                    "LabelDetection": {
                        "Geometry": { ... }, 
                        "Text": "CASHIER", 
                        "Confidence": 88.19171142578125
                    }, 
                    "ValueDetection": {
                        "Geometry": { ... }, 
                        "Text": "Mina", 
                        "Confidence": 87.89806365966797
                    }
                }
```

El documento de ejemplo contenía «CASHIER Mina». La API de análisis de gastos extrajo el valor tal cual y lo devuelve en`LabelDetection`. Para valores implícitos como «Nombre del proveedor», donde la «clave» no se muestra explícitamente en el recibo,`LabelDetection`no se incluirá en el elemento AnalyzeExpense. En tales casos, la API AnalyzeExpense no devuelve`LabelDetection`. 

# Detección de valor
<a name="how-it-works-valuedetection"></a>

A continuación se muestra el «valor» del par clave-valor.

```
               {
                    "PageNumber": 1, 
                    "Type": {
                        "Text": "OTHER", 
                        "Confidence": 70.0
                    }, 
                    "LabelDetection": {
                        "Geometry": { ... }, 
                        "Text": "CASHIER", 
                        "Confidence": 88.19171142578125
                    }, 
                    "ValueDetection": {
                        "Geometry": { ... }, 
                        "Text": "Mina", 
                        "Confidence": 87.89806365966797
                    }
                }
```

En el ejemplo, el documento contenía «CASHIER Mina». La API AnalyzeExpense detectó el valor del Cajero como Mina y lo devolvió en`ValueDetection`. 

# Objetos de respuesta de la documentación
<a name="identitydocumentfields"></a>

 Cuando envía un documento de identidad a la API AnalyzeID, devuelve una serie de`IdentityDocumentField`objects. Cada uno de estos objetos contiene`Type`, y`Value`.`Type`registra el campo normalizado que Amazon Textract Texact detecta y`Value`registra el texto asociado al campo normalizado. 

 A continuación se muestra un ejemplo de`IdentityDocumentField`, abreviado para mayor brevedad. 

```
{
    "DocumentMetadata": {
        "Pages": 1
    }, 
    "IdentityDocumentFields": [
        {
            "Type": {
                "Text": "first name"
            }, 
            "ValueDetection": {
                "Text": "jennifer", 
                "Confidence": 99.99908447265625
            }
        }, 
        {
            "Type": {
                "Text": "last name"
            }, 
            "ValueDetection": {
                "Text": "sample", 
                "Confidence": 99.99758911132812
            }
        },
```

 Estos son dos ejemplos de IdentityDocumentFields cortados de una respuesta más larga. Hay una separación entre el tipo detectado y el valor de ese tipo. Aquí, es el nombre y el apellido respectivamente. Esta estructura se repite con toda la información contenida. Si un tipo no se reconoce como campo normalizado, aparecerá como «otro». 

A continuación se presenta una lista de campos normalizados para licencias de conducir:
+  name (Nombre) 
+  apellido 
+  segundo nombre 
+  sufijo 
+  city in address (ciudad) 
+  código postal en la dirección 
+  state in address (estado) 
+  condado 
+  número de documento 
+  fecha de vencimiento 
+  fecha de nacimiento 
+  name (nombre) 
+  fecha de emisión 
+  class 
+  restricciones 
+  avales 
+  id type 
+  veterano 
+  address 

A continuación se presenta una lista de campos normalizados para pasaportes estadounidenses:
+  name (Nombre) 
+  apellido 
+  segundo nombre 
+  número de documento 
+  fecha de vencimiento 
+  fecha de nacimiento 
+ lugar de nacimiento
+  fecha de emisión 
+  id type 

# Ubicación del elemento en una página de documento
<a name="text-location"></a>

Las operaciones de Amazon Textract devuelven la ubicación y la geometría de los artículos encontrados en una página de documento.[DetectDocumentText](API_DetectDocumentText.md)y[GetDocumentTextDetection](API_GetDocumentTextDetection.md)devuelve la ubicación y la geometría de líneas y palabras, mientras que[AnalyzeDocument](API_AnalyzeDocument.md)y[GetDocumentAnalysis](API_GetDocumentAnalysis.md)Devuelve la ubicación y la geometría de pares clave-valor, tablas, celdas y elementos de selección.

Para determinar dónde está un elemento en una página de documento, utilice el cuadro delimitador ([Geometry](API_Geometry.md)) información devuelta por la operación Amazon Textract Texact en un[Block](API_Block.md)object. La`Geometry`objeto contiene dos tipos de ubicación e información geométrica para elementos detectados:
+ Un eje alineado[BoundingBox](API_BoundingBox.md)objeto que contiene la coordenada superior izquierda y la anchura y la altura del elemento.
+ Objeto poligonal que describe el contorno del elemento, especificado como una matriz de[Point](API_Point.md)objetos que contienen`X`(eje horizontal) y`Y`coordenadas de página de documento (eje vertical) de cada punto.

El JSON para un`Block`El objeto tiene un aspecto similar al siguiente. Tenga en cuenta la`BoundingBox`y`Polygon`.

```
{
    "Geometry": {
        "BoundingBox": {
            "Width": 0.053907789289951324, 
            "Top": 0.08913730084896088, 
            "Left": 0.11085548996925354, 
            "Height": 0.013171200640499592
        }, 
        "Polygon": [
            {
                "Y": 0.08985357731580734, 
                "X": 0.11085548996925354
            }, 
            {
                "Y": 0.08913730084896088, 
                "X": 0.16447919607162476
            }, 
            {
                "Y": 0.10159222036600113, 
                "X": 0.16476328670978546
            }, 
            {
                "Y": 0.10230850428342819, 
                "X": 0.11113958805799484
            }
        ]
    }, 
    "Text": "Name:", 
    "TextType": "PRINTED",
    "BlockType": "WORD", 
    "Confidence": 99.56285858154297, 
    "Id": "c734fca6-c4c4-415c-b6c1-30f7510b72ee"
},
```

Puede utilizar información de geometría para dibujar cuadros delimitadores alrededor de los elementos detectados. Para un ejemplo que utiliza`BoundingBox`y`Polygon`información para dibujar cuadros alrededor de líneas y líneas verticales al principio y al final de cada palabra, consulte[Detección de texto de documento con Amazon Textract](detecting-document-text.md). El ejemplo de resultado es similar al siguiente.

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


## Bounding Box
<a name="bounding-box"></a>

Un cuadro delimitador (`BoundingBox`) presenta las siguientes propiedades:
+ Height: la altura del cuadro delimitador expresada proporcionalmente respecto a la altura total de página del documento.
+ Left: coordenada X del punto superior izquierdo del cuadro delimitador expresada proporcionalmente respecto a la anchura total de página del documento.
+ Top: La coordenada Y del punto superior izquierdo del cuadro delimitador expresada proporcionalmente respecto a la altura total de la página del documento.
+ Width: anchura del cuadro delimitador expresada proporcionalmente respecto a la anchura total de página del documento.

Cada propiedad de BoundingBox tiene un valor comprendido entre 0 y 1. El valor es una ratio del ancho total de la imagen (se aplica a`Left`y`Width`) o altura (se aplica a`Height`y`Top`). Por ejemplo, si la imagen de entrada es de 700 x 200 píxeles y la coordenada superior izquierda del cuadro delimitador es de (350,50) píxeles, la API devuelve un`Left`valor de 0,5 (350/700) y un`Top`valor de 0,25 (50/200). 

En el siguiente diagrama se muestra el rango de una página de documento que cubre cada propiedad BoundingBox.

![\[Diagram showing bounding box properties: Top, Left, Width, and Height within an image.\]](http://docs.aws.amazon.com/es_es/textract/latest/dg/images/bounding-box.png)


Para mostrar el cuadro delimitador con su ubicación y tamaño correctos, debe multiplicar los valores de BoundingBox por la anchura o altura de la página del documento (según el valor que desee) para obtener los valores en píxeles. Los valores en píxeles se utilizan para mostrar el cuadro delimitador. Un ejemplo es utilizar una página de documento de 608 píxeles de ancho x 588 píxeles de alto y los siguientes valores de cuadro delimitador para el texto analizado: 

```
BoundingBox.Left: 0.3922065
BoundingBox.Top: 0.15567766
BoundingBox.Width: 0.284666
BoundingBox.Height: 0.2930403
```

La ubicación del cuadro delimitador de texto en píxeles se calcula de la siguiente manera: 

`Left coordinate = BoundingBox.Left (0.3922065) * document page width (608) = 238`

`Top coordinate = BoundingBox.Top (0.15567766) * document page height (588) = 91`

`Bounding box width = BoundingBox.Width (0.284666) * document page width (608) = 173`

`Bounding box height = BoundingBox.Height (0.2930403) * document page height (588) = 172`

Puede utilizar estos valores para mostrar un cuadro delimitador enmarcan el texto analizado. En los siguientes ejemplos de Java y Python se muestra cómo mostrar un cuadro delimitador.

------
#### [ Java ]

```
    public void ShowBoundingBox(int imageHeight, int imageWidth, BoundingBox box, Graphics2D g2d) {

        float left = imageWidth * box.getLeft();
        float top = imageHeight * box.getTop();

        // Display bounding box.
        g2d.setColor(new Color(0, 212, 0));
        g2d.drawRect(Math.round(left / scale), Math.round(top / scale),
                Math.round((imageWidth * box.getWidth()) / scale), Math.round((imageHeight * box.getHeight())) / scale);

    }
```

------
#### [ Python ]

En este ejemplo de Python se incluye el`response`devuelto por el[DetectDocumentText](API_DetectDocumentText.md)Operación de la API.

```
def process_text_detection(response):

    # Get the text blocks
    blocks = response['Blocks']
    width, height = image.size
    draw = ImageDraw.Draw(image)
    print('Detected Document Text')

    # Create image showing bounding box/polygon the detected lines/text
    for block in blocks:

        draw = ImageDraw.Draw(image)

        if block['BlockType'] == "LINE":
            box=block['Geometry']['BoundingBox']
            left = width * box['Left']
            top = height * box['Top']
            draw.rectangle([left,top, left + (width * box['Width']), top +(height * box['Height'])],outline='black')

    # Display the image
    image.show()

    return len(blocks)
```

------

## Polygon (Polígono)
<a name="polygon"></a>

El polígono devuelto por`AnalyzeDocument`es una matriz de[Point](API_Point.md)objects. Cada`Point`tiene una coordenada X e Y para una ubicación específica de la página del documento. Al igual que las coordenadas de BoundingBox, las coordenadas poligonales se normalizan a la anchura y la altura del documento y están entre 0 y 1. 

Puede utilizar puntos de la matriz de polígonos para mostrar un cuadro delimitador de grano fino alrededor de un`Block`object. La posición de cada punto poligonal en la página del documento se calcula utilizando la misma técnica utilizada para`BoundingBoxes`. Multiplique la coordenada X por el ancho de página del documento y multiplique la coordenada Y por el alto de página del documento.

En el ejemplo siguiente se muestra cómo mostrar las líneas verticales de un polígono.

```
    public void ShowPolygonVerticals(int imageHeight, int imageWidth, List <Point> points, Graphics2D g2d) {

        g2d.setColor(new Color(0, 212, 0));
        Object[] parry = points.toArray();
        g2d.setStroke(new BasicStroke(2));

        g2d.drawLine(Math.round(((Point) parry[0]).getX() * imageWidth),
                Math.round(((Point) parry[0]).getY() * imageHeight), Math.round(((Point) parry[3]).getX() * imageWidth),
                Math.round(((Point) parry[3]).getY() * imageHeight));

        g2d.setColor(new Color(255, 0, 0));
        g2d.drawLine(Math.round(((Point) parry[1]).getX() * imageWidth),
                Math.round(((Point) parry[1]).getY() * imageHeight), Math.round(((Point) parry[2]).getX() * imageWidth),
                Math.round(((Point) parry[2]).getY() * imageHeight));

    }
```