2023 年 12 月 10 日 • Shrijith Venkatramana
Marker 是什么?工作流程概览实例展示示例:简单教科书转换前(PDF 格式)转换后(Markdown 格式)双栏布局的转换转换前(PDF 格式)转换后(Markdown 格式)科研论文中的数学公式转换前(PDF 格式)转换后(Markdown + Latex 格式)标记工具的直观工作原理解析第一步:准备阶段第二步:光学字符识别(OCR)第 3 步:布局检测第 4 步:排序第 5 步:公式和方程式的转化第 6 步:后处理与优化如何开始使用?项目中引入的有趣模型、库和工具Ray: 扩展人工智能工作的利器PyMuPDF: PDF 文件的多功能工具包Nougat:科学文献中方程式的探测器LayoutLMv3:书籍与文件布局检测T5: PDF 后处理模型性能简介准确性速度内存使用结论
深入探索:AI 驱动的 PDF 布局检测引擎源代码解析上周,PDF 转 Markdown 的工具 Marker 成为 Hacker News 首页的热门话题。作为一个对机器学习(ML)充满好奇的学生,我觉得这是一个绝佳的机会,深入了解这款出色的文档 AI 工具的内部机制。
用一个形象的比喻,Marker 就像一个高智能的抄写员,它能够阅读那些复杂的书籍和科学论文 PDF,并将它们转化为清晰、易读的 Markdown 文档。它就像是帮助你进行文档数字化的智能小助手。
官方对这款工具的描述更加专业,具体如下:
Marker 能够将 PDF、EPUB 和 MOBI 文件转换成 Markdown 格式。它的转换速度比 nougat 快 10 倍,准确度更高,且几乎没有误解风险。
支持多种类型的 PDF 文档(尤其适用于书籍和科学论文)
能够去除文档中的页眉、页脚和其他无关内容
将大部分数学公式转换为 Latex 格式
格式化代码块和表格
支持多种语言(主要测试语言为英语)。更多语言设置可在 settings.py 中查看。
可在 GPU、CPU 或 MPS 上运行
Marker 主要通过以下六个阶段来工作:
准备阶段: 利用 PyMuPDF 工具,可以把各种格式的文档转换成 PDF 文件。
文本识别(OCR): 使用 Tesseract 或 OCRMyPDF 进行文字识别;也可以选择用 PyMuPDF 进行基本的文字抓取。
布局识别: 运用专门定制的 LayoutLMv3 模型 来识别文档中的表格、图表、标题、图说、页眉和页脚。
列的检测和排序: 再用一个定制的 LayoutLMv3 模型来识别文档中的列,并按照正确的顺序(上到下,左到右)进行排列。
公式/代码处理: 通过 Nougat 工具,把公式图片转换成对应的 latex 代码,并利用启发式方法准确识别和调整代码及表格内容。
文本清理与优化: 使用定制的 T5ForTextClassification 模型进行文本清理,比如去掉不必要的空格和奇怪的字符,确保以一种保守且保留原意的方式进行优化。
借助这六个阶段,Marker 能够把任何文档转化为格式整洁的 Markdown 文件。
从宏观视角来看,这个转换过程结合了众多手动策略和四个专门的人工智能/机器学习模型来完成任务。
文档会在不同阶段被不同程序多次扫描,每个阶段都会对页面增加有用信息或注释,或者去除多余的元素。
使用工具:PyMuPDF
标记工具能够接受 epub、mobi 和 PDF 文件作为转换流程的输入。它利用 PyMuPDF 将 epub 或 mobi 文件转换成 PDF,作为准备阶段的一部分。整个流程接下来完全基于 PDF 格式内容进行。
使用工具:OCRMyPDF,Tesseract
例如,在第一步中增加的信息是 OCR,它能够为我们提取文档中的文字行。标记工具在这一步骤中会使用 OCRMyPDF 或 Tesseract 来进行文字识别。
工具:LayoutLMv3(定制模型 – layout_segmenter)
通过使用 LayoutLMv3,我们增加了一个识别不同布局块的功能。Marker 能够识别以下类型的布局块:
{
"id2label": {
"0": "Caption",
"1": "Footnote",
"2": "Formula",
"3": "List-item",
"4": "Page-footer",
"5": "Page-header",
"6": "Picture",
"7": "Section-header",
"8": "Table",
"9": "Text",
"10": "Title"
}
}
工具:LayoutLMv3(定制模型 – column_detector)
本步骤运用一系列规则来排除诸如页眉和页脚等多种元素类型。
工具:Nougat
接下来,我们利用 nougat 模型将图像中的公式和方程式转换成 latex 代码。
工具:T5(定制模型 – pdf_postprocessor_t5_base)
最后一步,我们使用一个模型对处理后的文本进行清理和优化,将其转换成 Markdown 格式,并保存到磁盘上。
您可以在 GitHub 页面 上找到 Marker 的官方安装指南。
要将 PDF 文件转换为 markdown 格式,您可以执行以下命令:
python convert_single.py --parallel_factor 2 --max_pages 10 input.pdf output.md
Ray 的官方定义是这样的:
Ray 是一个旨在扩展人工智能和 Python 应用的统一框架。它由一个核心的分布式运行环境和一系列用于加快机器学习工作的 AI 库组成。
如果你觉得这个定义有些晦涩,那你并不孤单。我深入研究了一番,才弄清楚为何在构建 AI/ML 驱动的软件时会用到 Ray。
最能说明 Ray 用途的例子,出自《用 Ray 扩展 Python》这本书。
简而言之,Ray 是一种加强版的多进程处理库。它不仅能并行处理数据列表,还能在多台远程机器上执行操作。因此,当你的 AI/ML 代码开始处理更多数据或追求更快的处理速度时,只需向系统中增加更多机器,就能将计算能力扩展到更多的机器和进程。
PyMuPDF 是一个快速且功能强大的用于创建和处理 PDF 文件的库。在 Marker 项目中,PyMuPDF 被用作初步处理的第一步。
如果输入的文档格式是 epub 或 mobi,我们会用 PyMuPDF 把它转换成 PDF 文件。
每一页都通过 PyMuPDF 的数据结构来访问和展现。
如果文档不需要进行 OCR,且已经包含了嵌入式文本,我们还会用 PyMuPDF 直接从 PDF 中提取文本内容。
Nougat 是一款基于 Transformer 技术的生成式 AI 模型,专门用于将扫描版和数字原生的 PDF 文件转化为文本格式。
这里所说的数字原生 PDF,指的是那些虽以 PDF 形式存在,但其实质是图像形式展现的文本或内容,而非直接可被机器读取的文字。
Nougat 在识别文档中的方程式图像并将其转换为有效的 LaTeX 代码这一任务上表现出色。
以这张图为例:
Nougat 能够将这样的图像精准地转换成如下 LaTeX 代码:
The well known Pythagorean theorem $x^2 + y^2 = z^2$ was
proved to be invalid for other exponents.
Meaning the next equation has no integer solutions:
$ x^n + y^n = z^n $
Nougat 还能用流行的 Markdown 格式来构建文档的整体结构,同时将公式部分精确转换成 LaTeX 代码。
LayoutLMv3 是一种基于 Transformer 技术的视觉模型 (ViT),是 LayoutLMv2 和 LayoutLM 的升级版。
这一新版采用了基于 Transformer 的多模态设计,这意味着,它可以同时理解图像和文本,使用诸如 Patch Embedding,Masked Image Modeling 和 Word-Patch 对齐等技术。在本文中,我们不会深入讨论如何进行训练的技术细节。
首先,重要的是要理解 LayoutLMv3 是一个功能强大的框架,它能够处理众多与文本和图像相关的任务,包括:
表单理解
文档摘要
文档分类
文档问题解答
场景理解
文档内的对象检测
列检测
以及更多
在 Marker,我们特别利用 LayoutLMv3 来识别各类文档元素,如段落、图表、表格、公式等,并用于文档中列顺序的确定。
T5,又名 文本到文本转换 Transformer(Text-to-Text Transfer Transformer),是 Google AI 研发的一款强大的 AI/ML 模型。它专门设计用于文本间的转换任务,非常适合我们进行文本内容的后期处理。
T5 和 LayoutLMv3 一样,是一个用于处理文本操作任务的统一框架。Marker 利用其专门开发的 PDF 后处理模型对提取的完整文本进行细致的优化:
清除之前阶段的干扰字符: 通常 OCR 等步骤会引入不必要的噪声字符,这些字符与原文内容无关。
内容美化或整理: Markup 功能能去除无用的缩进、空格等,使元素周围更整洁。
保留原始含义: Marker 在进行修改时非常谨慎,只对最显而易见的错误进行更正,以维护原始文件的完整性。
详细的 性能基准测试结果 可以在 Marker 的仓库中找到。以下是关于速度、准确性和内存使用情况的快速概览:
Marker 的准确性与 nougat 相当。 虽然 nougat 在处理科学论文方面略胜一筹,但总体上,nougat 和 marker 的准确性分别为 65% 和 63%。相比之下,原生的 get text 方法的准确性仅为 28%。
在处理页面/文档方面Maker 的处理速度是 nougat 的大约 10 倍。nougat 处理每页大约需 3 秒,而 Marker 仅需大约 0.3 秒。
Marker 平均每项任务需要大约 2 GB VRAM。 假设使用 A6000 GPU,平均可以同时处理 24 个文档。
对于数字原生的 PDF 文件,Marker 展现出了极佳的处理能力。这里所说的“数字原生”,指的是通过 latex 制作的 PDF 文件。同样,在处理各种高品质的扫描文档方面,它也有不俗的表现。但在尝试阅读来自 archive.org 的一本古老书籍时,它似乎遇到了难题。与之形成对比的是,像 Amazon Textract 或 Azure Document AI 这样的商业级解决方案几乎可以完美处理这类文档。
虽然明显地,像 Marker 这样的开源文档 AI 要想赶上商业级解决方案,还有很长的路要走,但与过去的方案相比,Marker 为自由开源软件(FOSS)的文档 AI 领域做出了重要贡献。因此,我们应该对 Marker PDF 的创作者Vikas Paruchur表示感谢。谢谢你,Vikas!
相关知识
携手火山引擎,易点天下AI布局加速拓展
那些年曾经看过的书——工作篇
AI解析:探索各种花卉特征与识别技巧——全方位解答你对花的疑问
探索物联网新境界:基于STM32F407与SX1262的LoRa驱动开发资源
产学专家共探AI驱动下的产业高质量发展|新浪新闻探索大会
AI驱动的智能虫情测报系统:精准农业的新篇章
AI赋能精准农业:从作物生长监测到病虫害防治的革新之旅
探索植物模型AI生成:主流软件盘点与功能比较指南
“真AI牛奶,真AI创意” 2024 AIGC视频生态创新大赛正式启动
ai生成景观设的软件有哪些:好用工具一览
网址: 深入探索:AI 驱动的 PDF 布局检测引擎源代码解析 https://m.huajiangbk.com/newsview546764.html
上一篇: 花盆土壤“没营养”?自制3种肥料 |
下一篇: 家庭养兰快用无土栽培,只要做好这 |