news 2026/10/16 6:03:57

anymd 四大核心工具解析:outline、read、search、inspect 参数详解与组合用法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
anymd 四大核心工具解析:outline、read、search、inspect 参数详解与组合用法
  • 人工智能
  • 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.

项目地址:https://gitcode.com/gh_mirrors/pdfr/anymd
点击查看免费下载

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 / 目录 → Markdownsource精读某一章节或页码
search跨文件、跨目录、跨 URL 找文本query在几十份合同里找关键词
inspectPDF 深度操作:渲染、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返回缩进树
ocrfalse对纯扫描页启用本地 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_tokens20000预算用完即停,末尾给出 cursor
cursor–用上一次返回的游标续读
ocr自动扫描页与图片的本地 OCR
revisions"markup"Word 修订:markup标注 /accept/reject
images"refs"内嵌图片存缓存并在 Markdown 中占位
transcriptfalse音视频用内置 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 个
modeautoauto先精确匹配、失败再按 BM25 排序段落;literal仅精确;ranked纯 BM25
glob–目录内按模式过滤,如"*.pdf"
case_sensitive/whole_wordfalse区分大小写 / 整词匹配
max_results20最大命中数(1–500)
context_chars80每侧上下文长度(0–1000)

最妙的是auto模式:你甚至不用知道确切措辞。比如问"双向预训练是怎么工作的",即使原文里一个字都不匹配,BM25 排序也能把正确页找出来。而且每条命中都带outline的节点 ID 和标题路径,可以直接接力read。

anymd search "indemnification" contracts/ --glob '*.pdf' anymd search "how is attention scaled" papers/ --mode ranked --max 5

inspect: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? }数组
profilestructure专用:fast(默认)/quality/research
scale渲染缩放(0.25–4),用于render_page/extract_regions
include_image是否在响应里带上渲染出的 PNG
ocr/languagesOCR 引擎与语言(如["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 页论文里提取某表并核对数据"为例:

  1. 导航:outline拿到章节树,发现"实验"在n1.4(第 7–9 页)
  2. 精读:{ "source": "paper.pdf", "node": "n1.4" }只读这一节,token 消耗只有全文的 1/5
  3. 查证:对拿不准的数字,用inspect+render_page渲染对应页,或structure拿表格的坐标化结构
  4. 兜底:如果连章节都没找到,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.

项目地址:https://gitcode.com/gh_mirrors/pdfr/anymd
点击查看免费下载
上一篇:CodeMaker:让Java开发者告别重复编码的终极解决方案
下一篇:番茄小说下载器完整指南:打造你的个人数字图书馆

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/16 6:02:41

PHP代码审计实战:老建站系统SQL注入与安全加固

简介&#xff1a;ZZCMS 8.3 是一套广泛使用的内容管理系统&#xff0c;其开源源码为代码审计与 PHP 架构学习提供了极佳的实战样本&#xff0c;既适合网站开发者、安全测试人员&#xff0c;也适合想深入理解 CMS 底层机制以及具备一定 PHP 基础、期望从实例中掌握安全最佳实践的…

作者头像 李华
网站建设 2026/10/16 6:01:18

AI工具越多越难选?四步筛选法帮你从大海捞针到精准定向

前阵子有位做内容的朋友在群里问&#xff1a;"想找个AI工具&#xff0c;把访谈录音自动整理成带重点的会议纪要&#xff0c;有没有推荐的&#xff1f;"十分钟内他收到了二十多个答案&#xff1a;有人推专门的音视频转写平台&#xff0c;有人让他直接用大模型对话处理…

作者头像 李华
网站建设 2026/10/16 6:00:18

Vue3 PDF预览弱网白屏:缓存命中引发的组件竞态排查与修复

做PDF预览功能的那几天&#xff0c;我一直有个错觉&#xff1a;只要在普通网络下把组件跑通&#xff0c;弱网环境无非就是慢一点。后来我发现完全不是这么回事。某次我把浏览器开发者工具里的网络切到节流模式&#xff0c;再刷新页面&#xff0c;vue3-pdf-app这个内部组件直接卡…

作者头像 李华
网站建设 2026/10/16 5:59:56

Buzz 语音转文字:3 步装好的避坑指南

Buzz 语音转文字&#xff1a;3 步装好的避坑指南 【免费下载链接】buzz Buzz transcribes and translates audio offline on your personal computer. Powered by OpenAIs Whisper. 项目地址: https://gitcode.com/GitHub_Trending/buz/buzz Buzz 是一款离线语音转文字工…

作者头像 李华
网站建设 2026/10/16 5:59:56

OpenLayers点要素创建全流程:从几何、样式到坐标系避坑指南

直接说结论&#xff1a;在 OpenLayers 里&#xff0c;"创建要素"这事本身并不难&#xff0c;难的是你创建完之后它不显示、显示位置不对、样式丑、点不中、属性拿不到。我见过太多人卡在这几个环节&#xff0c;明明代码照着写了&#xff0c;地图上就是什么都没有。这…

作者头像 李华