> ## Documentation Index
> Fetch the complete documentation index at: https://docs.firecrawl.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# 文档解析

> 了解文档解析功能。

Firecrawl 提供强大的文档解析能力，支持从多种文档 formats 中提取结构化内容。该功能对处理电子表格、Word 文档等文件尤其实用。

<div id="supported-document-formats">
  ## 支持的文档格式
</div>

Firecrawl 目前支持以下文档 formats：

* **Excel 电子表格** (`.xlsx`、`.xls`)
  * 每个工作表会转换为一个 HTML 表格
  * 不同工作表以带有工作表名称的 H2 标题分隔
  * 保留单元格格式和数据类型

* **Word 文档** (`.docx`、`.doc`、`.odt`、`.rtf`)
  * 在保留文档结构的同时提取文本内容
  * 保留标题、段落、列表和表格
  * 保留基础格式与样式

* **PDF 文档** (`.pdf`)
  * 提取包含布局信息的文本内容
  * 保留包括章节与段落在内的文档结构
  * 支持处理基于文本的 PDF 和扫描版 PDF (含 OCR)
  * 支持通过 `mode` 选项控制解析策略：`fast` (仅文本) 、`auto` (文本并在需要时回退到 OCR，默认) 、`ocr` (强制使用 OCR)
  * 费用为每页 1 个积分。详情请参阅 [Pricing](https://firecrawl.dev/pricing)。

<div id="pdf-parsing-modes">
  ### PDF 解析模式
</div>

使用 `parsers` 选项来控制 PDF 的解析方式：

| Mode   | Description                                    |
| ------ | ---------------------------------------------- |
| `auto` | 优先尝试快速的文本解析，如有需要会回退到 OCR。这是默认模式。               |
| `fast` | 仅进行基于文本的解析（嵌入文本）。这是最快的选项，但无法从扫描件或图片较多的页面中提取文本。 |
| `ocr`  | 对每一页都强制使用 OCR 解析。适用于扫描文档，或在 `auto` 误判页面类型时使用。  |

```js theme={null}
// 带模式的对象语法
parsers: [{ type: "pdf", mode: "ocr", maxPages: 20 }]

// 默认（自动模式）
parsers: [{ type: "pdf" }]
```

<div id="how-to-use-document-parsing">
  ## 如何使用文档解析
</div>

Firecrawl 的文档解析支持两种方式：

1. **基于 URL 的解析 (`/v2/scrape`)**：提供一个指向受支持文档类型的 URL。
2. **文件上传解析 (`/v2/parse`)**：使用 `multipart/form-data` 直接上传文件字节流。

对于基于 URL 的解析，Firecrawl 会根据文件扩展名或内容类型自动识别文件类型。

<div id="upload-documents-with-v2parse">
  ### 使用 `/v2/parse` 上传文档
</div>

当源文档存储在本地，或无法通过公开 URL 访问时，请使用 `/v2/parse`。

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://api.firecrawl.dev/v2/parse" \
    -H "Authorization: Bearer fc-YOUR-API-KEY" \
    -F 'options={"formats":["markdown"]}' \
    -F "file=@./document.docx;type=application/vnd.openxmlformats-officedocument.wordprocessingml.document"
  ```

  ```js Node theme={null}
  import { Firecrawl } from "firecrawl";

  const app = new Firecrawl({ apiKey: "fc-YOUR-API-KEY" });

  const doc = await app.parse(
    {
      data: "<html><body><h1>Upload Parse</h1></body></html>",
      filename: "upload.html",
      contentType: "text/html",
    },
    { formats: ["markdown"] },
  );

  console.log(doc.markdown);
  ```

  ```python Python theme={null}
  from firecrawl import Firecrawl
  from firecrawl.v2.types import ScrapeOptions

  app = Firecrawl(api_key="fc-YOUR-API-KEY")
  doc = app.parse(
      b"<!DOCTYPE html><html><body><h1>Upload Parse</h1></body></html>",
      filename="upload.html",
      content_type="text/html",
      options=ScrapeOptions(formats=["markdown"]),
  )
  print(doc.markdown)
  ```
</CodeGroup>

<div id="example-scraping-an-excel-file">
  ### 示例：爬取 Excel 文件
</div>

```js Node theme={null}
import { Firecrawl } from 'firecrawl';

const firecrawl = new Firecrawl({
  // 无需 API 密钥即可开始使用 — 添加一个以获得更高的限流额度：
  // apiKey: "fc-YOUR-API-KEY",
});

const doc = await firecrawl.scrape('https://example.com/data.xlsx');

console.log(doc.markdown);
```

<div id="example-scraping-a-word-document">
  ### 示例：抓取 Word 文档
</div>

```js Node theme={null}
import { Firecrawl } from 'firecrawl';

const firecrawl = new Firecrawl({
  // 无需 API 密钥即可开始使用 — 添加一个以获得更高的限流额度：
  // apiKey: "fc-YOUR-API-KEY",
});

const doc = await firecrawl.scrape('https://example.com/data.docx');

console.log(doc.markdown);
```

<div id="output-format">
  ## 输出格式
</div>

所有受支持的文档类型都会转换为简洁、结构化的 Markdown。比如，一个包含多个工作表的 Excel 文件可能会被转换为：

```markdown theme={null}
## 工作表1

| 名称  | 数值 |
|-------|-------|
| 项目 1 | 100   |
| 项目 2 | 200   |

## 工作表2

| 日期       | 描述  |
|------------|--------------|
| 2023-01-01 | 第一季度|
```

> 你是需要 Firecrawl API 密钥的 AI 代理吗？请参见 [firecrawl.dev/agent-onboarding/SKILL.md](https://www.firecrawl.dev/agent-onboarding/SKILL.md) 了解自动化接入说明。
