乐于分享
好东西不私藏

Firecrawl开源了两个Rust文档解析库:anydoc和pdf-inspector,主打轻量、快速

Firecrawl开源了两个Rust文档解析库:anydoc和pdf-inspector,主打轻量、快速
大家好,我是小码,本文分享最近 #Firecrawl 开源的两个文档解析类项目,主打轻量、快速。
Firecrawl是老牌网络爬虫项目了,适用于大规模的网络爬取、抓取,并提供丰富的API接口,详细可以看:
https://github.com/firecrawl/firecrawl
我在几年前开源了个AI搜索的项目曾经使用过它,也适用于现在Agent时代,有Skills、CLI等方式,不再赘述。
它最近接连开源了两个文档解析项目:
anydoc:将 Word、PowerPoint、Excel、OpenDocument、RTF、EPUB、CSV 和 PDF 转换为干净的 Markdown。使用 Rust 构建,提供 Node.js 和 Python 绑定。(anydoc包含pdf-inspector
// anydoc 8.7k https://github.com/firecrawl/anydoc
pdf-inspector:用于 PDF 检查、分类和文本提取的快速 Rust 库。智能识别扫描版与文本型 PDF,以实现智能路由决策。
// pdf-inspector 13k https://github.com/firecrawl/pdf-inspector
文档解析是我们做RAG知识库类应用最常用的模块,特别是OCR是其中的核心能力,但是firecrawl的这两个库主打还是轻量和速度,主要任务是提取出干净的文本(Markdown格式)

pdf-inspector

名字叫“PDF-检查器”,名字不是Convert或者OCR什么的,主打PDF的文件探测:分类、文本提取。

可以智能检测 PDF 是基于文本的还是扫描的,提取带位置感知的文本,并转换为干净的 Markdown,没有OCR、不需要推理模型。
它还可以识别、提取文本型PDF的表格和图像。
基准测试信息:
看来它主打轻量、快速,默认不支持OCR,对标的不是MinerU/PaddleOCR这类高精度还原PDF的项目。
但是在RAG知识库类项目中它依然有价值:
  1. 不是所有PDF都是复杂布局的,还有一半是纯文本的可以基于它快速提取、分片等处理。
  2. 它的分类器把PDF分为TextBased、Scanned、ImageBased、Mixed四类,并给出置信度评分,这可以方便我们对文档分流处理。
项目基于Rust开发,解析速度极快,可在200ms内在本地处理基于文本的 PDF,项目包含 Python、Node.js 和浏览器 WebAssembly 的绑定,可以快速接入项目。

可以方便的接入Node.js、Python、Rust类应用,或者自行实现自己语言的绑定。Node.js示例:

npm install @firecrawl/pdf-inspector
import { readFileSync } from 'fs';import { processPdf, classifyPdf } from '@firecrawl/pdf-inspector';const result = processPdf(readFileSync('document.pdf'));console.log(result.pdfType);   // "TextBased", "Scanned", "ImageBased", "Mixed"console.log(result.markdown);  // Markdown string or null

anydoc

#anydoc 主要处理Word(.doc、.docx、.docm)、PowerPoint、Excel、OpenDocument、RTF、EPUB、CSV 和 PDF 等十四种输入格式。不支持OCR。

它优先使用文件内容而不是文件扩展名来识别文件类型,CSV没有格式签名,则主要使用扩展名。识别后通过格式解析器转为Document模型,然后转为Markdown。

// 非PDF处理流程 文档字节  -> 内容签名识别  -> 对应格式解析器  -> 共享 Document 模型  -> 统一 GFM 序列化器  -> Markdown

对,它也能处理PDF,是通过上面的pdf-inspector直接转成Markdown文件。

anydoc 支持标题、链接、列表、表格、引文、脚注、代码块和内嵌资产等文档结构,带有外部URL的图片会转成Markdown图片格式;其他嵌入对象的原始字节保留在 Document 模型中,Markdown 中使用替代文本。
安装使用:
npx @firecrawl/anydoc report.docxnpx @firecrawl/anydoc slides.pptx -o slides.mdnpx @firecrawl/anydoc - --format csv < data.csv
支持Node.js、Python、Rust、浏览器(WebAssembly)以及CLI使用方式,Node.js集成示例:
import { toMarkdown, toMarkdownBytes } from "@firecrawl/anydoc";const report = await toMarkdown("report.docx");const fromBytes = await toMarkdownBytes(bytes);const csv = await toMarkdownBytes(csvBytes, "csv");

适合场景

anydoc解析是包含pdf-inspector的,所以在全文档解析场景中,只要安装anydoc就可以了。如果需要pdf分类探测、路由这类业务,则需要将pdf-inspector作为专项接口调用。
总体来看,这两个项目基本覆盖了主流的文档类型,适合轻量的#RAG知识库系统、或者RAG知识库中的分流处理。也适合Agent应用开发来处理文档解析。
官方提供的skills可以直接应用到codex等agent中:
https://github.com/firecrawl/anydoc/blob/main/skills/convert-documents-to-markdown/SKILL.md

感谢阅读!

你的关注、点赞、转发、收藏是我持续更新的动力!