# @fastgpt-sdk/anydoc 中文文档

规范地址：https://npmcn.com/package/%40fastgpt-sdk/anydoc/

版本：0\.2\.5
npm 元数据更新时间：2026-08-30T05:01:53.322Z
中文译文更新时间：2026-11-14T11:03:54.556Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40fastgpt-sdk/anydoc
原文对照：https://npmcn.com/package/%40fastgpt-sdk/anydoc/?lang=original
项目主页：https://github.com/c121914yu/anydoc#readme
源码仓库：https://github.com/c121914yu/anydoc

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：61 kB，7 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>= 20
- 运行依赖：0 个
- 首次发布：2026-08-30T05:01:52.731Z
- 最新版本发布：2026-08-30T05:01:53.080Z
- 近 30 天下载量：7405（2026-10-15 至 2026-11-13，npm 官方下载统计）
- 已发布版本数：1（近 12 个月 1 个）

## 中文简介

将文档( doc, docx, odt, rtf, epub, pdf, 演示文稿, 电子表格, csv) 转换为 GitHub- Flavored Markdown

## 安装

```sh
npm install @fastgpt-sdk/anydoc
```

也可以使用：`pnpm add @fastgpt-sdk/anydoc`、`yarn add @fastgpt-sdk/anydoc`、`bun add @fastgpt-sdk/anydoc`

## README

# @ fastgpt-sdk/ anydoc (英语)

[![npm](https://img.shields.io/npm/v/@fastgpt-sdk/anydoc.svg)](https://www.npmjs.com/package/@fastgpt-sdk/anydoc) [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/firecrawl/anydoc/blob/main/LICENSE)

将Word,PowerPoint,Excel,OpenDocument,RTF,EPUB,CSV等PDF文件转换为干净的GitHub-Flavored Markdown. 节点.js 绑定 [任何文件](https://github.com/firecrawl/anydoc) 破碎的箱子,建造于 [纵火](https://firecrawl.dev/)。也可以通过下列方式作为托管的API提供: [Firecrawl 解析](https://firecrawl.dev/parse),它增加了我们的OCR模型 扫描页 任何doc不能自己阅读.

每个格式都分为一个共享的文档模型,并通过一个单一的Markdown序列器来制作,所以标题,表格,列表和脚注无论采用哪种格式,都会出现相同的出处. 转换在 libuv 线程池上运行, 并且从不屏蔽事件循环 。 TypeScript 有包件的船型.

```bash
npm install @fastgpt-sdk/anydoc
```

## 支持的格式

| 格式 | 扩展 |
| --- | --- |
| 单词 | `.doc`, (中文(简体) ), `.docx`, (中文(简体) ), `.docm` |
| 电源点 | `.ppt`, (中文(简体) ), `.pps`, (中文(简体) ), `.pot`, (中文(简体) ), `.pptx`, (中文(简体) ), `.pptm`, (中文(简体) ), `.ppsx`, (中文(简体) ), `.ppsm` |
| 埃克塞尔 | `.xls`, (中文(简体) ), `.xlsx`, (中文(简体) ), `.xlsm`, (中文(简体) ), `.xlsb` |
| 打开文档 | `.odt`, (中文(简体) ), `.ods`, (中文(简体) ), `.odp` |
| 丰富的文本格式 | `.rtf` |
| 联布办事处 | `.epub` |
| 简历 | `.csv` |
| 专题报告 | `.pdf` |

## 国 际

包裹载着一个 `anydoc` 命令,所以 `npx` 转换未安装的文档 :

```bash
npx @fastgpt-sdk/anydoc report.docx               # Markdown to stdout
npx @fastgpt-sdk/anydoc slides.pptx -o slides.md  # or to a file
npx @fastgpt-sdk/anydoc - --format csv < data.csv # read stdin
npx @fastgpt-sdk/anydoc scan.pdf --ocr hosted     # scanned pages via Firecrawl Parse
```

Markdown去stdout, 错误stderr,和 `anydoc --help` 盖取其余.

## 使用量

```js
import { toDocument, toMarkdown, toMarkdownBytes } from '@fastgpt-sdk/anydoc';

// From a file path:
const markdown = await toMarkdown('report.docx');

// From bytes, with the format detected from the content:
const fromBytes = await toMarkdownBytes(bytes);

// Or name it, which signature-less formats (CSV) need:
const fromCsv = await toMarkdownBytes(bytes, 'csv');

// Preserve embedded images and their positions in the Markdown:
const { markdown, assets } = await toMarkdownBytes(bytes, 'doc', {
  embeddedImageMode: 'reference',
  maxImageBytes: 32 * 1024 * 1024,
  maxImageTotalBytes: 128 * 1024 * 1024,
});
// markdown contains ![alt](asset:0); assets contains { id: 0, mediaType, data, ... }.

// Or stop at the document model, which also carries embedded assets:
const document = await toDocument(bytes);
```

## 扫描页面

anydoc 本地转换而不进行 OCR,所以带有扫描或仅图像页面的 PDF 拒绝使用 `needsOcr`选择 `ocr: 'hosted'` 将该文件发送给 [Firecrawl 解析](https://firecrawl.dev/parse)。不需要注册。 设定 `apiKey` 或者说 `FIRECRAWL_API_KEY` 为了更高的限度.

```js
const markdown = await toMarkdown('scan.pdf', { ocr: 'hosted' });
```

关于CLI, `anydoc scan.pdf --ocr hosted`。 。 。 .

## 错误

转换只有在没有完整的Markdown出文件时才会拒绝. 拒绝是 `Error` 谁 `code` 出错的地方:

```js
try {
  return await toMarkdown(path);
} catch (error) {
  // No document comes out of these, so record the file and take the next one.
  if (error.code === 'encrypted' || error.code === 'unsupported') {
    unconverted.push({ path, reason: error.code });
    return null;
  }
  throw error;
}
```

| `code` | 含义 |
| --- | --- |
| `unsupported` | 未知格式, 或无法转换的格式 |
| `needsOcr` | 扫描或仅图像页 PDF,列表于 `pages` |
| `malformed` | 结构上无法使用:无法提取有意义的内容 |
| `encrypted` | 加密或密码保护 |
| `resourceLimit` | 跨越了固定的安全限制(减压、筑巢、节点计数) |
| `missingPart` | 缺少任何有意义的产出所需的部分 |
| `io` | 无法读取文件, 从 `toMarkdown` 仅限 |
| `hosted` | `ocr: 'hosted'` 无法通过 Firecrawl 解析获取文档 |

`error.message` 带有细节,将软件包部分命名为格式识别错误部分。 TypeScript 将联盟变为 `ConvertErrorCode`。 。 。 .

## 格式检测

该格式从文件内容读取,使用标记其规格指定:PDF头,RTF开放组,OLE流名,ZIP包mime类型和内容类型. CSV 没有这样的标记, 所以检测返回 `null` 对于它和扩展,或一种明确的格式,代之以命名.

```js
formatFromBytes(bytes); // 'docx', or null when nothing matches
formatFromExtension('.pptm'); // 'pptx'
formatFromPath('report.odt'); // 'odt'
```

## 图像和嵌入对象

默认情况下,一个嵌入式图像在字节保持时会作为其备选案文文本 `document.assets`。通过 `embeddedImageMode: 'reference'` 改为 `toMarkdown` 或者说 `toMarkdownBytes` 待收款项 `{ markdown, assets }`: Markdown 包含 `asset:<id>` 图像 URL 和 `assets` 包含相应的 `image/*` 字节. `maxImageBytes` 财务报告和审定财务报表 `maxImageTotalBytes` 将一个图像和所有图像分别封顶; 默认为128 MiB 并用 `resourceLimit` 当跨越。 非图像嵌入对象保持默认的备选案文行为. 带有外部 URL 的图像总是作为普通的 Markdown 图像来渲染 .

完整的行为说明和基准存在于 [仓库读取器](https://github.com/firecrawl/anydoc#readme)。 。 。 .

## 许可证

[麻省理工学院](https://github.com/firecrawl/anydoc/blob/main/LICENSE)

## 常见问题

### @fastgpt-sdk/anydoc 是什么？

将文档\( doc, docx, odt, rtf, epub, pdf, 演示文稿, 电子表格, csv\) 转换为 GitHub- Flavored Markdown

### 如何安装 @fastgpt-sdk/anydoc？

在项目目录运行 npm install @fastgpt-sdk/anydoc，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 anydoc，可以用 npx anydoc 直接运行。

### @fastgpt-sdk/anydoc 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @fastgpt-sdk/anydoc 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @fastgpt-sdk/anydoc 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>= 20。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @fastgpt-sdk/anydoc 可以商用吗？

@fastgpt-sdk/anydoc 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @fastgpt-sdk/anydoc 的下载量有多少？

根据 npm 官方下载统计，@fastgpt-sdk/anydoc 在 2026/10/15 – 2026/11/13 这 30 天内被下载 7,405 次，日均约 247 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @fastgpt-sdk/anydoc 还在维护吗？

最新版本 0\.2\.5 发布于 2026/08/30（2 个月前）；至今共发布 1 个版本，其中过去 12 个月发布了 1 个；首次发布于 2026/08/30。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

