LandingAI ADE:PDF转MD工具

从 PDF 中提取干净的文本是当今许多LLM工作流程的核心要求,从标准检索增强生成 (RAG) 到现代代理人工智能系统。

然而,传统的 PDF 解析器经常丢失结构、格式和视觉元素,这限制了提取内容的有用性。 垃圾进,垃圾出

Markdown 已成为LLM的标准目标格式。挑战在于将复杂的、真实的 PDF 转换为干净的 Markdown,而不丢失信息。

在几篇文章的过程中,我在同一个基准文档上尝试了十多个 PDF 到 Markdown 工具。现在,我正在测试 LandingAI 的新的代理化文档提取 (ADE) 工具。

AI 代理可以生成完美的 Markdown 吗?

1、ADE:代理化PDF转Markdown

LandingAI 的 ADE (Agentic Document Extraction)使用代理方法来解析文档。这本质上意味着LLM充当“大脑”,根据文档内容调用专门的工具进行推理和行动。

其基本思想是现实世界的文档是杂乱的、复杂的和多用途的。有些文档只是纯文本。其他包含图形、表格和图表。有些文件有手写内容。有些是光线不佳的低质量文档照片。

与一刀切的工作流程相比,代理化方法提高了灵活性,因为代理可以决定如何自行处理每个文档。

2、LandingAI ADE的内部机制

ADE 解析文档的确切过程并未公开披露。然而,根据文档页面和 LandingAI 的在线课程“文档 AI:从 OCR 到代理文档提取”,我们可以做出一些猜测 [1]。

与传统的 OCR 方法不同,ADE 将文档视为视觉对象。 ADE 特别关注包含重要信息的文档的布局和结构。例如,考虑人类如何读取两列布局与传统 OCR 如何读取它。

2.1 PaddleOCR 3:最先进的开源 PDF 到 Markdown

ADE 的功能可能与 PaddleOCR 3 非常相似,特别是 PP-StructureV3 文档解析管道。该多模型管道通过执行五步处理工作流程将 PDF 文档转换为 Markdown 和 JSON [2]。

PaddleOCR 3.0 的 PP-StructureV3 管道 [2]。工作流程主要包括预处理、OCR、布局分析、文档项识别和后处理。图片已获得 CC BY 4.0 许可。

以下是 PP-StructureV3 功能的快速总结 [2]:

  1. 预处理:修复图像旋转和扭曲。
  2. OCR:检测和识别所有文本内容。
  3. 布局分析:使用边界框对文档中的所有重要区域进行分类和本地化。
  4. 文档项目识别:将布局分析中的特定区域发送到专用模型以识别表格、公式、图表和印章。
  5. 后处理:根据正确的阅读顺序对所有元素进行排序。

Dobling 还执行类似的功能,包括 OCR、布局分析、表格识别和 PDF 文档的后处理 [3]。

我已经在我的基准文档上测试了 PaddleOCR 的 PP-StructureV3 和 Docling。 当时我没有得到很好的结果,所以我很好奇相比之下 ADE 的表现如何。

2.2 Landing AI ADE (DPT-2)

对于此任务,LandingAI 使用其 DPT-2 模型:

文档预训练转换器 (DPT) 是为 ADE 解析 API 的解析功能提供支持的模型。 DPT 识别文档布局和块,然后为这些块生成描述性解释(标题)。 [4]

听起来这是一个基于Transformer的大型模型,尽管它也可能是由多个较小模型组成的管道。

DPT-2 具有表格和图形标题、布局检测和块本体(对每个检测到的区域进行分类)的功能。

对于 ADE,我假设代理不会对每个文档使用相同的管道,而是根据需要调用处理步骤。可能还有一个反馈循环,代理可以纠正 Markdown 输出中的任何错误。

3、为转换测试创建基准PDF

为了评估 PDF 到 Markdown 转换过程的准确性,我使用了具有已知基本事实的基准文件。我在其中包含了所有基本的 Markdown 语法元素。

使用通用文档转换器 Pandoc,我将 Markdown 基本事实转换为 PDF 文档“bench_pdf_v2.pdf”。

结果是一个两页的基准 PDF 文件,我知道用于创建它的 Markdown。

通过将 Markdown 转换为 PDF,使用 pandoc 创建的基准 V2 PDF 文件。

我将使用这个基准文档来查看和比较 LandingAI 的 ADE 结果与其他 PDF 转 Markdown 工具的结果。

4、使用LandingAI ADE开发包

ADE 具有 REST API,以及 Python 和 TypeScript 库。我将使用 Python 库来解析我的基准 PDF 文件。

首先,我们必须使用“pip install landai-ade”安装Python包。

然后,我们只需几行Python代码即可执行ADE管道。我们需要创建一个“客户端”并传递 API 密钥。然后,我们调用客户端的“parse”函数,传递文档路径和最新的“dpt-2”模型作为参数:

from landingai_ade import LandingAIADE
from pathlib import Path

client = LandingAIADE(apikey= "INSERT-YOUR-API-KEY")
doc_path = Path("./bench_pdf_v2.pdf") # change to your file path

parse_response = client.parse(
    document=doc_path,
    model="dpt-2-latest"
)

执行此代码大约需要六秒钟,每页花费三个学分。

parse 函数返回一个包含以下字段的 ParseResponse 对象 [4]:

  • chunksChunk 对象列表,每个解析区域一个
  • markdown:文档的完整 Markdown 表示
  • metadata:处理信息(积分使用情况、持续时间、文件名、作业 ID、页数、版本)
  • splits:按页面或部分组织块的 Split 对象列表
  • grounding:将块 ID 映射到详细基础信息的字典

这意味着我们不仅收到最终的 Markdown 结果,还收到视觉基础信息。

具体来说,每个检测到的元素称为“块”。对于每个块,我们收到包含页面、块类型(例如文本、表格、图形、标题)、边界框坐标、置信度得分和 Markdown 的结构化数据。

5、可视化ADE的布局检测

根据这些信息,我们可以准确地看到 AI 在 PDF 中识别出的内容。

我使用了一些辅助函数 [1] 来可视化来自“parse_response”的数据。这给出了以下边界框可视化。

第一页:

第一 PDF 页面的边界框可视化(布局检测)

第二页:

第二个 PDF 页面的边界框可视化(布局检测)

每个边界框都是一个块。例如,以下是访问第一个块的方法:

print(parse_response.chunks[0])

>> Chunk(id='2df6c4ad-6735-42ac-92a1-5828edae451a', 
    grounding=ChunkGrounding(box=ParseGroundingBox(bottom=0.2504836618900299, left=0.2118898183107376, right=0.4682390093803406, top=0.15064971148967743), page=0), 
    markdown="<a id='2df6c4ad-6735-42ac-92a1-5828edae451a'></a>\n\n# Lorem Ipsum\n\nLorem ipsum dolor sit amet.\nConsetetur sadipscing elitr.\nSed diam nonumy eirmod tempor.", 
    type='text')

边界框信息非常有用。例如,当法学硕士引用 RAG 系统中文档的一部分时,您可以直观地向用户显示该数据的确切来源。此功能有助于开发人员调试并增加用户信任。

6、评估Markdown输出

让我们将完整的 Markdown 输出保存为文件并查看结果。

# save Markdown to disk
with open("output-ade.md", "w", encoding="utf-8") as myfile:
    myfile.write(parse_response.markdown)

这将为我们的 PDF 文档生成以下 Markdown 输出:

<a id='569078a5-d828-4fbc-bde2-b3d4c223b054'></a>

# Lorem Ipsum

Lorem ipsum dolor sit amet.
Consetetur sadipscing elitr.
Sed diam nonumy eirmod tempor.

<a id='5688ef04-69b5-4a98-b5d4-745fb6d056fb'></a>

Lorem Ipsum
Lorem ipsum.
*Lorem ipsum.*
**_Lorem ipsum._**
Lorem ipsum.

<a id='b3932830-cd5c-4648-904b-bfdce53c1231'></a>

# Lorem Ipsum

Lorem.

&nbsp;&nbsp;&nbsp;&nbsp;Lorem ipsum.

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Lorem ipsum dolor.

&nbsp;&nbsp;&nbsp;&nbsp;Lorem ipsum.

1. Lorem
2. Lorem ipsum
3. Lorem ipsum dolor

* Lorem
* Lorem ipsum
* Lorem ipsum dolor

<a id='99cbbade-d994-4dc1-9ea2-2ecf9c37d5a0'></a>

Before something

<a id='ca05a4c7-d841-4e77-9dae-13a30bd6c74f'></a>

After something
Test: click.
Another test: mail@example.com
Let's try this:
```python
def add_integer(a: int, b: int) -> int:
    return a + b
```
And also this:
```bash
curl -o thatpage.html http://www.example.com/
```

<a id='80c6444c-1d7e-4f12-b8ee-4bb0906e6945'></a>

1

<!-- PAGE BREAK -->

<a id='5b48cd83-cc88-42fb-9b89-b3a8af2e6371'></a>

Let's try this:
<table id="1-1">
<tr><td id="1-2">Hello</td><td id="1-3">To</td><td id="1-4">Medium</td></tr>
<tr><td id="1-5">Q</td><td id="1-6">W</td><td id="1-7">E</td></tr>
<tr><td id="1-8">A</td><td id="1-9">S</td><td id="1-a">D</td></tr>
<tr><td id="1-b">Y</td><td id="1-c">X</td><td id="1-d">C</td></tr>
</table>

<a id='e49da3e1-713d-4244-8c08-f84cf83ac6d5'></a>

And also this:

<table id="1-e">
<tr><td id="1-f"></td><td id="1-g">Hello</td><td id="1-h">World</td></tr>
<tr><td id="1-i">Q</td><td id="1-j">W</td><td id="1-k">E</td></tr>
<tr><td id="1-l">A</td><td id="1-m">S</td><td id="1-n">D</td></tr>
</table>

<a id='10492edd-7252-421c-9f53-53e3fda1680f'></a>

And a final test:
<::A long-exposure photograph shows star trails across a deep blue night sky. Below the sky, a dark mountain range is visible, partially obscured by a thick layer of white clouds that fill the valleys and stretch across the landscape, with a faint glow visible on the horizon.: image::>

<a id='f9c838fd-dbb9-47fa-8abe-99954cbc092f'></a>

2

总的来说,结果看起来相当不错。

值得注意的是,每个块都以一个不可见的 HTML 锚点开始。表格是使用 HTML 代码而不是纯 Markdown 实现的。

文档中的图像已替换为描述它的替代文本。自定义语法“<:: alt text : image::>”既不是标准 Markdown 也不是 HTML 代码。

7、处理更复杂的PDF示例

ADE 在处理复杂文档方面也非常有效。基于网络的演示包括四个示例 PDF,其中包含真实的表格、图形、图表、手写内容、复选框等。

例如,下面是 ADE 可以处理的提供的 AccidentStatement.pdf 文件。

LandingAI 的 [Playground] 中提供的“AccidentStatement”PDF 示例的屏幕截图

除了解析为 Markdown 或 JSON 之外,您还可以拆分文档、提取键值字段以及与文档聊天。

8、ADE vs. 其他PDF‑to‑Markdown 工具

下表总结了我最近对几种 PDF 到 Markdown 转换器工具的测试结果 [5]。

PDF-to-Markdown 转换器在基准文档上的评估结果。绿色:非常好,黄色:可接受,红色:失败。表基于[5]

与我测试的其他工具相比,LandingAI 的 ADE 是从 PDF 文件生成干净的 Markdown 以用于后续下游任务的最佳选择之一。

最大的缺点是使用该服务的成本,因为大多数其他工具都可以在本地免费使用。我每页用了三个积分。目前,您可以在即用即付定价模式中以 1 美元购买 100 个积分。

9、结束语

LandingAI的Agentic Document Extraction是一款将Agentic AI与PDF到Markdown转换工具相结合的新产品。然而,我不确定代理行为对于这项任务有多么必要。用专有的解决方案很难判断。

与我尝试过的所有其他工具相比,我认为 ADE 相当不错。我还喜欢额外的元数据,包括每个块的边界框区域。稍后可以使用此信息来准确可视化这些块的来源。

一个缺点是该工具不能在本地运行。与 Dobling 等本地开源选项相比,ADE 要求您将私人文档上传到服务提供商。您还必须使用积分支付每次使用的费用。


原文链接: PDF to Markdown: LandingAI's ADE Agentic AI

汇智网翻译整理,转载请标明出处