大约一个月前在这里讨论过Docling(https://www.reddit.com/r/LocalLLaMA/comments/1ghbmoq/docling_is_a_new_library_from_ibm_that/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button),但我想基于今天安装的三个用于转换PDF的包补充一些观察结果。
我的当前选择:docling
对我来说,docling似乎效果最好,在github上活跃度很高;marker也非常好,但不如docling,排第二;markitdown就比较差,排第三。
更多细节和github链接:
marker于2023年10月首次提交(https://github.com/VikParuchuri/marker)
Docling于2024年7月首次提交(https://github.com/DS4SD/docling)。此外,[IBM在这里对其一些独特部分做了很好的阐述](https://research.ibm.com/blog/docling-generative -AI)
Markitdown于2024年11月首次提交(https://github.com/microsoft/markitdown)
测试过程:
我使用多操作系统,但我在Win11环境下的Powershell中运行所有PDF,所以我只在Win11 Pro中启动这些包。Marker和Docling需要pytorch,它不能在python 3.13下运行,所以我将python版本切换到3.10.5。Markitdown在3.13.1下运行良好,因为它似乎不使用pytorch,这意味着它不调用本地AI(据我所知)。
虽然我有配备Cuda的台式机,但我只加载了pytorch的CPU版本来获取初步结果。
Markdown似乎有一个选项可以让你插入AI密钥,它将处理图像并在你正在处理的文件中返回图像的描述。我没有验证这个功能。
我给这三个包都提供了两份PDF文件,都约25页,充满表格和图表。
结果呢?
Docling和marker都很慢。有Cuda层的专用台式机可能会有很大帮助。但如果忽略处理时间,我看到如下情况。
Docling确实做得很好。它对表格的格式化最好,并且将PNG嵌入到最终的.md文件中。虽然简单地链接到图像更节省空间,但这意味着你不能简单地发送一个.md文件去处理,因为没有图像指针它会丢失图像。我一直喜欢嵌入的方式,这样所有信息都在一个文件中处理。然而,当你将图像编码为ASCII插入时,文件会增大。图表越多,文件越大。我提供给docling的报告每页都有图形页脚,所以我有25个相同图像被嵌入。从PDF到docling文件的大小增长约50%。而且,PNG文件虽好,但体积大。
作为背景知识,当docling嵌入文件时,它将二进制数据流转换为8位ASCII字符集。然而,由于历史原因,我们没有一致地使用ASCII的额外两位。所以,为了安全起见,ASCII数据流只使用可用8位中的6位,这意味着由于嵌入,你的图像将增大33%。
如果你实际上有带有压缩功能的正确后端存储,你可以在物理介质上恢复这个问题。然而,这是一个很大的假设,对于大多数试图用LLM训练或使用它的本地用户来说,你只会看到这是浪费空间。然而,在未来,通过正确的架构总是有机会恢复由于ASCII编码导致的图像膨胀。
Docling的处理速度慢,当它遇到PDF中不喜欢的一些内容时会发出警告。我曾担心转换会失败,但最终产品看起来不错。所以,它是雷声大雨点小。
我给所有包的第二份PDF中有很多图表,图表是两列并排布局。我们阅读大多数文档都是横向阅读页面,所以这给所有脚本都带来了一些问题。然而,虽然docling没有正确排序,但它基本上确保了如果原始PDF中有信息,它会将其放在最终.md文件的某个地方。我认为这是一个积极的方面。
Marker排第二,它创建了一个单独的.md文件和一堆.md文件链接的jpg图形文件。他们还创建了一个单独的JSON文件来跟踪转换后的文件。与docling不同,它会重复使用图形,因此文件大小与原始PDF大致相同。表格格式良好,但不如docling。例如,当遇到多列页面时,它会出错并遗漏文本。它还错误地切割了一个图表,导致顶部缺失,而docling能捕捉到整个图形。
Marker在将表格图形转换为文本方面做得很好。Docling没有尝试转换表格,只是将其作为图形粘贴。表格节省了空间,这很好,但也失去了表格原有的颜色,这是有一定价值的。测试后,很明显docling捕获的数据更多。
Markitdown是最差的。它没有生成任何表格,并且没有正确格式化文本。它看起来像一个Tesseract OCR文件,没有格式。它太差了,我开始查看Markitdown的源代码。我还没有进行详尽的查看,但如果我正确阅读源代码,PDF转换可能只是调用PDFminer,它在处理表格方面做得不好。然而,我还没有进行详尽的代码审查,欢迎指正。
更糟糕的是,它在两份PDF中的一份遇到了某种转换问题,然后就停止了。其他脚本没有这个问题。
最终想法:
Docling是我的选择。遗憾的是marker是一个完全独立的代码库,要是能看到两者结合就好了。在我看来,IBM已经很好地扩大了他们的咨询基础,docling可能会作为他们的摄入引擎。如果是这样的话,那么docling应该会有一些强劲的开发活动。
Docling最大的缺点是PNG文件的嵌入和图像增长,如果你有很多图表,这就是个问题。然而,编写一个小的python实用程序来遍历你的.md文件并将PNG转换为webp进行永久存储应该是一个非常小的项目。这将大大降低图形占用的存储量。或者,如果你只有很少或没有图形,它的影响就会小一些。
另一方面,我多年的开发经验告诉我,指针在数据结构中总是一个弱点。你以为你知道发生了什么,但系统受到冲击,你就会丢失指针表或者它被打乱。一旦你嵌入你的图像,它就会和文件一起被提取,我认为这在抗脆弱性方面是一个巨大的收益。所以,对我来说,抗脆弱性方面的优势超过了图像大小的增加。
讨论总结
原帖作者对docling、marker和markitdown三个PDF转Markdown工具进行了测试比较,推荐docling。评论者们在回复中提出了其他工具如GROBID、minerU,有人分享了自己在使用docling、marker、minerU等工具时遇到的问题,包括安装、转换效果、速度等方面,还有人对markitdown表示批评,认为其被炒作。此外,也有评论者提出新的问题,如公式转换效果、在Facebook Nougat上的性能、扫描版PDF的转换情况、docx到Markdown的转换工具等,整体讨论氛围比较积极,大家分享自己的观点和经验。
主要观点
- 👍 docling是较好的PDF转Markdown工具
- 支持理由:原帖作者测试后认为它在表格格式化、信息保留方面表现较好;部分评论者也表示docling更健壮、质量可以接受。
- 反对声音:有评论者指出docling在解析html文件时会出错、速度慢、文件大小增长等问题。
- 🔥 存在其他可用于PDF转Markdown的工具
- 正方观点:评论者提到了minerU、GROBID等工具,且有人表示minerU在测试复杂文件时与docling相当。
- 反方观点:无(未出现明显反对提及新工具的观点)
- 💡 markitdown表现差且被炒作
- 解释:有评论者认为它是个差劲的项目,查看源代码发现其PDF转换只是简单调用pdfminer,却因微软名号被炒作。
金句与有趣评论
- “😂 There’s another one called minerU. I have tried those three and decided to go simple OCR or just let AI make it for me.”
- 亮点:提出了minerU这个工具,并表明自己的选择倾向。
- “🤔 我几个月前就从marker切换到docling了,因为在我的观察中docling更健壮,质量也可以接受。”
- 亮点:表达了从marker切换到docling的原因,支持docling。
- “👀 Nice to see other people realize that markitdown is a lame of a project that was just hype by « tech influencer » because of the « microsoft/»”
- 亮点:直接指出markitdown被炒作且表现差。
情感分析
总体情感倾向是积极的,大部分评论者对原帖作者的分享表示感谢或者认同其对docling的推荐。主要分歧点在于docling是否真的是最好的工具,可能的原因是不同用户有不同的使用场景和需求,在不同场景下各工具的表现不同。
趋势与预测
- 新兴话题:docx到Markdown的转换工具、PDF转Markdown中公式转换效果与Mathpix的比较。
- 潜在影响:如果有更多关于这些新兴话题的讨论,可能会促使相关工具开发者改进功能或者推出新的工具来满足需求。
详细内容:
《PDF 转 Markdown 转换器大比拼:初步结果及讨论》
近日,Reddit 上一篇关于 PDF 转 Markdown 转换器的帖子引发了广泛关注,获得了众多点赞和大量评论。原帖作者分享了自己安装并测试三个转换器(docling、marker 和 markitdown)的经历。
在讨论中,主要观点如下: 有人认为 docling 表现最佳,其在 GitHub 上活动活跃,能很好地格式化表格并嵌入 PNG 图片,但存在处理速度慢和文件体积增大的问题。有人提到 marker 也不错,能生成单独的.md 文件和相关图形文件,文件大小与原始 PDF 相近,但在处理多列页面时会出错。而 markitdown 则被普遍认为表现最差,无法生成表格,文本格式也不正确。
有用户提出 GROBID 怎么样;还有人推荐了 minerU,并表示其存在段落顺序或缺失段落的问题,但可能已解决。有人分享几个月前从 marker 切换到 docling 的原因是其更强大、质量可接受,而 marker 会在某些 PDF 上出现错误。
也有人对 Docling 的模块安装问题、处理公式的效果、在特定使用场景下的表现、速度改进等方面提出疑问和讨论。还有人探讨了是否有 docx 转 Markdown 转换器。
讨论中的共识是目前没有完美的转换器。特别有见地的观点如指出指针在数据结构中可能是薄弱点,嵌入图像虽增加文件大小但保证了数据完整性。
总之,虽然不同转换器各有优缺点,但 docling 成为了很多人的选择,不过其仍有需要改进的地方。
感谢您的耐心阅读!来选个表情,或者留个评论吧!