mcpField
D
doc-extract

doc-extract

github.com/anthropics文档处理43199 次安装9 周前更新
代码仓库

关于 doc-extract

doc-extract 是无状态的文档转文本技能,将文件内容以 JSON 输出到标准输出,不写入磁盘。它适合需要在本地提取文档文本的其他技能,并提供页码锚点和实际使用的提取器信息。

主要功能

  1. 01从文档提取文本并输出 JSON
  2. 02支持 PDF、DOCX、XLSX、PPTX 和 RTF
  3. 03为分页文档添加页码锚点
  4. 04支持通过 MIME 类型指定文件格式
  5. 05可在 Bun TypeScript 中导入提取函数

适用场景

  1. 01提取医疗文档附件中的文本
  2. 02为后续技能提供带页码的文档内容
  3. 03在 Bun TypeScript 项目中复用提取逻辑

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/anthropics/healthcare --skill doc-extract

安装后在 Claude Code 中输入/doc-extract确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.gitignore
.npmrc
package.json
tsconfig.json
scripts/
decoders.mjs
extract.ts

详细介绍

doc-extract

共享的文档转文本提取工具。一个脚本,无状态:读取输入文件,将 JSON 输出到 stdout,不向磁盘写入任何内容(安全处理 PHI——不使用缓存或临时文件;缓存由调用方负责)。

设置(仅需一次)

cd <this skill dir> && bun install

这会拉取 liteparse(lit 可执行文件,用于处理 PDF/DOCX/XLSX/PPTX,并包含 OCR)和 rtf-to-text(用于 RTF)。如果没有安装,且系统已安装 poppler,PDF 仍可通过 pdftotext -layout 回退方案处理;其他二进制格式则需要 liteparse。

使用

bun <this skill dir>/scripts/extract.ts <input-file> [--content-type <mime>]

stdout 输出:

{ "text": "...", "method": "liteparse | pdftotext | rtf-to-text | passthrough", "pages": 12 }
  • 对于分页格式,text 会标注页码:每页之间有 === [page N] === 标记。
  • 存在页码标记时会包含 pages。
  • method 表示实际用于生成文本的提取器。
  • 格式根据文件扩展名确定;当文件没有有用的扩展名时(例如下载的 EHR 附件),请传入 --content-type(如 application/pdf)。请注意,liteparse 不接受没有扩展名的文件,因此这类 PDF 会通过 pdftotext 回退方案处理。
  • 出错时会将 {"error": "..."} 输出到 stderr,并以 1 退出。

表格注意事项

在提取的文本中,包含多个数值列的表格(选项 A 与选项 B、网络内与网络外)可能会逐行交错排列:相邻单元格的片段会交替出现,一个单元格的文本甚至可能落在相邻列的句子中间。数值通常不会丢失,但数值所属的列可能变得模糊。如果答案来自多列中的某一列,且文档其他位置没有重复说明该数值,请直接阅读原始页面进行核实,再将其视为可靠事实。提取文本中的 === [page N] === 标记会指出页码:将其传给 Read 工具的 pages 参数(例如 pages: "37"),即可只将该页渲染为图像供视觉查看,而非渲染整份文档。

用于其他技能

如果已经在 bun TS 中,请导入函数,而不是通过 shell 调用:

import { extract, resolveLit } from "../doc-extract/scripts/extract";
const lit = resolveLit([myRoot]); // also checks myRoot/node_modules/.bin/lit
const text = extract(lit, "/path/to/file.pdf"); // string | null

contracts 技能以这种方式使用它(其摄取缓存由 contracts 侧负责)。

评论

支持 Markdown