文档 - Amazon Bedrock

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

文档

您可以通过文档的标准输出,设置您想要实现的响应粒度,以及确定输出中的输出格式和文本格式。以下是您可以启用的一些输出。

注意

BDA 可以处理 DOCX 文件。要处理 DOCX 文件,请将它们转换为 PDFs。这意味着页码映射不适用于 DOCX 文件。如果选择了 JSON+ 选项和页面粒度,则转换后的图像 PDFs 将被上传到您的输出存储桶。

响应粒度

响应粒度决定了您希望从文档文本提取中接收哪种响应。粒度级别越细,就会提供越多的独立响应,使用页面级别粒度时,会将所有提取的文本一起提供,而单词级别粒度则将每个单词作为单独的响应提供。可用的粒度级别包括:

  • 页面级别粒度 – 此粒度默认启用。页面级别粒度按照您选择的文本输出格式,提供文档的每一页。如果您在处理 PDF 文件,则启用此粒度级别将检测并返回嵌入的超链接。

  • 元素级别粒度(布局)– 此粒度默认启用。按照您选择的输出格式提供文档的文本,并将文本划分为不同的元素。这些元素包括图、表格或段落等。它们根据文档的结构,按逻辑阅读顺序返回。如果您在处理 PDF 文件,则启用此粒度级别将检测并返回嵌入的超链接。

  • 单词级别粒度 – 提供有关单个单词的信息,不进行更全面的上下文分析。向您提供每个单词及其在页面上的位置。

输出设置

输出设置决定了您下载的结果所采用的结构。此设置只能在控制台上使用。输出设置的选项包括:

  • JSON – 用于文档分析的默认输出结构。提供一个 JSON 输出文件,其中包含您的配置设置中的信息。

    • 异步 InvokeDataAutomationAsyncAPI:异步 API 的 JSON 输出仅限于 S3。

    • 同步 InvokeDataAutomationAPI:可以通过利用将 JSON 输出设置为 S3 或内联outputconfiguration。如果选择了 S3,则输出 JSON 仅转到 S3(不是内联)。如果未提供 S3,则同步 API 输出仅支持内联 JSON。

  • json+Files — 仅适用于异步 API。InvokeDataAutomationAsync使用此设置会生成 JSON 输出和与不同输出对应的文件。例如,此设置向您提供了一个文本文件(用于整体文本提取),一个 markdown 文件(用于带有结构 markdown 的文本)以及 CSV 文件(用于在文件中找到的每个表)。文档中的图以及裁剪图和校正图像都会保存。另外,如果您在处理 DOCX 文件并选择了此选项,则 DOCX 文件的转换后 PDF 将位于输出文件夹中。这些输出位于您的输出文件夹的 standard_output/logical_doc_id/assets/ 中。

注意
  • 除了 JSON 之外,同步 API 不会输出任何其他文件。输出 JSON 仅包含选作标准输出文本格式一部分的文本格式。同步 API 不会输出人物裁剪或校正后的图像。

  • 同步 API 不支持 DocX。

文本格式

文本格式决定了通过各种提取操作提供的不同类型的文本。您可以为文本格式选择以下任意数量的选项。

  • 纯文本 – 此设置提供纯文本输出,不注明格式设置或其他 markdown 元素。

  • 带有 markdown 的文本 – 标准输出的默认输出设置。提供集成了 markdown 元素的文本。

  • 带有 HTML 的文本 – 在响应中提供集成了 HTML 元素的文本。

  • CSV – 提供文档中表的 CSV 结构化输出。此选项只对表给出响应,而不会对文档的其他元素给出响应。

边界框和生成式字段

对于文档,有两个响应选项可以根据所选粒度更改其输出。这两个选项是“边界框”和“生成式字段”。选择“边界框”将提供您在控制台的响应下拉列表中点击的元素或单词的可视化轮廓。这使您可以更轻松地跟踪响应中的特定元素。在 JSON 中,使用方框四个角的坐标来返回边界框。

当您选择“生成式字段”时,将生成文档的摘要,分别为 10 个词和 250 个词的版本。然后,如果您选择元素作为响应粒度,则会为在文档中检测到的每个图生成描述性标题。图包括图表、图形和图像等对象。

Async

本节重点介绍您在文档文件 InvokeDataAutomationAsync 上运行 API 操作时收到的不同响应对象。下面我们将分解响应对象的每个部分,然后查看示例文档的完整填充响应。我们将收到的第一部分是 metadata

"metadata":{ "logical_subdocument_id":"XXXX-XXXX-XXXX-XXXX", "semantic_modality":"DOCUMENT", "s3_bucket":"bucket", "s3_prefix":"prefix" },

上面的第一部分概述了与文档关联的元数据。除了 S3 信息外,此部分还会告知您为响应选择了哪种模态。

"document":{ "representation":{ "text":"document text", "html":"document title document content", "markdown":"# text" }, "description":"document text", "summary":"summary text", "statistics":{ "element_count":5, "table_count":1, "figure_count":1, "word_count":1000, "line_count":32 } },

上面的部分提供文档级别粒度的信息。description 和 summary 部分是基于文档生成的字段。representation 部分提供文档中各种格式样式的实际内容。最后,statistics 包含有关文档实际内容的信息,例如有多少语义元素,有多少图、单词、行等。

这是表实体的信息。对于 InvokeDataAutomationAsync (异步)请求,除了位置信息、不同格式的文本、表格和阅读顺序外,它们还专门返回 S3 存储桶中的 csv 信息和 S3 存储桶中表的裁剪图像。CSV 信息显示不同的页眉、页脚和标题。图像将被路由到 InvokeDataAutomationAsync 请求中设置的前缀的 s3 存储桶。对于 InvokeDataAutomation (同步)请求,不支持 S3 存储桶中表的 csv 和裁剪后的图像。

当您处理 PDF 时,响应的 statistics 部分还将包含 hyperlinks_count,告知您文档中存在多少个超链接。

{ "id":"entity_id", "type":"TEXT", "representation":{ "text":"document text", "html":"document title document content", "markdown":"# text" }, "reading_order":2, "page_indices":[ 0 ], "locations":[ { "page_index":0, "bounding_box":{ "left":0.0, "top":0.0, "width":0.05, "height":0.5 } } ], "sub_type":"TITLE/SECTION_TITLE/HEADER/FOOTER/PARAGRAPH/LIST/PAGE_NUMBER" },

这是用于文档内文本的实体,由响应中的 TYPE 行表示。同样,representation 显示不同格式的文本。reading_order 显示读者按逻辑顺序查看文本的先后顺序。这是基于关联键和值的语义排序。例如,它按阅读顺序将段落标题与相应的段落相关联。page_indices 告诉您文本所在的页面。接下来是位置信息,如果在响应中启用了该信息,则会提供一个文本边界框。最后是实体子类型。此子类型提供有关检测到哪些类型的文本的更多详细信息。有关子类型的完整列表,请参阅“API 参考”。

{ "id":"entity_id", "type":"TABLE", "representation":{ "html":"table.../table", "markdown":"| header | ...", "text":"header \t header", "csv":"header, header, header\n..." }, "csv_s3_uri":"s3://", "headers":[ "date", "amount", "description", "total" ], "reading_order":3, "title":"Title of the table", "footers":[ "the footers of the table" ], "crop_images":[ "s3://bucket/prefix.png", "s3://bucket/prefix.png" ], "page_indices":[ 0, 1 ], "locations":[ { "page_index":0, "bounding_box":{ "left":0, "top":0, "width":1, "height":1 } }, { "page_index":1, "bounding_box":{ "left":0, "top":0, "width":1, "height":1 } } ], "sub_type":"TITLE/SECTION_TITLE/HEADER/FOOTER/PARAGRAPH/LIST/PAGE_NUMBER" },

这是表实体的信息。除了位置信息、不同格式的文本、表和阅读顺序外,它们还专门返回 S3 存储桶中表的 csv 信息和裁剪图像。CSV 信息显示不同的页眉、页脚和标题。图像将被路由到 InvokeDataAutomation 请求中设置的前缀的 s3 存储桶。

{ "id":"entity_id", "type":"FIGURE", "summary":"", "representation":{ "text":"document text", "html":"document title document content", "markdown":"# text" }, "crop_images":[ "s3://bucket/prefix.png", "s3://bucket/prefix.png" ], "locations":[ { "page_index":0, "bounding_box":{ "left":0, "top":0, "width":1, "height":1 } } ], "sub_type":"CHART", "title":"figure title", "rai_flag":"APPROVED/REDACTED/REJECTED", "reading_order":1, "page_indices":[ 0 ] } ,

这是用于图的实体,例如文档图形和图表。与表类似,这些图将被裁剪并且图像将会发送到前缀中设置的 S3 存储桶。此外,对于标题文本还会收到 sub_type 和图标题响应,并且会指示它是哪种类型的图。

"pages":[ { "id":"page_id", "page_index":0, "detected_page_number":1, "representation":{ "text":"document text", "html":"document title document content", "markdown":"# text" }, "statistics":{ "element_count":5, "table_count":1, "figure_count":1, "word_count":1000, "line_count":32 }, "asset_metadata":{ "rectified_image":"s3://bucket/prefix.png", "rectified_image_width_pixels":1700, "rectified_image_height_pixels":2200 } } ],

我们通过标准输出提取的最后一个实体是页面。页面与文本实体相同,但额外包含页码,这是在页面上检测到的页码。

"text_lines":[ { "id":"line_id", "text":"line text", "reading_order":1, "page_index":0, "locations":{ "page_index":0, "bounding_box":{ "left":0, "top":0, "width":1, "height":1 } } } ],
"text_words":[ { "id":"word_id", "text":"word text", "line_id":"line_id", "reading_order":1, "page_index":0, "locations":{ "page_index":0, "bounding_box":{ "left":0, "top":0, "width":1, "height":1 } } } ]

最后两个元素用于单独的文本部分。单词级别粒度会为每个单词返回响应,而默认输出仅报告文本行。

Sync

本节重点介绍您在文档文件 InvokeDataAutomation 上运行 API 操作时收到的不同响应对象。下面我们将分解响应对象的每个部分,然后查看示例文档的完整填充响应。我们将收到的第一部分是 metadata

"metadata": { "logical_subdocument_id": "1", "semantic_modality": "DOCUMENT", "number_of_pages": X, "start_page_index": "1", "end_page_index": X, "file_type": "PDF" },

上面的第一部分概述了与文档关联的元数据。由于同步 InvokeDataAutomation API 当前不支持文档拆分,因此 logical_subdocument_id 始终等于 1。

"document":{ "representation":{ "text":"document text", "html":"document title document content", "markdown":"# text" }, "description":"document text", "summary":"summary text", "statistics":{ "element_count":5, "table_count":1, "figure_count":1, "word_count":1000, "line_count":32 } },

上面的部分提供文档级别粒度的信息。description 和 summary 部分是基于文档生成的字段。representation 部分提供文档中各种格式样式的实际内容。最后,statistics 包含有关文档实际内容的信息,例如有多少语义元素,有多少图、单词、行等。

注意:与异步 InvokeDataAutomationAsync 请求不同,同步 InvokeDataAutomation 请求不支持在 S3 存储桶中返回 csv 信息和表的裁剪图像。

{ "id":"entity_id", "type":"TEXT", "representation":{ "text":"document text", "html":"document title document content", "markdown":"# text" }, "reading_order":2, "page_indices":[ 0 ], "locations":[ { "page_index":0, "bounding_box":{ "left":0.0, "top":0.0, "width":0.05, "height":0.5 } } ], "sub_type":"TITLE/SECTION_TITLE/HEADER/FOOTER/PARAGRAPH/LIST/PAGE_NUMBER" },

这是用于文档内文本的实体,由响应中的 TYPE 行指示。再说一遍,表示形式以不同的格式显示文本。reading_order 显示读者何时能在逻辑上看到文本。这是基于关联键和值的语义排序。例如,它按阅读顺序将段落标题与相应的段落相关联。page_indices 会告诉你文本在哪些页面上。接下来是位置信息,如果在响应中启用了该信息,则会提供一个文本边界框。最后是实体子类型。此子类型提供有关检测到哪些类型的文本的更多详细信息。有关子类型的完整列表,请参阅“API 参考”。

{ "id": "entity_id", "type": "TABLE", "representation": { "html": "table.../table", "markdown": "| header | ...", "text": "header \t header", "csv": "header, header, header\n..." }, "headers": ["date", "amount", "description", "total"], "reading_order": 3, "title": "Title of the table", "footers": ["the footers of the table"], "page_indices": [0, 1], "locations": [{ "page_index": 0, "bounding_box": { "left": 0, "top": 0, "width": 1, "height": 1 } }, { "page_index": 1, "bounding_box": { "left": 0, "top": 0, "width": 1, "height": 1 } }] },

这是表实体的信息。CSV 信息显示不同的页眉、页脚和标题。

{ "id": "entity_id", "type": "FIGURE", "summary": "", "representation": { "text": "document text", "html": "document title document content", "markdown": "# text" }, "locations": [ { "page_index": 0, "bounding_box": { "left": 0, "top": 0, "width": 1, "height": 1 } } ], "sub_type": "CHART", "title": "figure title", "reading_order": 1, "page_indices": [ 0 ] }, ​

这是用于图的实体,例如文档图形和图表。您将收到标题文本的标题回复和图标题回复,并指示它是哪种图形。sub_type

"pages":[ "pages":[ { "id":"page_id", "page_index":0, "detected_page_number":1, "representation":{ "text":"document text", "html":"document title document content", "markdown":"# text" }, "statistics":{ "element_count":5, "table_count":1, "figure_count":1, "word_count":1000, "line_count":32 }, "asset_metadata":{ "rectified_image":"s3://bucket/prefix.png", "rectified_image_width_pixels":1700, "rectified_image_height_pixels":2200 } } ],

我们通过标准输出提取的最后一个实体是页面。页面与文本实体相同,但额外包含页码,这是在页面上检测到的页码。

"text_lines":[ { "id":"line_id", "text":"line text", "reading_order":1, "page_index":0, "locations":{ "page_index":0, "bounding_box":{ "left":0, "top":0, "width":1, "height":1 } } } ],
"text_words":[ { "id":"word_id", "text":"word text", "line_id":"line_id", "reading_order":1, "page_index":0, "locations":{ "page_index":0, "bounding_box":{ "left":0, "top":0, "width":1, "height":1 } } } ]

最后两个元素用于单独的文本部分。单词级别粒度会为每个单词返回响应,而默认输出仅报告文本行。

其他文件格式元数据 JSON

当您收到来自其他文件格式标志的其他文件时,您将获得一个包含已提取的所有已校正图像的 JSON 文件。BDA 使用单应性变换,将图像旋转到处于 90 度角来校正旋转的图像。JSON 的示例如下:

"asset_metadata": { "rectified_image": "s3://bucket/prefix.png", "rectified_image_width_pixels": 1700, "rectified_image_height_pixels": 2200, "corners": [ [ 0.006980135689736235, -0.061692718505859376 ], [ 1.10847711439684, 0.00673927116394043 ], [ 0.994479346419327, 1.050548828125 ], [ -0.11249661383904497, 0.9942819010416667 ] ] }

角代表检测到的图像边角,用于构成文档的单应性变换。这种单应性变换用来旋转图像,同时保持其他特性。