AnyDoc 开源文档转换工具:一键将 Word、PDF、PPT 本地转换为 Markdown,无缝接入 Obsidian 与 AI 工作流

如果平时喜欢用 Obsidian 或者各类 Markdown 文件来保存自己资料的小伙伴,大概都会遇到一个问题:自己的笔记可以尽量使用 Markdown 来保存,但别人发来的东西,就由不得自己了,格式会千奇百怪了,而且很多历史遗留下来的归档文件也是各种格式。

比方说,Word 文档、 Excel 表格、几十页的 PPT,最常见的可能还是 PDF 文件。倒不是说不能打开它们,但是想把内容放进同一个笔记库,用来进行搜索、引用、修改,或者让 AI 来处理,就需要折腾一轮格式。而且即使 AI 能直接读取这些格式,效率也会大打折扣。

而这其中大多数都只是有结构性的文字材料而已,Markdown 完全可以胜任替换。

现在,Firecrawl 出了一款开源的 AnyDoc,带来了一个实用的文档转换功能:把 Word、Excel、PowerPoint、EPUB、PDF 等文档转换成 Markdown,方便后续处理。

对我个人来说,那些散落在文件夹里、只能偶尔打开看看的文档资料,有机会重新进入我们日常使用的工作流和笔记库中了。这对于 AI 搜索笔记也是极大的方便。

AnyDoc 支持哪些文件转换为 Markdown

AnyDoc 以 Rust 编写,采用 MIT 许可证,提供了浏览器、命令行以及不同编程语言的入口。

它的输入格式也相当实用。如果平时保存的资料当中有很多来自「上古时代」的遗产数据,这就用得上了。它支持的文件格式包括:

  • 现代 Office 文档:常见的 .docx、.xlsx、.pptx
  • 老式 Office 文档:传统的 .doc、.xls、.ppt
  • 其他常见文档与电子书格式:OpenDocument、RTF、EPUB、CSV 和 PDF

我们知道,Markdown 并不能完全映射 Office 文档,所以转换结果中,虽然标题还是标题,列表还是列表,表格也能尽量保持行列关系,但也仅限于基本内容的准确性,肯定不能保证所有格式,尤其是一些 Office 专有功能的完整展现。什么 PPT 的动画、Excel 的交互计算、Word 的精细版式,仍然需要打开原来的文件才能展现。

不过这也足够了,我的主要目的也只是对基本内容进行文本转换,变成可检索的格式而已。也正因如此,我会把转换结果当成一份方便阅读和加工的副本,而原件则继续保留。

这对于批量整理尤其有用。假如每一种文件都用不同工具转换,最后得到的标题、表格、链接写法也可能各有习惯。等到资料汇总时,还得再做数据清洗。AnyDoc 的统一转换输出至少就能减少这一层麻烦。

最容易上手的方式:浏览器里的本地转换

AnyDoc文档转换工具网页界面,支持将Word、PowerPoint、Excel和PDF转换为Markdown,并提供文件拖放上传区域。

是不是听起来很矛盾?又是浏览器,又是本地。

但实际上,有很多产品已经采用了这种「看似矛盾」的方式,浏览器只是下载了一段代码而已,真正运行的数据还是在你本地存储。具体来说,它使用了 WebAssembly,把格式转换程序放到浏览器的「虚拟机」中运行。

对于偶尔转换几份资料,可以先打开 AnyDoc 官网。网页加载转换组件后,就可以选择文件,查看结果,再复制内容或下载 .md 文件。页面还提供 RTF 和 CSV 示例,手边即使没有文档也能先可立刻看下输出的效果。

对于只临时想把一份 Word 转成 Markdown、放进笔记库的人,这个入口已经足够方便了。

PDF 转 Markdown,有潜在的麻烦

大多数 PDF 其实就像是一个标准的普通文档,转换也不费什么劲。但是,有些 PDF 文档其中夹杂的是扫描图像,但看起来像是普通的文字文档;还有一些文档中复合了一些复杂的表格或公式之类的内容,或者嵌入了一些其他格式的媒体。

一般对于嵌入扫描文字图片的 PDF,有专门的 OCR 转换工具来处理。AnyDoc 目前可以在本地轻松处理有可用文字层的 PDF。对于需要 OCR 的页面,本地转换器本身不提供 OCR,需要外接 OCR 插件才能执行。AnyDoc 接口提供可选的托管 OCR 服务。

提示文件转换失败:第1-2、7、28、60、72、81、104、141、168、182、194、202、216、230、241、247、301、322、324、334、353、384、438、450、467、550、602、607、635、640、658、670页(共696页)需要OCR。

需要注意的是,一旦使用外部 OCR 服务,文档就会上传到远程的服务器,从而脱离你的本地处理。

让 AI Agent 和 CLI 用 AnyDoc 读取 Word 和 PPT

AnyDoc 提供了一个 Agent Skill。它的作用,是告诉 AI 客户端,在需要读取办公文档时怎样调用转换工具。官方给出的安装入口是:

npx skills add firecrawl/anydoc

这个 Skill 最终使用的是 AnyDoc 命令行;如果你本来就愿意使用命令行,也可以直接用命令转换:

npx @firecrawl/anydoc report.docx -o report.md
npx @firecrawl/anydoc slides.pptx -o slides.md

第一次运行需要下载相应程序包,准备好依赖后,普通文档的转换在本地完成。

这种命令接口的好处,完全符合我一直提倡的「工具链」思路,转换工具只负责转换,也可以嵌入工作流,和其它环节组合,完成某个工作任务。

比如,可以给 AI 一个具体任务,读取这些转换后的资料,找出几份不同来源或格式方案之间的共同要求,把分歧单独列出,并标明来自哪份文件。其中,前置环节由 AnyDoc 解析文件,转换成 Markdown,然后,AI 进行分析和比较,并将其中不同之处用 Markdown 输出。

最后:AnyDoc 本地转换体验与评测

AnyDoc 把很多原本停留在附件或者是归档文件夹里的内容,变成了可以继续使用的文本。

我这里已经做了一些转换,由于是本地处理,速度还是很快的:

  • 处理速度极快:一般的 Office 文档几乎在一秒内完成。30 MB 的 PDF 也就用了 1~2 秒左右。
  • PDF 扫描件需注意:当然 PDF 有多种问题,前面也说过了。尤其是其中嵌入含有需要 OCR 的图片、扫描件时尤其要注意。
  • 表格排版受限:还有就是表格的排版,受限于 Markdown 本身限制,也不能期待太高。
  • 电子书耗时略长:如果是一本书(EPUB)的转换,速度明显慢于 PDF(同等大小要慢几倍),有时要好几秒,另外还要注意一些书籍排版格式(页脚之类的格式)。

总的来说,AnyDoc 是一款轻量快速的 Markdown 文字转换工具,特别适合将历史材料转换后加入笔记库,供检索或 AI 处理。如果想要注重阅读体验,那还是要依赖于原文档格式,大家各取所需吧。

AnyDoc 官网地址

https://firecrawl.github.io/anydoc


✨欢迎订阅「效率火箭」,我们不发每日资讯轰炸,只精选生产力工具报道。

订阅后,新文章将第一时间发送到您的邮箱。您也可获得所有订阅用户专属材料。随时可退订。

Comments

发表回复