

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Como funciona o Amazon Textract
<a name="how-it-works"></a>

O Amazon Textract permite detectar e analisar texto em documentos de entrada de uma ou várias páginas (consulte[Documentos de entrada](how-it-works-documents.md)). 

Amazon Textract fornece operações para as seguintes ações.
+ Detectando somente texto. Para obter mais informações, consulte[Detectar texto](how-it-works-detecting.md).
+ Detectando e analisando relacionamentos entre texto. Para obter mais informações, consulte[Analisar documentos](how-it-works-analyzing.md).
+ Detectando e analisando texto em faturas e recibos. Para obter mais informações, consulte[Analisando faturas e recibos](invoices-receipts.md).
+ Detectando e analisando texto em documentos de identidade do governo. Para obter mais informações, consulte[Analisar documentos de identidade](how-it-works-identity.md).

Amazon Textract fornece operações síncronas para processamento de documentos pequenos, de uma única página e com respostas quase em tempo real. Para obter mais informações, consulte [Processando documentos com operações síncronas](sync.md). O Amazon Textract também fornece operações assíncronas que você pode usar para processar documentos maiores com várias páginas. As respostas assíncronas não são em tempo real. Para obter mais informações, consulte [Processando documentos com operações assíncronas](async.md). 

Quando uma operação Amazon Textract processa um documento, os resultados são retornados em uma matriz de[Block](API_Block.md)objetos ou uma matriz de[ExpenseDocument](API_ExpenseDocument.md)objects. Ambos os objetos contêm informações detectadas sobre itens, incluindo sua localização no documento e sua relação com outros itens no documento. Para obter mais informações, consulte [Objetos de resposta do Amazon Textract](how-it-works-document-response.md). Para obter exemplos que mostram como usar`Block`objetos, consulte[Tutoriais](examples-blocks.md).

**Topics**
+ [

# Detectar texto
](how-it-works-detecting.md)
+ [

# Analisar documentos
](how-it-works-analyzing.md)
+ [

# Analisando faturas e recibos
](invoices-receipts.md)
+ [

# Analisar documentos de identidade
](how-it-works-identity.md)
+ [

# Documentos de entrada
](how-it-works-documents.md)
+ [

# Objetos de resposta do Amazon Textract
](how-it-works-document-response.md)
+ [

# Localização do item em uma página de documento
](text-location.md)

# Detectar texto
<a name="how-it-works-detecting"></a>

Amazon Textract fornece operações síncronas e assíncronas que retornam somente o texto detectado em um documento. Para ambos os conjuntos de operações, as seguintes informações são retornadas em vários[Block](API_Block.md)objects.
+ As linhas e palavras do texto detectado
+ As relações entre as linhas e as palavras do texto detectado
+ A página em que o texto detectado aparece
+ A localização das linhas e palavras do texto na página do documento

Para obter mais informações, consulte [Linhas e palavras de texto](how-it-works-lines-words.md).

Para detectar texto de forma síncrona, use o[DetectDocumentText](API_DetectDocumentText.md)Operação da API e passe um arquivo de documento como entrada. Todo o conjunto de resultados é retornado pela operação. Para obter mais informações e um exemplo, consulte [Processando documentos com operações síncronas](sync.md). 

**nota**  
A operação da API do Amazon Rekognition`DetectText`é diferente do`DetectDocumentText`. Você usa`DetectText`para detectar texto em cenas ao vivo, como cartazes ou sinais de trânsito.

Para detectar texto de forma assíncrona, use[StartDocumentTextDetection](API_StartDocumentTextDetection.md)para começar a processar um arquivo de documento de entrada. Para obter resultados, ligue para[GetDocumentTextDetection](API_GetDocumentTextDetection.md). Os resultados são retornados em uma ou mais respostas de`GetDocumentTextDetection`. Para obter mais informações e um exemplo, consulte [Processando documentos com operações assíncronas](async.md). 

# Analisar documentos
<a name="how-it-works-analyzing"></a>

Amazon Textract analisa documentos e formulários para relacionamentos entre o texto detectado. As operações de análise Amazon Textract retornam 3 categorias de extração de documentos — texto, formulários e tabelas. A análise de faturas e recibos é tratada por meio de um processo diferente, para obter mais informações consulte[Analisando faturas e recibos](invoices-receipts.md).

**Extração de texto**  
O texto bruto extraído de um documento. Para obter mais informações, consulte[Linhas e palavras de texto](how-it-works-lines-words.md).

**Extração de formulário**  
Os dados do formulário são vinculados a itens de texto extraídos de um documento. Amazon Textract representa dados de formulário como pares de chave-valor. No exemplo a seguir, uma das linhas de texto detectadas pelo Amazon Textract é*Name (Nome): Jane Doe*. Amazon Textract também identifica uma chave (*Name (Nome):*) e um valor (*Jane Doe*). Para obter mais informações, consulte[Dados do formulário (pares de valores-chave)](how-it-works-kvp.md).

*Name (Nome): Jane Doe*

*Endereço: 123 Any Street, Anytown, Estados Unidos da América*

*Data de nascimento: 12-26-1980*

Os pares de valores-chave também são usados para representar caixas de seleção ou botões de opção (botões de opção) extraídos dos formulários.

*Masculino:*☑

Para obter mais informações, consulte[Elementos de seleção](how-it-works-selectables.md).

**Extração de mesa**  
O Amazon Textract pode extrair tabelas, células de tabela e os itens dentro das células da tabela e pode ser programado para retornar os resultados em um arquivo JSON, .csv ou .txt.


| Name (Nome) | Endereço | 
| --- | --- | 
|  Ana Carolina  |  123 Any Town  | 

Para obter mais informações, consulte [Tabelas](how-it-works-tables.md). Elementos de seleção também podem ser extraídos das tabelas. Para obter mais informações, consulte[Elementos de seleção](how-it-works-selectables.md).

Para itens analisados, Amazon Textract retorna o seguinte em vários[Block](API_Block.md)objects:
+ As linhas e palavras do texto detectado
+ O conteúdo dos itens detectados
+ A relação entre itens detectados
+ A página em que o item foi detectado
+ A localização do item na página do documento

Você pode usar operações síncronas ou assíncronas para analisar texto em um documento. Para analisar o texto de forma síncrona, use o[AnalyzeDocument](API_AnalyzeDocument.md)e passe um documento como entrada.`AnalyzeDocument`retorna todo o conjunto de resultados. Para obter mais informações, consulte [Analisando texto do documento com o Amazon Textract](analyzing-document-text.md). 

Para detectar texto de forma assíncrona, use[StartDocumentAnalysis](API_StartDocumentAnalysis.md)para iniciar o processamento. Para obter resultados, ligue para[GetDocumentAnalysis](API_GetDocumentAnalysis.md). Os resultados são retornados em uma ou mais respostas de`GetDocumentAnalysis`. Para obter mais informações e um exemplo, consulte [Detectando ou analisando texto em um documento de várias páginas](async-analyzing-with-sqs.md). 

Para especificar qual tipo de análise executar, você pode usar o`FeatureTypes`parâmetro de entrada de lista. Adicione TABLES à lista para retornar informações sobre as tabelas detectadas no documento de entrada — por exemplo, células de tabela, texto de célula e elementos de seleção nas células. Adicione FORMS para retornar relacionamentos de palavras, como pares de chave-valor e elementos de seleção. Para executar os dois tipos de análise, adicione TABLES e FORMS ao`FeatureTypes`. 

Todas as linhas e palavras detectadas no documento são incluídas na resposta (incluindo texto não relacionado ao valor de`FeatureTypes`).

# Analisando faturas e recibos
<a name="invoices-receipts"></a>

O Amazon Textract extrai dados relevantes, como informações de contato, itens comprados e nome do fornecedor, de quase qualquer fatura ou recibo sem a necessidade de nenhum modelo ou configuração. As faturas e os recibos costumam usar vários layouts, dificultando e demorado extrair dados manualmente em escala. Amazon Textract usa ML para entender o contexto de faturas e recibos e extrai automaticamente dados, como data de fatura ou recebimento, número da fatura ou do recibo, preços do item, valor total e condições de pagamento para atender às necessidades da sua empresa.

Amazon Textract também identifica nomes de fornecedores que são críticos para seus fluxos de trabalho, mas podem não ser identificados explicitamente. Por exemplo, o Amazon Textract pode encontrar o nome do fornecedor em um recibo, mesmo que ele seja indicado apenas dentro de um logotipo na parte superior da página sem uma combinação explícita de pares de valores-chave. O Amazon Textract também facilita a consolidação de dados de diversos recibos e faturas que usam palavras diferentes para o mesmo conceito. Por exemplo, o Amazon Textract mapeia relacionamentos entre nomes de campo em documentos diferentes, como número do cliente, número do cliente e ID da conta, gerando taxonomia padrão como`INVOICE_RECEIPT_ID`. Nesse caso, o Amazon Textract representa dados de forma consistente em diferentes tipos de documentos. Campos que não se alinham com a taxonomia padrão são categorizados como`OTHER`. 

A seguir há uma lista dos campos padrão que o AnalyzeExpense suporta atualmente:
+ Nome do fornecedor:`VENDOR_NAME`
+ Total:`TOTAL`
+ Endereço do receptor:`RECEIVER_ADDRESS`
+ Data de fatura/recebimento:`INVOICE_RECEIPT_DATE`
+ ID de fatura/recibo:`INVOICE_RECEIPT_ID`
+ Termos de pagamento:`PAYMENT_TERMS`
+ Subtotal:`SUBTOTAL`
+ Data de vencimento:`DUE_DATE`
+ Imposto:`TAX`
+ ID do pagador do imposto da fatura (SSN/ITIN ou EIN):`TAX_PAYER_ID`
+ Nome do item:`ITEM_NAME`
+ Preço do item:`PRICE`
+ Quantidade do item:`QUANTITY`

A API AnalyzeExpense retorna os seguintes elementos para uma determinada página de documento:
+ O número de recebimentos ou faturas em uma página representada como`ExpenseIndex`
+ O nome padronizado para campos individuais representados como`Type`
+ O nome real do campo como exibido no documento, representado como`LabelDetection`
+ O valor do campo correspondente representado como`ValueDetection`
+ O número de páginas dentro do documento enviado representado como`Pages`
+ O número da página em que o campo, o valor ou os itens de linha foram detectados, representado como`PageNumber`
+ A geometria, que inclui a caixa delimitadora e a localização das coordenadas dos itens de campo, valor ou linha individuais na página, representados como`Geometry`
+ A pontuação de confiança associada a cada pedaço de dados detectado no documento, representado como`Confidence`
+ A linha inteira de itens de linha individuais comprados, representada como`EXPENSE_ROW`

Veja a seguir uma parte da saída da API para um recebimento processado pelo AnalyzeExpense que mostra o Total: US\$155,64 no campo documento extraído como padrão`TOTAL`, texto real no documento como “Total”, Pontuação de Confiança de “97,1”, Número da Página “1”, O valor total como “\$155,64" e a caixa delimitadora e as coordenadas do 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
}
```

Você pode usar operações síncronas para analisar uma fatura ou um recibo. Para analisar esses documentos, você usa a operação AnalyzeExpense e passa um recibo ou fatura para ela.`AnalyzeExpense`retorna todo o conjunto de resultados. Para obter mais informações, consulte [Analisando faturas e recibos com o Amazon Textract](analyzing-document-expense.md).

Para analisar faturas e recebimentos de forma assíncrona, use[StartExpenseAnalysis](API_StartExpenseAnalysis.md)para começar a processar um arquivo de documento de entrada. Para obter resultados, ligue para[GetExpenseAnalysis](API_GetExpenseAnalysis.md). Os resultados de uma determinada chamada para[StartExpenseAnalysis](API_StartExpenseAnalysis.md)são retornados por`GetExpenseAnalysis`. Para obter mais informações e um exemplo, consulte [Processando documentos com operações assíncronas](async.md). 

# Analisar documentos de identidade
<a name="how-it-works-identity"></a>

 Amazon Textract pode extrair informações relevantes de passaportes, carteiras de motorista e outras documentações de identidade emitidas pelo governo dos EUA usando a API AnalyzeID. Com o Analyze ID, as empresas podem extrair informações de IDs com rapidez e precisão, como carteiras de motorista dos EUA, IDs estaduais e passaportes com modelo ou formato diferente. A API AnalyzeID retorna duas categorias de tipos de dados: 
+  Pares de valores-chave disponíveis em ID, como Data de nascimento, Data de emissão, número de ID, Classe e Restrições. 
+  Campos implícitos no documento que podem não ter chaves explícitas associadas a eles, como Nome, Endereço e Emitido por. 

Os nomes das chaves são padronizados dentro da resposta. Por exemplo, se sua carteira de motorista diz LIC\$1 (número da licença) e passaporte diz Passaporte Não, a resposta do Analyze ID retornará a chave padronizada como “ID do documento” junto com a chave bruta (por exemplo, LIC\$1). Essa padronização permite que os clientes combinem facilmente informações em muitas IDs que usam termos diferentes para o mesmo conceito.

![\[Texto descritivo aqui: Uma carteira de motorista simulada do estado de Massachusetts. O nome do indivíduo que possui a licença é Maria Garcia. O campo ISS tem um valor de 18/03/2018. O campo Number tem um valor de 736HDV7874JSB. O campo EXP tem um valor de 20/01/2028. O campo DOB tem um valor de 18/03/2001. O campo CLASS tem um valor D. O campo REST é NONE. O campo END é NONE. O endereço no ID é 100 Market Street, Bigtown, MA, 02801. O campo EYES é BLK, o campo SEX é F, o campo HGT é 4-6", o campo DD é 03/12/2019 e o campo REV é 03/12/2017.\]](http://docs.aws.amazon.com/pt_br/textract/latest/dg/images/textract-id-sample-1.png)


 Analisar ID retorna informações nas estruturas chamadas`IdentityDocumentFields`. Estes são`JSON`estruturas contendo duas informações: o Tipo normalizado e o Valor associado ao Tipo. Ambos também têm uma pontuação de confiança. Para obter mais informações, consulte [Objetos de resposta da documentação](identitydocumentfields.md). 

 Você pode usar operações síncronas para analisar uma carteira de motorista ou passaporte. Para analisar esses documentos, você usa a operação AnalyzeID e passa um documento de identidade para ela.`AnalyzeID`retorna todo o conjunto de resultados. Para obter mais informações, consulte [Analisando a documentação de identidade com o Amazon Textract](analyzing-document-identity.md). 

**nota**  
 Alguns documentos de identidade, como carteiras de motorista, têm dois lados. Você pode passar as imagens de frente e verso das carteiras de driver como imagens separadas dentro da mesma solicitação da API Analyze ID. 

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

Uma entrada adequada para uma operação Amazon Textract é um documento de uma ou várias páginas. Alguns exemplos são um documento legal, um formulário, um ID ou uma carta. Um formulário é um documento com perguntas ou solicitações para que um usuário forneça respostas. Alguns exemplos são um formulário de registro de paciente, um formulário fiscal ou um formulário de reivindicação de seguro. 

Um documento pode estar no formato JPEG, PNG, PDF ou TIFF. Com arquivos em formato PDF e TIFF, você pode processar documentos de várias páginas. Para obter informações sobre como Amazon Textract representa documentos como`Block`objetos, consulte[Objetos de resposta de detecção de texto e análise de](how-it-works-document-layout.md).

A seguir há um exemplo de documento de entrada aceitável.

![\[Imagem de um pedaço de papel branco com um cabeçalho Solicitação de emprego. A próxima linha diz Informações do aplicativo, o próximo Nome completo: Jane Doe, o próximo número de telefone: 555-0100, o próximo endereço residencial: 123 Any Street, AnyTown USA, o próximo endereço de correspondência: o mesmo que acima. Abaixo está uma tabela intitulada Histórico de Emprego Anterior. Tem cinco colunas e quatro linhas. Os títulos das colunas são Data de início, Data de término, Nome do empregador, Posição mantida e Motivo para sair. A próxima linha lista 15/1/2009, 30/06/2011, Qualquer Empresa, Assistente padeiro e realocado. O próximo 7/1/2011, 8/10/2013, Exemplo Corp. Baker, melhor opp. O próximo 8/15/2013, Present, AnyCompany, head baker e N/A, atual.\]](http://docs.aws.amazon.com/pt_br/textract/latest/dg/images/Handwriting%20Sample%203.png)


Para obter informações sobre os limites de documentos, consulte[Limites rígidos no Amazon Textract](limits.md).

Para operações síncronas do Amazon Textract, você pode usar documentos de entrada armazenados em um bucket do Amazon S3 ou passar bytes de imagem codificados em base64. Para obter mais informações, consulte [Chamando operações síncronas do Amazon Textract](sync-calling.md). Para operações assíncronas, você precisa fornecer documentos de entrada em um bucket do Amazon S3. Para obter mais informações, consulte [Chamando operações assíncronas do Amazon Textract](api-async.md). 

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

As operações do Amazon Textract retornam diferentes tipos de objetos, dependendo da execução das operações. Para detectar texto e analisar um documento genérico, a operação retorna um objeto Block. Para analisar uma fatura ou recebimento, a operação retorna um objeto ExpenseDocuments. Para analisar a documentação de identidade, a operação retorna um objeto IdentityDocumentFields. Para obter mais informações sobre esses objetos de resposta, consulte as seguintes seções:

**Topics**
+ [

# Objetos de resposta de detecção de texto e análise de
](how-it-works-document-layout.md)
+ [

# Objetos de resposta de fatura e recebimento
](expensedocuments.md)
+ [

# Objetos de resposta da documentação
](identitydocumentfields.md)

# Objetos de resposta de detecção de texto e análise de
<a name="how-it-works-document-layout"></a>

Quando o Amazon Textract processa um documento, ele cria uma lista de[Block](API_Block.md)objetos para o texto detectado ou analisado. Cada bloco contém informações sobre um item detectado, onde ele está localizado e a confiança que o Amazon Textract tem na precisão do processamento.

Um documento é composto pelos seguintes tipos de`Block`objects.
+ [Páginas](how-it-works-pages.md)
+  [Linhas e palavras de texto](how-it-works-lines-words.md) 
+  [Dados do formulário (pares de valores-chave)](how-it-works-kvp.md) 
+  [Tabelas e células](how-it-works-tables.md) 
+ [Elementos de seleção](how-it-works-selectables.md)

O conteúdo de um bloco depende da operação que você chama. Se você chamar uma das operações de detecção de texto, as páginas, as linhas e as palavras do texto detectado serão retornadas. Para obter mais informações, consulte [Detectar texto](how-it-works-detecting.md). Se você chamar uma das operações de análise de documentos, informações sobre páginas detectadas, pares de valores-chave, tabelas, elementos de seleção e texto serão retornadas. Para obter mais informações, consulte [Analisar documentos](how-it-works-analyzing.md).

Alguns`Block`Os campos de objeto são comuns a ambos os tipos de processamento. Por exemplo, cada bloco tem um identificador exclusivo.

Para obter exemplos que mostram como usar`Block`objetos, consulte[Tutoriais](examples-blocks.md).

## Layout do documento
<a name="hows-it-works-blocks-types.title"></a>

Amazon Textract retorna uma representação de um documento como uma lista de diferentes tipos de`Block`objetos que estão vinculados em um relacionamento pai-filho ou em um par de valores-chave. Metadados que fornecem o número de páginas em um documento também são retornados. A seguir está a JSON para um típico`Block`objeto do 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
    }
}
```

Um documento é feito de um ou mais`PAGE`Blocos. Cada página contém uma lista de blocos filhos para os itens primários detectados na página, como linhas de texto e tabelas. Para obter mais informações, consulte [Páginas](how-it-works-pages.md). 

Você pode determinar o tipo de um`Block`objeto inspecionando o`BlockType`campo.

UMA`Block`Object contém uma lista de relacionados`Block`Objetos no`Relationships`campo, que é uma matriz de[Relationship](API_Relationship.md)objects. UMA`Relationships`array é do tipo CHILD ou do tipo VALUE. Uma matriz do tipo CHILD é usada para listar os itens que são filhos do bloco atual. Por exemplo, se o bloco atual for do tipo LINE,`Relationships`contém uma lista de IDs para os blocos WORD que compõem a linha de texto. Uma matriz do tipo VALUE é usada para conter pares chave-valor. Você pode determinar o tipo de relacionamento inspecionando o`Type`campo do`Relationship`objeto. 

Blocos filhos não têm informações sobre seus objetos Bloco pai.

Para exemplos que mostram`Block`Informações, consulte[Processando documentos com operações síncronas](sync.md).

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

As operações do Amazon Textract retornam a confiança percentual que o Amazon Textract tem sobre a precisão do item detectado. Para obter a confiança, use o`Confidence`campo do`Block`objeto. Um valor mais alto indica uma confiança mais alta. Dependendo do cenário, detecções com baixa confiança podem precisar de confirmação visual por um humano.

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

As operações Amazon Textract, com exceção da análise de identidade, retornam informações de localização sobre a localização dos itens detectados em uma página de documento. Para obter a localização, use o`Geometry`campo do`Block`objeto. Para obter mais informações, consulte[Localização do item em uma página de documento](text-location.md) 

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

Um documento consiste em uma ou mais páginas. UMA[Block](API_Block.md)objeto do tipo`PAGE`existe para cada página do documento. UMA`PAGE`objeto de bloco contém uma lista das IDs filho para as linhas de texto, pares de valores-chave e tabelas detectadas na página do documento. 

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


O JSON para um`PAGE`O bloco será semelhante à seguinte.

```
{

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

Se você estiver usando operações assíncronas com um documento de várias páginas em formato PDF, você pode determinar a página em que um bloco está localizado inspecionando o`Page`campo do`Block`objeto. Uma imagem digitalizada (uma imagem em formato JPEG, PNG, PDF ou TIFF) é considerada um documento de página única, mesmo se houver mais de uma página de documento na imagem. Operações assíncronas sempre retornam um`Page`valor de 1 para imagens digitalizadas.

O número total de páginas é retornado no`Pages`campo de`DocumentMetadata`.`DocumentMetadata`é retornado com cada lista de`Block`objetos retornados por uma operação do Amazon Textract.

# Linhas e palavras de texto
<a name="how-it-works-lines-words"></a>

O texto detectado retornado pelas operações Amazon Textract é retornado em uma lista de[Block](API_Block.md)objects. Esses objetos representam linhas de texto ou palavras textuais detectadas em uma página de documento. O texto a seguir mostra duas linhas de texto que são feitas de várias palavras.

Isso é texto.

Em duas linhas separadas.

O texto detectado é retornado na`Text`campo de um`Block`objeto. O`BlockType`campo determina se o texto é uma linha de texto (LINE) ou uma palavra (WORD). UMA*PALAVRA*Um ou mais caracteres latinos ISO básicos não separados por espaços. UMA*LINHA*é uma série de palavras delimitadas por tabulação e contíguas.

 Além disso, o Amazon Textract determinará se um pedaço de texto foi escrito à mão ou impresso usando o`TextTypes`campo. Eles retornam como MANUSCRITA E IMPRESSA, respectivamente. 

O outro`Block`as propriedades são comuns a todos os tipos de blocos, como informações de ID, confiança e geometria. Para obter mais informações, consulte [Objetos de resposta de detecção de texto e análise de](how-it-works-document-layout.md). 

Para detectar apenas linhas e palavras, você pode usar[DetectDocumentText](API_DetectDocumentText.md)ou[StartDocumentTextDetection](API_StartDocumentTextDetection.md). Para obter mais informações, consulte [Detectar texto](how-it-works-detecting.md). Para obter o texto detectado (linhas e palavras) e informações sobre como ele se relaciona com outras partes do documento, como tabelas, você pode usar[AnalyzeDocument](API_AnalyzeDocument.md)ou[StartDocumentAnalysis](API_StartDocumentAnalysis.md). Para obter mais informações, consulte [Analisar documentos](how-it-works-analyzing.md).

`PAGE`,`LINE`, e`WORD`blocos estão relacionados entre si em um relacionamento pai-filho. UMA`PAGE`block é o pai de todos`LINE`blocos de objetos em uma página de documento. Como um LINE pode ter uma ou mais palavras, a`Relationships`array para um bloco LINE armazena as IDs para blocos WORD filhos que compõem a linha de texto. 

O diagrama a seguir mostra como a linha*Olá, mundo.*no texto*Olá, mundo. Como você está?*é representado por`Block`objects. 

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




A seguir está a saída JSON de`DetectDocumentText`quando a frase*Olá, mundo. Como você está?*é detectado. O primeiro exemplo é o JSON para a página do documento. Observe como as IDs CHILD permitem que você navegue pelo 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"
},
```

Veja a seguir o JSON para os blocos LINE que compõem a linha “Hello, World”: 

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

Veja a seguir o JSON para o bloco WORD para a palavra*Olá,*: 

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

O JSON final é o bloco WORD para a palavra*mundo.*:

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

# Dados do formulário (pares de chave-valor)
<a name="how-it-works-kvp"></a>

Amazon Textract pode extrair dados de formulário de documentos como pares de chave-valor. Por exemplo, no texto a seguir, o Amazon Textract pode identificar uma chave (*Name (Nome):*) e um valor (*Ana Carolina*).

Name (Nome): Ana Carolina

Os pares de chave-valor são retornados como[Block](API_Block.md)objetos nas respostas de[AnalyzeDocument](API_AnalyzeDocument.md)e[GetDocumentAnalysis](API_GetDocumentAnalysis.md). Você pode usar o`FeatureTypes`parâmetro de entrada para recuperar informações sobre pares de valores-chave, tabelas ou ambos. Apenas para pares de chave-valor, use o valor`FORMS`. Para ver um exemplo, consulte [Extraindo pares de valores-chave de um documento de formulário](examples-extract-kvp.md). Para obter informações gerais sobre como um documento é representado por`Block`objetos, consulte[Objetos de resposta de detecção de texto e análise de](how-it-works-document-layout.md). 

Objetos de bloco com o tipo KEY\$1VALUE\$1SET são os contêineres para objetos KEY ou VALUE Block que armazenam informações sobre itens de texto vinculados detectados em um documento. Você pode usar o`EntityType`atributo para determinar se um bloco é KEY ou VALUE. 
+ UMA*CHAVE*O objeto contém informações sobre a chave do texto vinculado. Por exemplo,*Name (Nome):*. Um bloco KEY tem duas listas de relacionamento. Um relacionamento do tipo VALUE é uma lista que contém o ID do bloco VALUE associado à chave. Um relacionamento do tipo CHILD é uma lista de IDs para os blocos WORD que compõem o texto da chave.
+ UMA*VALOR*O objeto contém informações sobre o texto associado a uma chave. No exemplo anterior,*Ana Carolina*é o valor da chave*Name (Nome):*. Um bloco VALUE tem um relacionamento com uma lista de blocos CHILD que identificam blocos WORD. Cada bloco WORD contém uma das palavras que compõem o texto do valor. UMA`VALUE`Objetos também podem conter informações sobre elementos selecionados. Para obter mais informações, consulte [Elementos de seleção](how-it-works-selectables.md).

Cada instância de um KEY\$1VALUE\$1SET`Block`O objeto é um filho do PAGE`Block`objeto que corresponde à página atual.

O diagrama a seguir mostra como o par de chave-valor*Name (Nome): Ana Carolina*é representado por`Block`objects.

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


Os exemplos a seguir mostram como o par de chave-valor*Name (Nome): Ana Carolina*é representado por JSON.

O bloco PAGE tem blocos CHILD do tipo`KEY_VALUE_SET`para cada bloco KEY e VALUE detectado no 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
},
```

O JSON a seguir mostra que o bloco KEY (52be1777-53f7-42f6-a7cf-6d09bdc15a30) tem uma relação com o bloco VALUE (7ca7caa6-00ef-4cda-b1aa-5571dfed1a7c). Ele também tem um bloco CHILD para o bloco WORD (c734fca6-c4c4-415c-b6c1-30f7510b72ee) que contém o texto da chave (*Name (Nome):*).

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

O JSON a seguir mostra que o bloco VALUE 7ca7caa6-00ef-4cda-b1aa-5571dfed1a7c tem uma lista CHILD de IDs para os blocos WORD que compõem o texto do valor (*Ana*e*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
}
```

O JSON a seguir mostra o`Block`objetos para as palavras*Name (Nome):*,*Ana*, e*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"
},
```

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

Amazon Textract pode extrair tabelas e as células em uma tabela. Por exemplo, quando a tabela a seguir é detectada em um formulário, o Amazon Textract detecta uma tabela com quatro células. 


| Name (Nome) | Endereço | 
| --- | --- | 
|  Ana Carolina  |  123 Any Town  | 

As tabelas detectadas são retornadas como[Block](API_Block.md)objetos nas respostas de[AnalyzeDocument](API_AnalyzeDocument.md)e[GetDocumentAnalysis](API_GetDocumentAnalysis.md). Você pode usar o`FeatureTypes`parâmetro de entrada para recuperar informações sobre pares de valores-chave, tabelas ou ambos. Somente para tabelas, use o valor`TABLES`. Para ver um exemplo, consulte [Exportando tabelas para um arquivo CSV](examples-export-table-csv.md). Para obter informações gerais sobre como um documento é representado por`Block`objetos, consulte[Objetos de resposta de detecção de texto e análise de](how-it-works-document-layout.md).

O diagrama a seguir mostra como uma única célula em uma tabela é representada por`Block`objects.

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


Uma célula contém`WORD`blocos para palavras detectadas e`SELECTION_ELEMENT`blocos para elementos de seleção, como caixas de seleção. 

O seguinte é JSON parcial para a tabela anterior, que tem quatro células.

O objeto PAGE Block tem uma lista de IDs de bloco FILHO para o bloco TABLE e cada LINHA 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"
},
```

O bloco TABLE inclui uma lista de IDs filhos para as células dentro da tabela. Um bloco TABLE também inclui informações de geometria para a localização da tabela no documento. O JSON a seguir mostra que a tabela tem quatro células, que estão listadas na`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"
},
```

O tipo de bloco para as células da tabela é CELL. O`Block`objeto para cada célula inclui informações sobre a localização da célula em comparação com outras células na tabela. Ele também inclui informações de geometria para a localização da célula no documento. No exemplo anterior,`505e9581-0d1c-42fb-a214-6ff736822e8c`é o ID filho da célula que contém a palavra*Name (Nome)*. O exemplo a seguir são as informações para a célula. 

```
{
    "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 célula tem uma localização em uma tabela, com a primeira célula sendo 1,1. No exemplo anterior, a célula com o valor*Name (Nome)*está na linha 1, coluna 1. A célula com o valor*123 Any Town*está na linha 2, coluna 2. Um objeto de bloco de células contém essas informações na`RowIndex`e`ColumnIndex`campos. A lista filho contém os IDs dos objetos do bloco WORD que contêm o texto que está dentro da célula. As palavras na lista estão na ordem em que são detectadas, do canto superior esquerdo da célula para o canto inferior direito da célula. No exemplo anterior, a célula tem um ID filho com o valor e9108c8e-0167-4482-989e-8b6cd3c3653e. A seguinte saída é para o Bloco WORD com o valor ID de e9108c8e-0167-4482-989e-8b6cd3c3653e: 

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

# Elementos de seleção
<a name="how-it-works-selectables"></a>

Amazon Textract pode detectar elementos de seleção, como botões de opção (botões de opção) e caixas de seleção em uma página de documento. Elementos de seleção podem ser detectados em[Dados do formulário](how-it-works-kvp.md)e em[tabelas](how-it-works-tables.md). Por exemplo, quando a tabela a seguir é detectada em um formulário, o Amazon Textract detecta as caixas de seleção nas células da tabela.


|  |  |  |  | 
| --- |--- |--- |--- |
|     |  **Concordo**  |  **Neutral**  |  **Discordo**  | 
|  **Bom serviço**  |  ☑  |  ☐  |  ☐  | 
|  **Fácil de usar**  |  ☐  |  ☑  |  ☐  | 
|  **Preço justo**  |  ☑  |  ☐  |  ☐  | 

Os elementos de seleção detectados são devolvidos como[Block](API_Block.md)objetos nas respostas de[AnalyzeDocument](API_AnalyzeDocument.md)e[GetDocumentAnalysis](API_GetDocumentAnalysis.md).

**nota**  
Você pode usar o`FeatureTypes`parâmetro de entrada para recuperar informações sobre pares de valores-chave, tabelas ou ambos. Por exemplo, se você filtrar em tabelas, a resposta incluirá os elementos de seleção detectados nas tabelas. Elementos de seleção detectados em pares de valores-chave não estão incluídos na resposta.

As informações sobre um elemento de seleção estão contidas em um`Block`objeto do tipo`SELECTION_ELEMENT`. Para determinar o status de um elemento selecionável, use a`SelectionStatus`campo do`SELECTION_ELEMENT`bloco. O status pode ser*SELECIONADO*ou*NOT\$1SELECTED*. Por exemplo, o valor de`SelectionStatus`para a imagem anterior é*SELECIONADO*.

UMA`SELECTION_ELEMENT` `Block`objeto está associado a um par de valores-chave ou a uma célula de tabela. UMA`SELECTION_ELEMENT` `Block`objeto contém informações da caixa delimitadora para um elemento de seleção na`Geometry`campo. UMA`SELECTION_ELEMENT` `Block`objeto não é filho de um`PAGE` `Block`objeto.

## Dados do formulário (pares de chave-valor)
<a name="how-it-works-selectable-kvp"></a>

Um par de valores-chave é usado para representar um elemento de seleção detectado em um formulário. O`KEY`bloco contém o texto para o elemento de seleção. O`VALUE`bloco contém o bloco SELECTION\$1ELEMENT. O diagrama a seguir mostra como os elementos de seleção são representados por[Block](API_Block.md)objects.

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


Para obter mais informações sobre pares de chave-valor, consulte[Dados do formulário (pares de chave-valor)](how-it-works-kvp.md).

O trecho JSON a seguir mostra a chave para um par de valores-chave que contém um elemento de seleção (**male ☑**). O ID filho (Id bd14cfd5-9005-498b-a7f3-45ceb171f0ff) é o ID do bloco WORD que contém o texto para o elemento de seleção (*macho*). O valor ID (Id 24aaac7f-fcce-49c7-a4f0-3688b05586d4) é o ID do`VALUE`bloco que contém o`SELECTION_ELEMENT`objeto de bloco.

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

O trecho JSON a seguir é o bloco WORD para a palavra*Masculino*. O bloco WORD também tem um bloco LINE pai.

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

O bloco VALUE tem um filho (Id f2f5e8cd-e73a-4e99-a095-053acd3b6bfb) que é o bloco 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"
}, 
}
```

O JSON a seguir é o bloco SELECTION\$1ELEMENT. O valor de`SelectionStatus`Indica que a caixa de seleção está marcada.

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

## Células do
<a name="how-it-works-selectable-table"></a>

Amazon Textract pode detectar elementos de seleção dentro de uma célula de tabela. Por exemplo, as células na tabela a seguir têm caixas de seleção.


|  |  |  |  | 
| --- |--- |--- |--- |
|     |  **Concordo**  |  **Neutral**  |  **Discordo**  | 
|  **Bom serviço**  |  ☑  |  ☐  |  ☐  | 
|  **Fácil de usar**  |  ☐  |  ☑  |  ☐  | 
|  **Preço justo**  |  ☑  |  ☐  |  ☐  | 

UMA`CELL`bloco pode conter filho`SELECTION_ELEMENT`objetos para elementos de seleção, bem como filho`WORD`blocos para texto detectado.

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


Para obter mais informações sobre tabelas, consulte[Tabelas](how-it-works-tables.md).

O TABLE`Block`objeto para a tabela anterior é semelhante 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"
}
```

O CELL`BLOCK`objeto (Id c63ad40d-5a14-4646-a8df-2d4304213dbc) para a célula que contém a caixa de seleção*Bom serviço*Parece o seguinte. Inclui uma criança`Block`(Id = 26d122fd-c5f4-4b53-92c4-0ae92730ee1e) que é o`SELECTION_ELEMENT` `Block`Objeto da caixa de seleção.

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

O SELECTION\$1ELEMENT`Block`objeto para a caixa de seleção é o seguinte. O valor de`SelectionStatus`Indica que a caixa de seleção está marcada.

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

# Objetos de resposta de fatura e recebimento
<a name="expensedocuments"></a>

Quando você envia uma fatura ou um recibo para a API AnalyzeExpense, ela retorna uma série de objetos ExpenseDocuments. Cada documento de despesa é ainda separado em`LineItemGroups`e`SummaryFields`. A maioria das faturas e recibos contém informações como o nome do fornecedor, o número do recebimento, a data do recebimento ou o valor total. AnalyzeExpense retorna essas informações em`SummaryFields`. Recibos e faturas também contêm detalhes sobre os itens comprados. A API AnalyzeExpense retorna essas informações em`LineItemGroups`. O`ExpenseIndex`campo identifica exclusivamente a despesa e associa o apropriado`SummaryFields`e`LineItemGroups`detectado nessa despesa.

O nível mais granular de dados na resposta AnalyzeExpense consiste em`Type`,`ValueDetection`, e`LabelDetection`(Optional). As entidades individuais são:
+ [Type](how-it-works-type.md): Refere-se a que tipo de informação é detectada em um nível alto.
+ [Detecção de etiquetas](how-it-works-labeldetection.md): Refere-se ao rótulo de um valor associado dentro do texto do documento.`LabelDetection`é opcional e retornado somente se o rótulo for escrito.
+ [ValueDetecção](how-it-works-valuedetection.md): Refere-se ao valor do rótulo ou tipo retornado.

A API AnalyzeExpense também detecta`ITEM`,`QUANTITY`, e`PRICE`dentro de itens de linha como campos normalizados. Se houver outro texto em um item de linha na imagem do recibo, como SKU ou descrição detalhada, ele será incluído no JSON como`EXPENSE_ROW`como mostrado no exemplo abaixo:

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

O exemplo acima mostra como a API AnalyzeExpense retorna a linha inteira em um recibo que contém informações de item de linha sobre 5 bananas vendidas por US\$12,5. 

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

A seguir há um exemplo do tipo padrão ou normalizado do par de chave-valor:

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

O recibo não tinha “Nome do fornecedor” listado explicitamente. No entanto, a API Analyze Despense reconheceu o documento como um recibo e categorizou o valor “AMAZON” como Tipo`VENDOR_NAME`. 

# Detecção de etiquetas
<a name="how-it-works-labeldetection"></a>

Veja a seguir um exemplo de texto, conforme mostrado em uma página de documento do cliente:

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

O documento de exemplo continha “CAIXA Mina”. A API Analyze Expense extraiu o valor como está e o retorna em`LabelDetection`. Para valores implícitos, como “Nome do fornecedor”, onde a “chave” não é mostrada explicitamente no recibo,`LabelDetection`não será incluído no elemento AnalyzeExpense. Nesses casos, a API AnalyzeExpense não retorna`LabelDetection`. 

# ValueDetecção
<a name="how-it-works-valuedetection"></a>

A seguir há um exemplo que mostra o “valor” do par chave-valor.

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

No exemplo, o documento continha “CAIXA Mina”. A API AnalyzeExpense detectou o valor do Caixa como Mina e o retornou em`ValueDetection`. 

# Objetos de resposta da documentação
<a name="identitydocumentfields"></a>

 Quando você envia um documento de identidade para a API AnalyzeID, ele retorna uma série de`IdentityDocumentField`objects. Cada um desses objetos contém`Type`, e`Value`.`Type`registra o campo normalizado que o Amazon Textract detecta e`Value`registra o texto associado ao campo normalizado. 

 Abaixo está um exemplo de um`IdentityDocumentField`, encurtado por brevidade. 

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

 Esses são dois exemplos de IdentityDocumentFields cortados de uma resposta mais longa. Há uma separação entre o tipo detectado e o valor desse tipo. Aqui, é o nome e sobrenome, respectivamente. Essa estrutura se repete com todas as informações contidas. Se um tipo não for reconhecido como um campo normalizado, ele será listado como “outro”. 

Veja a seguir uma lista de campos normalizados para Carteiras de Motorista:
+  Nome 
+  sobrenome 
+  Nome do meio 
+  sufixo 
+  city in address 
+  CEP no endereço 
+  estado no endereço 
+  Condado 
+  número do documento 
+  Data de validade 
+  Data de nascimento 
+  Nome do estado 
+  Data de emissão 
+  classe 
+  restrições 
+  endossos 
+  ID do tipo 
+  veterano 
+  address 

Veja a seguir uma lista de campos normalizados para passaportes dos EUA:
+  Nome 
+  sobrenome 
+  Nome do meio 
+  número do documento 
+  Data de validade 
+  Data de nascimento 
+ local de nascimento
+  Data de emissão 
+  ID do tipo 

# Localização do item em uma página de documento
<a name="text-location"></a>

As operações do Amazon Textract retornam a localização e a geometria dos itens encontrados em uma página de documento.[DetectDocumentText](API_DetectDocumentText.md)e[GetDocumentTextDetection](API_GetDocumentTextDetection.md)retorna a localização e a geometria para linhas e palavras, enquanto[AnalyzeDocument](API_AnalyzeDocument.md)e[GetDocumentAnalysis](API_GetDocumentAnalysis.md)Retorna a localização e a geometria de pares de chave-valor, tabelas, células e elementos de seleção.

Para determinar onde um item está em uma página de documento, use a caixa delimitadora ([Geometry](API_Geometry.md)) informações retornadas pela operação do Amazon Textract em um[Block](API_Block.md)objeto. O`Geometry`O objeto contém dois tipos de localização e informações geométricas para os itens detectados:
+ Um eixo alinhado[BoundingBox](API_BoundingBox.md)O objeto que contém a coordenada superior esquerda e a largura e a altura do item.
+ Um objeto polígono que descreve o contorno do item, especificado como uma matriz de[Point](API_Point.md)objetos que contêm`X`(eixo horizontal) e`Y`(eixo vertical) coordenadas da página do documento de cada ponto.

O JSON para um`Block`O objeto será semelhante à seguinte. Observe o`BoundingBox`e`Polygon`campos.

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

Você pode usar informações de geometria para desenhar caixas delimitadoras em torno de itens detectados. Para um exemplo que usa`BoundingBox`e`Polygon`informações para desenhar caixas em torno de linhas e linhas verticais no início e no final de cada palavra, consulte[Detectando texto do documento com o Amazon Textract](detecting-document-text.md). A saída de exemplo é semelhante à seguinte.

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


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

Uma caixa delimitadora (`BoundingBox`) tem as seguintes propriedades:
+ Altura — Altura a altura da caixa delimitadora como uma proporção da altura total da página do documento.
+ Esquerda — A coordenada X do ponto superior esquerdo da caixa delimitadora como uma proporção da largura total da página do documento.
+ Superior — A coordenada Y do ponto superior esquerdo da caixa delimitadora como uma proporção da altura total da página do documento.
+ Largura — a largura da caixa delimitadora como uma proporção da largura total da página do documento.

Cada propriedade BoundingBox tem um valor entre 0 e 1. O valor é uma proporção da largura total da imagem (aplica-se a`Left`e`Width`) ou altura (aplica-se a`Height`e`Top`). Por exemplo, se a imagem de entrada tiver 700 x 200 pixels e a coordenada superior esquerda da caixa delimitadora tiver (350,50) pixels, a API retornará um`Left`valor de 0,5 (350/700) e um`Top`valor de 0,25 (50/200). 

O diagrama a seguir mostra o intervalo de uma página de documento que cada propriedade BoundingBox abrange.

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


Para exibir a caixa delimitadora com o local e o tamanho corretos, você precisa multiplicar os valores da BoundingBox pela largura ou altura da página do documento (dependendo do valor que deseja) para obter os valores de pixels. Você pode usar os valores de pixel para exibir a caixa delimitadora. Um exemplo é usar uma página de documento de 608 pixels de largura x 588 pixels de altura e os seguintes valores de caixa delimitadora para texto analisado: 

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

A localização da caixa delimitadora de texto em pixels é calculada da seguinte forma: 

`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`

Você pode usar esses valores para exibir uma caixa delimitadora em torno do texto analisado. Os exemplos de Java e Python a seguir demonstram como exibir uma caixa delimitadora.

------
#### [ 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 ]

Este exemplo em Python leva na`response`retornado pelo[DetectDocumentText](API_DetectDocumentText.md)Operação da 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)
```

------

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

O polígono retornado por`AnalyzeDocument`é uma matriz de[Point](API_Point.md)objects. EACH`Point`tem uma coordenada X e Y para um local específico na página do documento. Como as coordenadas BoundingBox, as coordenadas do polígono são normalizadas para a largura e a altura do documento, e estão entre 0 e 1. 

Você pode usar pontos na matriz de polígonos para exibir uma caixa delimitadora de grãos mais finos em torno de um`Block`objeto. Você calcula a posição de cada ponto de polígono na página do documento usando a mesma técnica usada para`BoundingBoxes`. Multiplique a coordenada X pela largura da página do documento e multiplique a coordenada Y pela altura da página do documento.

O exemplo a seguir mostra como exibir as linhas verticais de um 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));

    }
```