Hermes 现在能读 PDF、Word、Excel、EPUB、RTF 文档了:一份实用指南

让 AI 读一份文档,听起来是件小事,做起来却常常很烦:PDF 要转文本、Word 要装解析库、老旧的 RTF 和 EPUB 几乎找不到现成工具。你的第一个念头往往是“先把内容复制粘贴进聊天框”——遇到几十页的报告、带格式的合同、上百行的报表,这条路立刻走不通。
Hermes Agent 刚刚把这件事变成了一个命令的事。read_file 这个最常用的工具,现在能直接读取 PDF、Word、Excel、EPUB、RTF 等十余种文档格式,并把它们转成干净的 Markdown 交给模型阅读。本文基于最新上游代码实测梳理:支持哪些格式、底层怎么工作、扫描件怎么办、以及每类文档的真实使用场景。
一句话总结
read_file 内置支持三种格式的自动提取:Jupyter 笔记本(.ipynb)、Word(.docx)、Excel(.xlsx)——不需要任何额外依赖。
在此基础上,Hermes 引入了可选依赖 firecrawl-anydoc(Rust 内核,导入名为 anydoc),把覆盖面扩展到 PDF、旧版 Office(.doc/.ppt/.xls)、OpenDocument(.odt/.ods/.odp)、RTF、EPUB,统一转换为 Markdown。安装后,读取这些格式与读取普通文本文件没有任何区别。
支持格式全景
| 类别 | 格式 | 提取方式 |
|---|---|---|
| 笔记本 | .ipynb |
内置(stdlib,无依赖) |
| Word | .docx |
内置(stdlib,无依赖) |
| Excel | .xlsx |
内置(stdlib,无依赖) |
.pdf |
anydoc(可选) | |
| 旧版 Office | .doc .docm .ppt .pps .pot .pptx .pptm .ppsx .ppsm .xls .xlsm .xlsb |
anydoc(可选) |
| OpenDocument | .odt .ods .odp |
anydoc(可选) |
| RTF | .rtf |
anydoc(可选) |
| EPUB | .epub |
anydoc(可选) |
注意一个设计细节:内置提取器对 .docx/.xlsx 始终优先。即使安装了 anydoc,这两个格式仍走标准库路径,保证有没有 anydoc 行为完全一致。
怎么用:直接 read_file 就行
对用户来说没有任何新命令、新参数。给 read_file 一个文档路径即可:
read_file(path="/tmp/quarterly-report.pdf")
返回的内容是带行号的 Markdown 文本,和其他文件一样支持 offset/limit 分页、字符预算截断、敏感信息脱敏。超大文档会被截断到单次读取预算内,并提示你用 offset 继续读——和读普通大文件完全一致。
懒安装:读取时自动装,不会卡住
anydoc 不是硬依赖。它通过 lazy_deps 机制注册为 tool.doc_extract(firecrawl-anydoc==0.1.6),在第一次读取此类文件时才自动安装,且安装过程 prompt=False——read_file 永远不会因为等待确认而阻塞。
如果安装失败或文件损坏,anydoc 的 ConvertError 会被映射为 ExtractionError,read_file 回退到普通的路径/二进制处理,而不是报错崩溃。加密文档、损坏的 PDF、空的 EPUB 都会走这条安全回退路径。
实测样例
以一份真实的 DOCX 合同为例,内置提取器解析 word/document.xml 中的段落与文本节点,输出:
1|Quarterly report: revenue up 23%
2|Second paragraph with contract terms.
表格、换行、制表符都会保留;XLSX 则按 Sheet 输出,隐藏工作表会被跳过:
1|# ── Sheet: Q1 ──
2|region revenue growth
3|APAC $12.4M 18%
4|EMEA $9.1M 12%
扫描件怎么办:OCR 路径
文本型 PDF 直接提取没问题,但扫描件(图片型 PDF)需要 OCR。这种情况下 read_file 的内置/anydoc 路径解不出文字,正确的做法是用 ocr-and-documents skill(随 Hermes 默认安装,v2.3.0)。
该 skill 提供两个本地提取器:
| 能力 | pymupdf(轻量) | marker-pdf(高质量) |
|---|---|---|
| 文本型 PDF | ✅ | ✅ |
| 扫描件 OCR | ❌ | ✅(90+ 语言) |
| 表格 | ✅(基础) | ✅(高精度) |
| 公式 / LaTeX | ❌ | ✅ |
| 代码块 / 表单 | ❌ | ✅ |
| 阅读顺序检测 | ❌ | ✅ |
| EPUB | ✅ | ✅ |
| 安装体积 | ~25MB | ~3-5GB |
| 速度 | 即时 | ~1-14 秒/页(CPU) |
pip install pymupdf pymupdf4llm
python scripts/extract_pymupdf.py scanned.pdf --markdown
URL 文档:web_extract 是首选
如果文档在网络上(arXiv 论文、公司报告、公开 PDF),先试 web_extract——它通过 Firecrawl 做 PDF 转 Markdown,不需要本地任何依赖:
web_extract(urls=["https://arxiv.org/pdf/2402.03300"])
只有当文件在本地、web_extract 失败、或需要批量处理时,才走本地提取。三条路径的取舍非常清晰:URL 用 web_extract,本地文本文档用 read_file,扫描件/复杂排版用 ocr-and-documents。
真实场景
场景一:审合同(Word / RTF)
把 contract.docx 或老旧的 contract.rtf 直接喂给 read_file,让模型提取关键条款、标注风险点、对比两版差异。RTF 是老企业内部最常见的历史格式,现在终于不用先手动转成 DOCX 了。
场景二:读报表(Excel)
read_file 把 .xlsx 按 Sheet 输出为表格文本,模型可以直接计算合计、识别异常值、生成分析摘要。隐藏 Sheet 自动跳过,不会把内部工作区漏给模型。
场景三:批量分析 PDF
把一摞 PDF 报告路径列表交给 Hermes,让它逐份 read_file 并汇总。配合 execute_code 脚本遍历目录,几十份文档的摘要工作可以在一次会话里完成。
场景四:读电子书(EPUB)
EPUB 是标准电子书格式。把一本 .epub 交给 Hermes,可以总结章节、提取观点、整理书摘——anydoc 和 marker-pdf 都支持 EPUB。
场景五:科研论文
文本型论文直接 read_file;扫描版走 ocr-and-documents 的 marker-pdf;有 URL 则用 web_extract。三条路径覆盖了从 PDF 下载到精读的全流程。
升级与可用性
这个功能分为两层:
- 内置三件套(.ipynb/.docx/.xlsx):自 2026 年 6 月起随 Hermes 提供,
hermes update到任意较新版本即可使用。 - anydoc 扩展(PDF/旧版 Office/ODF/RTF/EPUB):由提交
b2598b41e(2026-08-05 合入 upstream main)引入,属于 v0.20.0 之后的最新能力,尚未随正式版本发布。通过hermes update拉到最新 main 后即可体验;安装 anydoc 后读取此类文件会自动触发懒安装。
小结
| 文件在哪里 | 用什么 | 依赖 |
|---|---|---|
| 本地,.ipynb/.docx/.xlsx | read_file |
无 |
| 本地,PDF/旧版 Office/ODF/RTF/EPUB | read_file + anydoc |
自动懒安装 |
| 本地,扫描件/复杂排版 | ocr-and-documents skill |
pymupdf 或 marker-pdf |
| 网络 URL | web_extract |
无 |
文档读取是 AI Agent 最基础也最容易被低估的能力。Hermes 把这条链路打通成“一个命令”,并且用懒安装把可选能力的门槛降到了零——下次遇到 PDF 合同、Excel 报表或 EPUB 电子书,直接读就好,不用再复制粘贴了。
想继续探索 Hermes 的文件与数据能力?可以看看我们的生产力技巧合集、存储空间优化指南,或者通过安装指南把最新版 Hermes 跑起来。