技能
邮件与工具 官方

PDF 阅读器

为容器化智能体添加 PDF 阅读功能。使用 pdftotext 从附件、URL 和本地文件中提取文本。

功能特性

  • 使用 pdftotext (poppler-utils) 从 PDF 中提取文本
  • 自动下载通过 WhatsApp 发送的 PDF 附件
  • 智能体可从 URL 获取并阅读 PDF
  • 读取挂载目录中的本地 PDF 文件
  • 通过 pdfinfo 获取页数和元数据

前置条件

  • 已安装并运行 NanoClaw
  • 已配置 WhatsApp 频道(用于附件支持)

安装

/add-pdf-reader

工作原理

/add-pdf-reader 技能赋予容器化智能体阅读 PDF 文档的能力。它会在容器内安装 poppler-utils(提供 pdftotextpdfinfo),并添加一个智能体可调用的 pdf-reader CLI 工具。

该技能支持三种场景:

WhatsApp 附件。 当有人在已注册的聊天中发送 PDF 时,NanoClaw 会检测到文档附件,将其下载到该群组的 attachments/ 目录,并提供给智能体使用。智能体随后可以提取并讨论其中的内容。

URL。 智能体可以使用 pdf-reader fetch <url> 从任意 URL 获取 PDF。文件会被下载到容器的工作目录并一步完成提取。

本地文件。 如果 PDF 存在于挂载目录中,智能体可以直接使用 pdf-reader 读取。这对于处理已在你机器上的文档非常方便。

智能体提取的内容

pdftotext 工具从 PDF 中提取文本内容,同时保留基本布局。它能够处理多栏布局、页眉页脚和嵌入字体。配套工具 pdfinfo 提供元数据:页数、标题、作者、创建日期和文件大小。

智能体通常会读取全文,然后根据你的提问做出回应——总结内容、回答相关问题,或提取特定信息。

局限性

该工具仅适用于基于文本的 PDF。扫描文档(页面为图像)使用 pdftotext 会输出空白或乱码内容。对于扫描版 PDF,智能体可以使用浏览器工具以可视化方式打开 PDF,但对于长文档来说可靠性较低。

不支持需要密码才能打开的加密 PDF。带有复制保护(no-extract 标志)的 PDF 可被 pdftotext 处理,但输出质量可能有所下降。

故障排除

智能体提示找不到 pdf-reader 命令。 需要重新构建容器。运行 ./container/build.sh 并重启服务。

PDF 文本提取结果为空。 该 PDF 很可能是扫描版(基于图像)。pdftotext 仅处理基于文本的 PDF。尝试让智能体改用浏览器工具打开。

WhatsApp PDF 未被检测到。 消息必须包含 documentMessagemimetype: application/pdf。某些应用发送 PDF 时使用通用文件附件格式而非正确的 MIME 类型,频道适配器将无法识别其为 PDF。

使用技巧

  • 智能体在遇到 PDF 时会自动使用 pdf-reader,无需你指定使用哪个工具。
  • 对于非常长的 PDF,智能体会提取全部文本但可能以摘要形式呈现,而非引用完整文档。提出具体问题可以从内容中获得精确答案。
  • pdf-reader 工具在容器内运行,因此只能访问挂载目录中的文件或智能体自行下载的文件。