# @docmost/pdf-inspector 中文文档

规范地址：https://npmcn.com/package/%40docmost/pdf-inspector/

版本：1\.9\.6
npm 元数据更新时间：2026-05-14T21:35:10.091Z
中文译文更新时间：2026-11-12T13:58:56.743Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40docmost/pdf-inspector
原文对照：https://npmcn.com/package/%40docmost/pdf-inspector/?lang=original
项目主页：https://github.com/docmost/pdf-inspector
源码仓库：https://github.com/docmost/pdf-inspector

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

- 包体积（解压后）：20.8 MB，8 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2026-04-30T16:48:24.094Z
- 最新版本发布：2026-05-14T21:35:09.787Z
- 近 30 天下载量：16070（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：4（近 12 个月 4 个）

## 中文简介

快速PDF分类,文本取出,和图像取出. 土生土长的表演方式是阿斯匹克.

## 安装

```sh
npm install @docmost/pdf-inspector
```

也可以使用：`pnpm add @docmost/pdf-inspector`、`yarn add @docmost/pdf-inspector`、`bun add @docmost/pdf-inspector`

## README

# PDF 检查员

快速的PDF分类,文本提取,以及Node.js/Bun的图像提取. 原始 Rust 表演通过 [美洲狮](https://napi.rs/)。 。 。 .

由 [纵火](https://firecrawl.dev/) 对于混合式OCR管线——尽可能从PDF结构中取出文本,只有在需要时才返回OCR.

## 安装

```bash
npm install firecrawl-pdf-inspector
# or
bun add firecrawl-pdf-inspector
```

包含预建二进制 **linux-x64**, (中文(简体) ), **linux- arm64 (英语)**, (中文(简体) ), **马科斯ARM64**,以及 **窗口-x64**不需要拉链.

## API 密码

### `processPdf(buffer: Buffer, pages?: number[]): PdfResult`

完整的PDF处理——在一次呼叫中进行分类,取出文本并转换为Markdown.

```typescript
import { processPdf } from 'firecrawl-pdf-inspector'
import { readFileSync } from 'fs'

const pdf = readFileSync('document.pdf')
const result = processPdf(pdf)

console.log(result.pdfType)    // "TextBased" | "Scanned" | "Mixed" | "ImageBased"
console.log(result.markdown)   // Markdown string or null
console.log(result.pageCount)  // 42
```

### `classifyPdf(buffer: Buffer): PdfClassification`

将 PDF 分类为基于文本、扫描、混合或基于图像(~10-50ms)。 返回需要OCR的页面.

```typescript
import { classifyPdf } from 'firecrawl-pdf-inspector'

const result = classifyPdf(readFileSync('document.pdf'))

console.log(result.pdfType)         // "TextBased" | "Scanned" | "Mixed" | "ImageBased"
console.log(result.pageCount)       // 42
console.log(result.pagesNeedingOcr) // [5, 12, 15] (0-indexed)
console.log(result.confidence)      // 0.875
```

### `processPdfWithImages(buffer: Buffer, pages?: number[]): PdfResultWithImages`

处理一个 PDF 并在一个呼叫中同时提取标记和图像 。 降标包含 `![image](pdf-image://N)` 占位符位于何处 `N` 是返回的索引 `images` 阵列.

```typescript
import { processPdfWithImages } from 'firecrawl-pdf-inspector'
import { readFileSync } from 'fs'

const result = processPdfWithImages(readFileSync('document.pdf'))

console.log(result.images.length)  // 110
console.log(result.markdown)       // "# Title\n\n![image](pdf-image://0)\n\nSome text..."

// Replace placeholders with real URLs after uploading
let content = result.markdown
for (let i = 0; i < result.images.length; i++) {
  const img = result.images[i]
  const ext = img.format === 'Jpeg' ? 'jpg' : 'png'
  const url = await uploadImage(img.data, `image-${i}.${ext}`)
  content = content.replace(`pdf-image://${i}`, url)
}
```

### `extractImages(buffer: Buffer): ExtractedImage[]`

从 PDF 提取嵌入式图像为原始字节 。 支持JPEG(DCTDecode)和PNG(FlateDecode)图像. 返回带有页面位置和尺寸的图像数据.

图像提取是一个与文本提取独立的函数——调用 `processPdf` 或者说 `extractText` 已经 **没有** 支付图像解压/编码的费用.

```typescript
import { extractImages } from 'firecrawl-pdf-inspector'
import { writeFileSync } from 'fs'

const images = extractImages(readFileSync('document.pdf'))

for (const img of images) {
  const ext = img.format === 'Jpeg' ? 'jpg' : 'png'
  writeFileSync(`page${img.page}_${img.width}x${img.height}.${ext}`, img.data)
  console.log(`Page ${img.page}: ${img.width}x${img.height} ${img.format}`)
}
```

### `extractTextInRegions(buffer: Buffer, pageRegions: PageRegions[]): PageRegionTexts[]`

从 PDF 从边框区域中提取文本。 为混合式OCR管道所设计,其中布局模型在渲染的页面图像中检测出区域,而此函数从PDF结构中提取出文本用于基于文本的页面——跳过GPU OCR.

每个区域的成果包括: `needsOcr` 表示不可靠提取的旗帜(空文本、GID编码字体、垃圾文本、编码问题).

```typescript
import { extractTextInRegions } from 'firecrawl-pdf-inspector'

const result = extractTextInRegions(pdf, [
  {
    page: 0, // 0-indexed
    regions: [
      [0, 0, 300, 400],    // [x1, y1, x2, y2] in PDF points, top-left origin
      [300, 0, 612, 400],
    ]
  }
])

for (const region of result[0].regions) {
  if (region.needsOcr) {
    // Unreliable text — send this region to OCR instead
  } else {
    console.log(region.text) // Extracted text in reading order
  }
}
```

### `extractText(buffer: Buffer): string`

从 PDF 中提取纯文本 .

```typescript
import { extractText } from 'firecrawl-pdf-inspector'

const text = extractText(readFileSync('document.pdf'))
```

## 类型

```typescript
interface PdfResult {
  pdfType: string          // "TextBased" | "Scanned" | "Mixed" | "ImageBased"
  markdown: string | null  // Markdown output
  pageCount: number
  processingTimeMs: number
  pagesNeedingOcr: number[] // 1-indexed page numbers
  title: string | null
  confidence: number        // 0.0 - 1.0
  isComplexLayout: boolean
  pagesWithTables: number[]
  pagesWithColumns: number[]
  hasEncodingIssues: boolean
}

// Extends PdfResult with extracted images
interface PdfResultWithImages extends PdfResult {
  images: ExtractedImage[]  // Indices match pdf-image://N placeholders in markdown
}

interface PdfClassification {
  pdfType: string          // "TextBased" | "Scanned" | "Mixed" | "ImageBased"
  pageCount: number
  pagesNeedingOcr: number[] // 0-indexed page numbers
  confidence: number        // 0.0 - 1.0
}

interface ExtractedImage {
  page: number              // 1-indexed page number
  x: number                 // X position on page
  y: number                 // Y position on page
  width: number             // Pixel width
  height: number            // Pixel height
  format: string            // "Jpeg" | "Png"
  data: Buffer              // Raw image bytes (valid JPEG or PNG file)
}

interface PageRegions {
  page: number              // 0-indexed
  regions: number[][]       // [[x1, y1, x2, y2], ...] in PDF points, top-left origin
}

interface PageRegionTexts {
  page: number
  regions: RegionText[]
}

interface RegionText {
  text: string
  needsOcr: boolean         // true when text is unreliable
}
```

## 支持的图像格式

| PDF 过滤器 | 输出格式 | 状态 |
| --- | --- | --- |
| DCTD编码 | JPEG 组合 | 支助 |
| 节点 | 巴布亚新几内亚 | 支助 |
| JPX 十进制 | JPEG 2000 主题 | 计划 |
| CCITTFax十进制 | TIFF 时长 | 计划 |

**颜色空格 :** 设备RGB,设备Gray,设备CMYK(被转换为RGB),索引,ICC Based,CalRGB,CalGray.

**说明:** 矢量图形(用 PDF 路径操作符绘制)不是光栅图像,不能被取出——它们需要渲染.

## 业绩

文本提取和图像提取是独立的路径. `processPdf` 财务报告和审定财务报表 `extractText` 全部跳过图像处理, 所以当您只需要文本时, 上面是零 .

## 平台

| 平台 | 建筑 | 支助 |
| --- | --- | --- |
| 链接 | x64 (韩语) | 对 |
| 链接 | 阿尔马-64 | 对 |
| 马科斯 | 阿尔马-64 | 对 |
| 窗口 | x64 (韩语) | 对 |

## 许可证

麻省理工学院

## 常见问题

### @docmost/pdf-inspector 是什么？

快速PDF分类,文本取出,和图像取出\. 土生土长的表演方式是阿斯匹克\.

### 如何安装 @docmost/pdf-inspector？

在项目目录运行 npm install @docmost/pdf-inspector，或使用 pnpm add / yarn add / bun add。

### @docmost/pdf-inspector 支持 TypeScript 吗？

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

### @docmost/pdf-inspector 支持 ESM 还是 CommonJS？

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

### @docmost/pdf-inspector 可以商用吗？

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

### @docmost/pdf-inspector 的下载量有多少？

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

### @docmost/pdf-inspector 还在维护吗？

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

