- 人工智能
- AI 应用
- MCP 服务
- RAG
- OCR
【免费下载链接】anymd
Any file → clean Markdown for AI agents: PDF, Word, PowerPoint, Excel, EPUB, HTML and web pages, images (OCR), audio and video (metadata, subtitles, transcripts). A fast Rust MCP server and CLI that runs on your machine. No API key.
anymd 是一个用 Rust 编写的本地文件解析工具,能把 PDF、Word、PPT、Excel、EPUB、HTML 乃至图片、音视频快速转成干净的 Markdown,供 AI Agent 使用。它通过 4 个核心工具完成工作:outline(文档目录)、read(转 Markdown)、search(全文搜索)、inspect(PDF 深度操作)。本文详解这 4 个工具的参数与组合用法,全程无需 API Key。
30 秒认识 anymd:为什么是这四个工具?
AI 处理长文档时,最常见的痛点是"一次读完整个 PDF,上下文爆炸"。anymd 的解法是把"读文件"拆成四个可组合的动作,让 Agent(或你)先导航、再精读、后查证:
| 工具 | 一句话用途 | 必填参数 | 典型场景 |
|---|---|---|---|
outline | 获取文档标题树,不用模型 | source | 先看目录,定位章节 |
read | 文件 / URL / 目录 → Markdown | source | 精读某一章节或页码 |
search | 跨文件、跨目录、跨 URL 找文本 | query | 在几十份合同里找关键词 |
inspect | PDF 深度操作:渲染、OCR、结构、对比 | operation、sources | 渲染页图、核对引用位置 |
完整参数文档见 docs/guide/tools.md,CLI 用法见 docs/guide/cli.md。
outline:先读目录,再读正文(零模型消耗)
outline的价值在于便宜:它不花任何 token,就能告诉你文档"有哪些章节、各在哪些页"。
- PDF:优先用书签(书签),没有书签则用排版引擎检测的标题
- Word用标题,PPT用幻灯片,EPUB用 EPUB 3 目录(或 EPUB 2 NCX),HTML/Markdown用标题
- 没有标题的文档会返回按页/张切分的单元节点
参数一览:
| 参数 | 默认值 | 说明 |
|---|---|---|
source | 必填 | 文件路径或 http(s) URL |
format | "json" | json返回带节点 ID 的前序节点,tree返回缩进树 |
ocr | false | 对纯扫描页启用本地 OCR(auto/vlm/tesseract) |
images | "none" | 是否处理内嵌图片引用 |
revisions | "markup" | Word 修订模式,与read保持一致 |
每个节点带id(如n1.2)、title、level、from/to(页码范围)、children。ID 是确定的:同一文档多次调用结果一致,方便你记住"上次看到 n1.2"。
命令行里同样好使:
anymd outline report.pdf # 缩进树,肉眼可读 anymd outline report.pdf --format json # JSON 节点,供程序使用实现细节在 crates/anymd/src/outline.rs。
read:把任意文件变成干净的 Markdown
read是 anymd 的主力工具:一个参数source就能开工,接受文件路径、URL 或目录。
核心参数:
| 参数 | 默认值 | 说明 |
|---|---|---|
source | 必填 | 文件、URL 或目录(目录返回可读文件列表) |
node | – | 读取outline给的章节 ID(含子章节),如"n1.2" |
pages | 全部 | 页码/张/表/章,如"1-5,8" |
max_tokens | 20000 | 预算用完即停,末尾给出 cursor |
cursor | – | 用上一次返回的游标续读 |
ocr | 自动 | 扫描页与图片的本地 OCR |
revisions | "markup" | Word 修订:markup标注 /accept/reject |
images | "refs" | 内嵌图片存缓存并在 Markdown 中占位 |
transcript | false | 音视频用内置 Qwen3-ASR 转写 |
分页机制值得记住:文档超过max_tokens时,read会在页/张/章边界停下,并在末尾写一行"Continue with cursor"。把游标原样传回去即可续读,也可以改用pages只读需要的部分。
{ "source": "papers/attention.pdf" }--- source: papers/attention.pdf title: Attention Is All You Need pages: 15 showing: pages 1-9 --- <!-- page 1 --> # Attention Is All You Need ...一个实用的细节:对扫描页(没有文本层的页),read不会假装读到了空内容,而是明确告诉你"这是扫描件",并提示运行anymd setup ocr启用本地 OCR——文档始终留在你机器上,不会偷偷下载模型。
anymd book.pdf --max-tokens 8000 # 读到预算为止,末尾给出 cursor: "42" anymd book.pdf --max-tokens 8000 --cursor 42 # 从第 42 页继续search:在几十个文件里精准定位关键词
search一次最多搜 256 个来源(文件、目录、URL),目录会递归搜索并尊重.gitignore,每次命中一行,附带页码和上下文片段。
参数一览:
| 参数 | 默认值 | 说明 |
|---|---|---|
query | 必填 | 要查找的文本 |
sources | 当前目录 | 文件 / 目录 / URL,最多 256 个 |
mode | auto | auto先精确匹配、失败再按 BM25 排序段落;literal仅精确;ranked纯 BM25 |
glob | – | 目录内按模式过滤,如"*.pdf" |
case_sensitive/whole_word | false | 区分大小写 / 整词匹配 |
max_results | 20 | 最大命中数(1–500) |
context_chars | 80 | 每侧上下文长度(0–1000) |
最妙的是auto模式:你甚至不用知道确切措辞。比如问"双向预训练是怎么工作的",即使原文里一个字都不匹配,BM25 排序也能把正确页找出来。而且每条命中都带outline的节点 ID 和标题路径,可以直接接力read。
anymd search "indemnification" contracts/ --glob '*.pdf' anymd search "how is attention scaled" papers/ --mode ranked --max 5inspect:PDF 深度操作的瑞士军刀
inspect返回 JSON,专门服务那些需要几何坐标、图片或差异而不是正文的场景。它靠operation切换 8 种操作:
| operation | 做什么 |
|---|---|
inspect | 页数、元数据、每页事实 |
render_page | 把指定页渲染成 PNG |
extract_regions | 从渲染页中裁出指定区域(bounding box) |
ocr_pages | 用本地 OCR 识别指定页 |
analyze_regions | 把区域发给已配置的视觉服务 |
structure | 结构化 JSON:文档地图、元素、几何、表格 |
compare | 两份本地 PDF 的逐页文本 diff |
cite_check | (Pro)核对某段引用是否真实出现在指定页和坐标内 |
关键参数:
| 参数 | 说明 |
|---|---|
operation | 必填,上表之一 |
sources | 必填,{ path \| url, pages?, regions? }数组 |
profile | structure专用:fast(默认)/quality/research |
scale | 渲染缩放(0.25–4),用于render_page/extract_regions |
include_image | 是否在响应里带上渲染出的 PNG |
ocr/languages | OCR 引擎与语言(如["eng", "chi_tra"]) |
{ "operation": "render_page", "sources": [{ "path": "report.pdf", "pages": [3] }], "scale": 2 }{ "operation": "structure", "sources": [{ "path": "report.pdf" }], "profile": "quality" }{ "operation": "compare", "sources": [{ "path": "contract-v1.pdf" }, { "path": "contract-v2.pdf" }] }其中compare对合同审查特别顺手:同一份合同两个版本,一条命令出逐页 diff。cite_check属于 anymd Pro(见 docs/guide/cite-check.md),可以无模型校验"这句话真的出现在第 3 页这个框里吗",防止 Agent 编造引用。
组合用法:一套高效的"长文档工作流"
单独用每个工具都不难,组合起来才是 anymd 的设计初衷。以"从 15 页论文里提取某表并核对数据"为例:
- 导航:
outline拿到章节树,发现"实验"在n1.4(第 7–9 页) - 精读:
{ "source": "paper.pdf", "node": "n1.4" }只读这一节,token 消耗只有全文的 1/5 - 查证:对拿不准的数字,用
inspect+render_page渲染对应页,或structure拿表格的坐标化结构 - 兜底:如果连章节都没找到,
search用ranked模式按语义把正确页捞出来,再用node接力精读
anymd outline report.pdf # 第 1 步:看目录 anymd report.pdf --node n1.2 # 第 2 步:只读一节 anymd report.pdf --node n1.2 --cursor 4:1200 # 节内继续这套"目录 → 章节 → 搜索 → 取证"的链路,把 Agent 读长文档的成本从"全文进上下文"降到了"按需取片段",这正是 anymd 主打token-lean的原因。更多组合样例可直接查看 examples/ 目录(如 examples/search-then-verify.json、examples/inspect-structure.json)。
常见问题速答
- 需要 API Key 或联网吗?不需要。四个工具全部本地运行,OCR 也是本地引擎(需一次性
anymd setup ocr)。 - MCP 和 CLI 是两套东西吗?不是,同一个二进制:
anpx -y @sylphx/anymd既是 CLI 也是 MCP 服务器,工具名与参数完全一致。 - 搜索大小写敏感吗?默认不敏感,
case_sensitive: true或-w(整词)可控制。 - Word 修订怎么处理?
read的revisions参数:默认markup保留标注,accept/reject直接给接受或拒绝后的文本。
延伸阅读
- 工具参数完整文档:docs/guide/tools.md
- CLI 与本地 OCR:docs/guide/cli.md
- 引用核对(Pro):docs/guide/cite-check.md
- 各格式(Word/PPT/EPUB/音视频)行为:docs/guide/formats.md
- 工具入口实现:crates/anymd/src/tool_routes.rs、crates/anymd/src/outline.rs
- 基准测试:bench/README.md
掌握outline、read、search、inspect这四个工具的参数与接力方式,你就拥有了让 Agent 高效、低成本读遍一切文件的能力——且所有数据都不离开你的机器。
- 人工智能
- AI 应用
- MCP 服务
- RAG
- OCR
【免费下载链接】anymd
Any file → clean Markdown for AI agents: PDF, Word, PowerPoint, Excel, EPUB, HTML and web pages, images (OCR), audio and video (metadata, subtitles, transcripts). A fast Rust MCP server and CLI that runs on your machine. No API key.
相关推荐
Lark Python 解析工具包 API 参考:核心类、方法与实践用法详解
Lark Python 解析工具包 API 参考:核心类、方法与实践用法详解 本文以仓库 docs/classes.rst https://link.gitco
开发工具Manticore Search 核心配置参数详解:Common 模块
Manticore Search 核心配置参数详解:Common 模块 引言 Manticore Search 作为一款高性能的开源搜索引擎,其配置系统的灵活性
搜索引擎数据库全文检索后端XenonRecomp项目结构解析:四大核心组件功能详解
XenonRecomp项目结构解析:四大核心组件功能详解 XenonRecomp是一个强大的Xbox 360游戏重编译工具,能够将Xbox 360可执行文件转换
开发工具
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考