了解文档智能布局 API Markdown 输出格式

Azure AI 文档智能布局 API 可以将文档转换为丰富的 Markdown,从而保留其原始结构和格式。 只需在请求中指定 outputContentFormat=markdown,即可接收保持段落、标题、表格及其他文档元素正确层次的语义化内容。

此 Markdown 输出巧妙地捕获了文档的原始结构,同时为后续应用提供了标准化且便于处理的内容。 保留的语义结构可实现更复杂的文档处理工作流,而不会丢失文档元素之间的上下文和关系。

布局分析中支持的 Markdown 元素

布局 API 响应中包括以下 Markdown 元素:

  • 段落
  • 标题
  • 数字
  • 选择标记
  • 公式
  • 条形码
  • 页码/页眉/页脚
  • 分页符
  • 键值对/语言/样式
  • 范围和内容

段落

段落代表在语义上紧密相连的文本单元。 布局 API 通过以下方式维护段落完整性:

  • 保留段落边界,在单独的段落之间保留空行
  • 使用段落中的换行符维护原始文档的可视结构
  • 维护尊重原始文档阅读顺序的正确文本流

下面是一个示例:

This is paragraph 1.
This is still paragraph 1, even if in another Markdown line.

This is paragraph 2. There is a blank line between paragraph 1 and paragraph 2.

标题

标题将文档内容组织成层次结构,以便于导航和理解。 布局 API 具有以下功能:

  • 使用与标题级别对应的 1-6 个哈希符号(#)的标准 Markdown 标题语法。
  • 在每个标题之前留出两个空行,以提高可读性。

下面是一个示例:

# This is a title

## This is heading 1

### This is heading 2

#### This is heading 3

表以可视组织的格式保留复杂的结构化数据。 布局 API 使用 HTML 表语法实现最大保真度和兼容性:

  • 实现完整的 HTML 表标记(<table>、、<tr><th><td>)而不是标准 Markdown 表
  • 保留具有 HTML rowspan 和 colspan 属性的合并单元格。
  • 使用 <caption> 标记保留表格标题以维持文档上下文
  • 处理复杂的表结构,包括页眉、单元格和页脚
  • 在每个表之前保留两个空白行的正确间距以提高可读性
  • 将表格脚注保留为表后面的单独段落

下面是一个示例:

<table>
<caption>Table 1. This is a demo table</caption>
<tr><th>Header</th><th>Header</th></tr>
<tr><td>Cell</td><td>Cell</td></tr>
<tr><td>Cell</td><td>Cell</td></tr>
<tr><td>Cell</td><td>Cell</td></tr>
<tr><td>Footer</td><td>Footer</td></tr>
</table>
This is the footnote of the table.

数字

布局 API 保留图形元素:

  • 将图形内容封装在 <figure> 标签中,以保持其与周围文本的语义区别
  • 保留带有 <figcaption> 标记的图形标题以提供重要上下文
  • 将图脚注保留为图容器后面的单独段落

下面是一个示例:

<figure>
<figcaption>Figure 2 This is a figure</figcaption>

Values
300
200
100
0

Jan Feb Mar Apr May Jun Months

</figure>

This is footnote if the figure have.

选择标记

选择标记表示窗体和文档中的类似复选框的元素。 布局 API:

  • 使用 Unicode 字符实现视觉清晰度:☒(已选中)和☐(未选中)
  • 将置信度低于0.1的复选框检测结果筛选掉,以提高可靠性。
  • 维护选择标记与其关联文本之间的语义关系

公式

数学公式保留与 LaTeX 兼容的语法,以便呈现复杂的数学表达式:

  • 内联公式用单个美元符号括起来($...$),以保持文本连贯性。
  • 块公式使用双美元符号 ($$...$$) 进行独立显示
  • 多行公式表示为连续块公式,保留数学关系
  • 保留原始间距和格式以确保准确的表示形式

下面是内联公式、单行公式块和多行公式块的示例:

The mass-energy equivalence formula $E = m c ^ { 2 }$ is an example of an inline formula

$$\frac { n ! } { k ! \left( n - k \right) ! } = \binom { n } { k }$$

$$\frac { p _ { j } } { p _ { 1 } } = \prod _ { k = 1 } ^ { j - 1 } e ^ { - \beta _ { k , k + 1 } \Delta E _ { k , k + 1 } }$$
$$= \exp \left[ - \sum _ { k = 1 } ^ { j - 1 } \beta _ { k , k + 1 } \Delta E _ { k , k + 1 } \right] .$$

条形码

条形码和 QR 码使用 Markdown 图像语法表示,并添加了语义信息:

  • 将标准图像 Markdown 语法与描述性属性配合使用
  • 捕获条形码类型(QR 码、条形码等)及其编码值
  • 保留条形码与周围内容之间的语义关系

下面是一个示例:

This is paragraph 1.
This is still paragraph 1, even if in another Markdown line.

This is paragraph 2. There is a blank line between paragraph 1 and paragraph 2.

页码/页眉/页脚

页面元数据元素提供有关文档分页的上下文,但不应与主要内容内联显示:

  • 包含在 HTML 注释中以保留信息,同时将其隐藏在标准 Markdown 呈现中
  • 维护原始页面结构信息,这些信息对于文档重建可能很有价值
  • 使应用程序无需中断内容流即可了解文档分页

下面是一个示例:

<!-- PageHeader="This is page header" -->

<!-- PageFooter="This is page footer" -->
<!-- PageNumber="1" -->


分页符

为了解析纯 Markdown 内容中的哪些部分属于哪个页面,我们引入了 PageBreak 作为页面的分隔标记。

下面是一个示例:

<!-- PageBreak -->

键值对/语言/样式

对于 KeyValuePairs/Language/Style,我们将它们映射到 Analytics JSON 正文,而不是在 Markdown 内容中。

注释

有关当前在 GitHub.com 上支持用户内容的 Markdown 的详细信息, 请参阅GitHub Flavored Markdown Spec

结论

文档智能的 Markdown 元素提供了一种强大的方法来表示已分析文档的结构和内容。 通过了解并正确利用这些 Markdown 元素,可以增强文档处理工作流并构建更复杂的内容提取应用程序。

后续步骤