View a markdown version of this page

Tabelas - Amazon Textract

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á.

Tabelas

Use o Amazon Textract para extrair tabelas em um documento e extrair células, células mescladas, cabeçalhos de colunas, títulos, títulos de seções, rodapés, tipo de tabela (estruturada ou semiestruturada) e células de resumo em uma tabela.

As tabelas detectadas são retornadas como objetos de bloco nas respostas de AnalyzeDocumentGetDocumentAnalysise. Você pode usar o parâmetro FeatureTypes de entrada para recuperar informações sobre pares de valores-chave, tabelas ou ambos. Somente para tabelas, use o valorTABLES. Para ver um exemplo, consulte Exportação de tabelas para um arquivo CSV. Para obter informações gerais sobre como um documento é representado por Block objetos, consulteObjetos de resposta para detecção de texto e análise de documentos.

Veja a seguir um exemplo de uma tabela que pode ser detectada pelo Amazon Textract.

Tabela de balanço mostrando transações de 2022-12-24 a 2023-01-15, com saldo inicial de $11.000, créditos de $1.040, débitos de $1.040 e saldo final de $11.000 em 2023-01-20.

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

Diagrama que descreve a estrutura de uma tabela com células, incluindo uma célula mesclada abrangendo 5 colunas para o título da tabela. A tabela inclui componentes aninhados, como páginas, células, palavras e uma célula de título mesclada.

Uma célula contém WORD blocos para palavras detectadas e, quando aplicável, TABLE_TITLE blocos para títulos de tabelas, TABLE_FOOTER blocos para rodapés de tabelas e SELECTION_ELEMENT blocos para elementos de seleção, como caixas de seleção.

O seguinte é parte do JSON da tabela anterior. O objeto de PAGE bloco tem uma lista de CHILD IDs LINE de TABLE bloco para o bloco e para cada texto detectado.

{ "BlockType": "PAGE", "Geometry": { "BoundingBox": { "Width": 1.0, "Height": 1.0, "Left": 0.0, "Top": 0.0 }, }, "Id": "8a5d3f57-97bc-4a05-b028-f72617877626", "Relationships": [ { "Type": "CHILD", "Ids": [ "7499ac64-3fa9-46fd-8e3f-581ec9c316eb", "87ed4709-66f2-4b3d-abda-52c92a111474", "27a87eb3-bd21-475e-80fe-3f8e16958dcf", "d89894ea-2f37-4667-94b6-d90def01c5c1", "9f9d6383-ed6d-4bd0-ba8c-71fc3eec704e", "cdc74e1a-c568-439b-9eef-7bd54e060f18", "1b64f24c-5e84-4c7e-851a-cb1f5258a53c", "84a84878-04b4-4608-81b6-38117ead1629", ... "8cef603b-932e-452b-adc4-15f8e02ad1fe", "a3f97508-0d6b-4ae0-aa04-76078f9fe11a", "dd1f23c6-dfad-447b-8105-29ba136bd3a4", "46138f38-5b77-41a9-b068-f8394587122f", "a5e5247c-2637-4fa8-a271-ab46399cd77c", "63d7b889-71e3-422a-8cb7-2103ba0aa276", "033e5c86-371a-46fb-bbea-eb7f6b0cd092", "559b1354-ef94-4cb9-8e03-9eca83c6dba4", "55edc4fa-052f-40f9-9edd-739b100e6f75" ] } ] },

Para saber mais sobre a tabela, acesse o objeto do TABLE bloco. O bloco da tabela inclui quatro tipos de relacionamentos: “Filho”, “Células mescladas”, “Título” e “Rodapé”. Para o tipo de relacionamentoCHILD, cada ID de criança representa uma única célula na tabela. Uma célula mesclada é dividida em todas as células individuais que são combinadas para formar uma célula mesclada. TABLE_TITLEe os tipos de TABLE_FOOTER relacionamento contêm o ID do bloco correspondente TABLE_TITLE e dos TABLE_FOOTER blocos, onde as informações sobre o título e o rodapé são armazenadas. O tipo de bloco EntityType de tabela tem um STRUCTURED_TABLE ou SEMI_STRUCTURED_TABLE que identifica o tipo de tabela.

O JSON a seguir mostra que a tabela anterior tem 65 células para 13 linhas e 5 colunas, listadas na matriz de CHILD relacionamentoIds. Para o tipo de relacionamentoMERGED_CELL, cada ID de célula mesclada representa uma única célula mesclada na tabela. O JSON a seguir mostra que a tabela tem 9 células mescladas, listadas na matriz de MERGED_CELL relacionamentoIds. Os dois tipos de relacionamento adicionais TABLE_TITLE eTABLE_FOOTER, listam as IDs dos respectivos blocos de título e rodapé. O JSON a seguir também mostra que a tabela está estruturada no EntityTypes bloco.

{ "BlockType": "TABLE", "Confidence": 99.8046875, "Geometry": {...}, "Id": "55edc4fa-052f-40f9-9edd-739b100e6f75", "Relationships": [ { "Type": "CHILD", "Ids": [ "c1c03d64-d365-4906-af7a-a852f1acc040", "8b415996-6b05-4183-a959-d27d12ccef79", "48b0e972-7dba-4db7-896e-ca7066e8c761", "69948207-47d8-4825-8929-1d7abb650a88", "b9ac9f14-8899-43b3-8572-0e997180e0a4", "6f06c024-0b36-4acd-b61f-4467203234dd", "c8a88487-dbc7-4662-a69b-21103049b61d", ... "2b41c8e1-f754-4b37-91b6-a97cdc413f91", "365a1bab-0c18-4cd8-a465-6f7bc7e25e60", "f08af959-cfac-4ad6-a63f-2771c7a8ff62", "e4f6fbfd-c7d8-4f64-9102-733d4806850f", "68c0b8ff-fd35-41ce-ba76-de08c26084d7", "44e80372-aa70-4a36-9aac-3a93aaa91bb1" ] }, { "Type": "MERGED_CELL", "Ids": [ "a27a3ecc-afd0-4f7c-9db2-6f8e6d31c605", "6c02cf21-40de-4480-b755-e94462ac4884", "6faad856-8d37-4751-b741-c4ad8d5dcbe3", "d777d6e2-7430-4c6e-a261-03ec5a612c8c", "f0f5a9fb-5bfa-4c80-8f41-1d4fad674b09", "83c7af02-8128-4479-89c9-962544ad4048", "b2b5126c-409f-4b67-9adf-e3e12f60bf86", "87d7f688-3d38-4198-b491-433af0da4d8b", "1c2436e2-a1fc-4b2a-9e73-cc8a1ca67568" ] }, { "Type": "TABLE_TITLE", "Ids": [ "cde34920-0131-4e68-a3ec-82922269afd4" ] }, { "Type": "TABLE_FOOTER", "Ids": [ "11dfd98c-6140-49e8-a544-e220d76bdd2f", "ad1b9c81-3b53-4fc7-a533-dabb3d29b0b1" ] } ], "EntityTypes": [ "STRUCTURED_TABLE" ] },

O tipo de bloco para cada célula da tabela éCELL. O tipo de bloco de células sempre terá extensão de linha de 1 e extensão de coluna de 1. O objeto de bloco de cada célula inclui informações sobre a localização da célula em comparação com outras células na tabela. Também inclui informações de geometria para a localização da célula no documento. Além disso, os blocos de células podem ter diferentes formas EntityTypes de identificá-los como um tipo específico de célula, incluindo TABLE_TITLE, TABLE_FOOTER, TABLE_SECTION_TITLE, COLUMN_HEADER e TABLE_SUMMARY. Por exemplo, na tabela anterior, a célula que contém a palavra “Data” é um cabeçalho de coluna, conforme mostrado no exemplo a seguir.

{ "BlockType": "CELL", "Confidence": 81.8359375, "RowIndex": 2, "ColumnIndex": 1, "RowSpan": 1, "ColumnSpan": 1, "Geometry": {...}, "Id": "6f06c024-0b36-4acd-b61f-4467203234dd", "Relationships": [ { "Type": "CHILD", "Ids": [ "c49f55d5-a7e4-41d5-9c29-d8244f56181c" ] } ], "EntityTypes": [ "COLUMN_HEADER" ] },

A célula que contém a palavra “Depósito” não é um título, rodapé, cabeçalho de coluna, título de seção ou célula de resumo. Isso é demonstrado pela falta do campo"EntityTypes".

{ "BlockType": "CELL", "Confidence": 86.181640625, "RowIndex": 7, "ColumnIndex": 2, "RowSpan": 1, "ColumnSpan": 1, "Geometry": {...}, "Id": "7af5160b-bd60-45f5-a12c-bf376e9d742c", "Relationships": [ { "Type": "CHILD", "Ids": [ "bb9bcaed-5998-44a6-9076-aa1ecc82fbc6" ] } ] },

Todas as células mescladas estão listadas abaixo "Type": "MERGED_CELL" no TABLE bloco. Na tabela de exemplo anterior, há nove células mescladas.

{ "Type": "MERGED_CELL", "Ids": [ "a27a3ecc-afd0-4f7c-9db2-6f8e6d31c605", "6c02cf21-40de-4480-b755-e94462ac4884", "6faad856-8d37-4751-b741-c4ad8d5dcbe3", "d777d6e2-7430-4c6e-a261-03ec5a612c8c", "f0f5a9fb-5bfa-4c80-8f41-1d4fad674b09", "83c7af02-8128-4479-89c9-962544ad4048", "b2b5126c-409f-4b67-9adf-e3e12f60bf86", "87d7f688-3d38-4198-b491-433af0da4d8b", "1c2436e2-a1fc-4b2a-9e73-cc8a1ca67568" ] },

Para encontrar detalhes específicos associados a cada célula mesclada, acesse"BlockType": "MERGED_CELL". Para a célula mesclada “Balanço Patrimonial”, que também é uma célula de título, o ID associado a ela é"a27a3ecc-afd0-4f7c-9db2-6f8e6d31c605".

Existem 5 células que constituem essa célula mesclada, conforme mostrado pelo "ColumnSpan" de 5. Para encontrar o texto dentro da célula mesclada, vá até a Ids matriz para obter detalhes sobre "BlockType": "CELL" seguido por"BlockType": "WORD".

{ "BlockType": "MERGED_CELL", "Confidence": 77.44140625, "RowIndex": 1, "ColumnIndex": 1, "RowSpan": 1, "ColumnSpan": 5, "Geometry": {...}, "Id": "a27a3ecc-afd0-4f7c-9db2-6f8e6d31c605", "Relationships": [ { "Type": "CHILD", "Ids": [ "c1c03d64-d365-4906-af7a-a852f1acc040", "8b415996-6b05-4183-a959-d27d12ccef79", "48b0e972-7dba-4db7-896e-ca7066e8c761", "69948207-47d8-4825-8929-1d7abb650a88", "b9ac9f14-8899-43b3-8572-0e997180e0a4" ] } ], "EntityTypes": [ "TABLE_TITLE" ] },

No nível da célula, existem 5 células para a célula mesclada “Balanço”. Cada célula tem um EntityType de TABLE_TITLE porque o título foi identificado na célula mesclada. A célula com um Id de 48b0e972-7dba-4db7-896e-ca7066e8c761 contém dois IDs de CHILD relacionamento que correspondem aos WORD blocos que compõem essa célula de título mesclada.

{ "BlockType": "CELL", "Confidence": 77.44140625, "RowIndex": 1, "ColumnIndex": 1, "RowSpan": 1, "ColumnSpan": 1, "Geometry": {...}, "Id": "c1c03d64-d365-4906-af7a-a852f1acc040", "EntityTypes": [ "TABLE_TITLE" ] }, { "BlockType": "CELL", "Confidence": 77.44140625, "RowIndex": 1, "ColumnIndex": 2, "RowSpan": 1, "ColumnSpan": 1, "Geometry": {...}, "Id": "8b415996-6b05-4183-a959-d27d12ccef79", "EntityTypes": [ "TABLE_TITLE" ] }, { "BlockType": "CELL", "Confidence": 77.44140625, "RowIndex": 1, "ColumnIndex": 3, "RowSpan": 1, "ColumnSpan": 1, "Geometry": {...}, "Id": "48b0e972-7dba-4db7-896e-ca7066e8c761", "Relationships": [ { "Type": "CHILD", "Ids": [ "998394ef-c6cf-491b-9bac-ec470c638ecd", "1c875a06-f8e5-4df7-8f6a-583c47cbd9fe" ] } ], "EntityTypes": [ "TABLE_TITLE" ] }, { "BlockType": "CELL", "Confidence": 77.44140625, "RowIndex": 1, "ColumnIndex": 4, "RowSpan": 1, "ColumnSpan": 1, "Geometry": {...}, "Id": "69948207-47d8-4825-8929-1d7abb650a88", "EntityTypes": [ "TABLE_TITLE" ] }, { "BlockType": "CELL", "Confidence": 77.44140625, "RowIndex": 1, "ColumnIndex": 5, "RowSpan": 1, "ColumnSpan": 1, "Geometry": {...}, "Id": "b9ac9f14-8899-43b3-8572-0e997180e0a4", "EntityTypes": [ "TABLE_TITLE" ] },

No nível da palavra, há duas palavras: “Balanço” e “Planilha”. Como as duas primeiras e as duas últimas células nas colunas 1, 2, 4 e 5 estão em branco, não há palavras associadas a elas. Isso também é mostrado na saída JSON anterior, em que somente a terceira célula contém IDs secundários.

{ "BlockType": "WORD", "Confidence": 99.95711517333984, "Text": "Balance", "TextType": "PRINTED", "Geometry": {...}, "Id": "998394ef-c6cf-491b-9bac-ec470c638ecd" }, { "BlockType": "WORD", "Confidence": 99.87372589111328, "Text": "Sheet", "TextType": "PRINTED", "Geometry": {...}, "Id": "1c875a06-f8e5-4df7-8f6a-583c47cbd9fe" },

Os tipos de TABLE_FOOTER bloco TABLE_TITLE e contêm informações sobre células de título e rodapé, incluindo CHILD relacionamentos que apontam para os WORD blocos que compõem o título ou rodapé. Isso é mostrado na resposta JSON a seguir.

Neste exemplo, o título é um título na tabela, o que significa que ele é encontrado dentro da estrutura da própria tabela, e não fora da tabela como um título flutuante. Isso significa que o título também tem um tipo de CELL bloco que contém os IDs secundários dos blocos de palavras que compõem o título. Veja a saída JSON anterior para os cinco blocos de células que compõem a célula de título mesclada, que inclui o bloco da célula de título com os IDs secundários dos blocos de palavras. As células do rodapé dessa tabela também seriam representadas por blocos de células para cada rodapé.

{ "BlockType": "TABLE_TITLE", "Confidence": 97.802734375, "Geometry": {...}, "Id": "cde34920-0131-4e68-a3ec-82922269afd4", "Relationships": [ { "Type": "CHILD", "Ids": [ "998394ef-c6cf-491b-9bac-ec470c638ecd", "1c875a06-f8e5-4df7-8f6a-583c47cbd9fe" ] } ] }, { "BlockType": "TABLE_FOOTER", "Confidence": 88.0859375, "Geometry": {...}, "Id": "11dfd98c-6140-49e8-a544-e220d76bdd2f", "Relationships": [ { "Type": "CHILD", "Ids": [ "77a70b2d-c137-4161-8d9c-65170266e5ff", "d413ef1f-fa1b-44cb-87ed-809494fc87d8", "19616f50-1a34-431f-94bf-7e575106cd85", "35063ea4-a3c7-4e19-9d32-10eca92807b8", "48de1523-7776-49ef-96d9-fc19bcde89c5" ] } ] },