---
title: pp-ocrv5-ch
canonical_url: "https://www.modelscope.cn/models/farming789/pp-ocrv5-ch"
md_url: "https://www.modelscope.cn/models/farming789/pp-ocrv5-ch.md"
repository: farming789/pp-ocrv5-ch
chinese_name: "OCR 识别 ONNX 模型包"
last_updated: 2026-05-16
license: apache-2.0
library_name:
  - onnx
  - other
frameworks:
  - other
language:
  - zh
  - en
  - ja
downloads: 11
stars: 2
tags:
  - pp-ocrv5
  - paddleocr
  - onnx
  - ocr
  - text-recognition
  - text-detection
  - chinese-ocr
  - legal-document
  - mobile-model
---

# pp-ocrv5-ch

> pp-ocrv5-ch - farming789 在 ModelScope 开源的模型。本模型源自百度 **PaddleOCR** 的 **[PP-OCRv5](https://github.com/PaddlePaddle/PaddleOCR)** 第五代中文光学字符识别系统，已转换为 **ONNX** 格式，专为**离线本地推理**场景优化。

farming789/pp-ocrv5-ch 是 ModelScope 魔搭社区上的机器学习模型，采用 apache-2.0 许可。

- **Repository**: farming789/pp-ocrv5-ch
- **License**: apache-2.0
- **Tags**: pp-ocrv5, paddleocr, onnx, ocr, text-recognition, text-detection, chinese-ocr, legal-document, mobile-model
- **Downloads**: 11
- **Stars**: 2
- **Last updated**: 2026-05-16

Source: https://www.modelscope.cn/models/farming789/pp-ocrv5-ch

---

# PP-OCRv5 Chinese ——  OCR 识别 ONNX 模型包

## 模型简介

本模型源自百度 **PaddleOCR** 的 **[PP-OCRv5](https://github.com/PaddlePaddle/PaddleOCR)** 第五代中文光学字符识别系统，已转换为 **ONNX** 格式，专为**离线本地推理**场景优化。

PP-OCRv5 采用经典的 **检测 → 识别** 两阶段架构，能够在纯 CPU 环境下高效运行。本仓库提供完整的模型包（检测模型 + 识别模型 + 字符字典），覆盖简体中文、繁体中文、英文、日文等语言。

**核心价值**：在无 GPU 的桌面 / 边缘设备上，以高精度（字符级准确率 ≥ 95%）将扫描件、手机拍照件、传真件等图像转化为可检索、可分析的文本，打通文档数字化到知识检索的完整链路。

---

## 模型文件

| 文件 | 大小 | 说明 |
|------|------|------|
| `model.onnx` | ~5 MB | 文本检测模型 — 定位图中文字区域（PP-OCRv5_mobile_det） |
| `recognition.onnx` | ~30 MB | 文本识别模型 — 读取框内文字（PP-OCRv5_mobile_rec） |
| `dictionary.txt` | ~1 MB | 字符字典 — 识别结果到字符的映射表 |

> **注意**：三个文件必须放在同一目录下。检测模型负责"找到文字在哪"，识别模型负责"读出写的是什么"，字典负责将识别模型的输出 ID 转换为可读字符。

---

## 模型架构

- **基础模型**：PP-OCRv5（百度 PaddleOCR 第 5 代）
- **架构方案**：MobileNetV3 骨干 + DB 检测头 + CRNN 识别头
- **版本**：5.0.0（mobile 版，CPU 友好）
- **支持语言**：简体中文、繁体中文、英文、日文
- **总大小**：约 50 MB
- **运行环境**：ONNX Runtime CPU（无 GPU 依赖）
- **图像预处理引擎**：OpenCV（`ppu-ocv`）或 Canvas Native 回退

### 两阶段工作流程

```
输入图像（任意尺寸）
    │
    ▼
┌─────────────────────────────────────────┐
│ 阶段 1：文本检测（model.onnx）            │
│  输入: RGB 图像                          │
│  输出: 文本框坐标 [多个多边形]            │
│  模型: PP-OCRv5_mobile_det（DB 算法）     │
└─────────────┬───────────────────────────┘
              │ 逐框裁剪
              ▼
┌─────────────────────────────────────────┐
│ 阶段 2：文本识别（recognition.onnx）      │
│  输入: 每个裁剪出的文本框图像             │
│  字典: dictionary.txt                    │
│  输出: 逐个框内文字                       │
│  模型: PP-OCRv5_mobile_rec（CRNN）        │
└─────────────┬───────────────────────────┘
              ▼
结构化识别结果: {
  text: "合同编号：2024-001\n甲方：张三\n...",
  blocks: [...],     // 文字块级坐标
  confidence: 0.92,  // 平均置信度
}
```

---

## 快速开始

### 环境要求

- `onnxruntime` >= 1.24.3
- Node.js 端：`ppu-paddle-ocr` >= 5.1.1
- Python 端：`onnxruntime` + `opencv-python`（需自行实现 DB 后处理 / CTC 解码）

### TypeScript / Node.js 示例（推荐）

```typescript
import { PaddleOcrService } from "ppu-paddle-ocr";

// 1. 加载本地模型
const service = new PaddleOcrService({
  model: {
    detection: "./pp-ocrv5-ch/model.onnx",           // 检测模型
    recognition: "./pp-ocrv5-ch/recognition.onnx",    // 识别模型
    charactersDictionary: "./pp-ocrv5-ch/dictionary.txt",  // 字典
  },
  processing: {
    engine: "opencv",  // 或 "canvas-native"
  },
  session: {
    executionProviders: ["cpu"],
    graphOptimizationLevel: "all",
  },
});

// 2. 初始化（首次加载模型，耗时约 2-5 秒）
await service.initialize();
console.log("初始化状态:", service.isInitialized());

// 3. 识别图像
const result = await service.recognize("./contract-scan.png");
// 或传入 ArrayBuffer
// const result = await service.recognize(imageBuffer);

console.log("识别文本:", result.text);
console.log("置信度:", result.confidence);
console.log("文字块数:", result.blocks?.length ?? 0);

// 4. 释放资源
await service.destroy();
```

### Python 示例

```python
import onnxruntime as ort
import cv2
import numpy as np

# 注意：以下为最小示例，仅演示 ONNX 模型加载。
# 完整的 DB 后处理 + CTC 解码逻辑较复杂，推荐使用 PaddleOCR 官方 Python SDK。

# 1. 加载检测模型
det_session = ort.InferenceSession("./pp-ocrv5-ch/model.onnx")

# 2. 加载识别模型
rec_session = ort.InferenceSession("./pp-ocrv5-ch/recognition.onnx")

# 3. 加载字典
with open("./pp-ocrv5-ch/dictionary.txt", "r", encoding="utf-8") as f:
    char_dict = [line.strip() for line in f]

# 4. 预处理图像并执行检测
img = cv2.imread("document.jpg")
# ... 预处理 + DB 后处理（省略，详见 PaddleOCR 源码）
# det_outputs = det_session.run(None, {"x": input_tensor})
# boxes = db_postprocess(det_outputs)

# 5. 逐框识别
# for box in boxes:
#     crop = crop_image(img, box)
#     rec_outputs = rec_session.run(None, {"x": crop_tensor})
#     text = ctc_decode(rec_outputs, char_dict)

print("完整 Python OCR 管道请参考 PaddleOCR 官方文档")
```

---

## 应用场景

### 文书数字化

- **扫描件 OCR**：律所扫描的合同、判决书、起诉状、证据清单等批量数字化
- **拍照件识别**：律师手机拍摄的案卷材料、庭审记录即时转文字
- **传真件提取**：法院传真送达的文书自动化处理
- **PDF 图像页 OCR**：PDF 中扫描图像页（非文本层）的文字提取

### 知识索引前置

本模型是知识库索引管线的核心组件，输出文本后续进入：

```
OCR 文本 → 文本规范化 → 智能分块 → 向量编码 → LanceDB 检索
```

### 降级策略

模型不可用时系统自动跳过 OCR，不影响 PDF 原生文本提取路径：

```
OCR 模型可用 → 方向矫正 → 检测 → 识别 → 结构化文本
OCR 模型不可用 → 仅提取 PDF 原生文本层（如有）
```

---

## 技术细节

### PP-OCRv5 技术特性

- **MobileNetV3 骨干**：针对 ARM / x86 CPU 深度优化，推理速度比 ResNet 系列快 3-5 倍
- **DB（Differentiable Binarization）检测**：端到端可微分二值化，对弯曲文本、密集文本适应性强
- **CRNN + CTC 识别**：无需字符级标注，序列到序列识别，支持长文本行
- **Mobile 版**：模型参数量仅约 12M（检测 + 识别合计），启动内存低

### 与官方 Paddle 模型的关系

| 方面 | 官方 Paddle 模型 | 本模型 (ONNX) |
|------|:---------------:|:------------:|
| 检测模型 | PP-OCRv5_mobile_det | model.onnx |
| 识别模型 | PP-OCRv5_mobile_rec | recognition.onnx |
| 字典 | ppocrv5_dict.txt | dictionary.txt |
| 运行时 | PaddlePaddle (~500MB) | ONNX Runtime (~30MB) |
| GPU | 支持 CUDA | CPU only |
| 预处理引擎 | Paddle 内置 | OpenCV / Canvas |

### 性能基准

来自 OCR 基准测试（桌面 CPU，文书图像）：

| 指标 | 目标 | 实测 |
|------|:----:|:----:|
| 字符级准确率（CER） | ≥ 95% | 达标 |
| 单页识别耗时 | < 5s | 视图像复杂度和分辨率 |
| 模型加载耗时 | < 10s | 约 2-5s |

### ONNX 转换信息

本模型由 [ppu-paddle-ocr-models](https://github.com/PT-Perkasa-Pilar-Utama/ppu-paddle-ocr-models) 项目从 PaddlePaddle 原生格式转换而来，经过以下处理：

- **检测模型**：Paddle `inference.pdmodel` → ONNX `model.onnx`
- **识别模型**：Paddle `inference.pdmodel` → ONNX `recognition.onnx`
- **字典**：直接复用原始 `ppocrv5_dict.txt`

---

## 许可证

本模型遵循 [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0)，与 PaddleOCR 官方保持一致。

---

## 引用

如果你在研究中使用了本模型，请引用 PaddleOCR：

```bibtex
@misc{paddleocr,
  title={PaddleOCR: Awesome Multilingual OCR Toolkits Based on PaddlePaddle},
  author={PaddlePaddle Authors},
  howpublished={\url{https://github.com/PaddlePaddle/PaddleOCR}},
  year={2024}
}

@article{ppocrv5,
  title={PP-OCRv5: Ultra Lightweight OCR System},
  author={PaddleOCR Team},
  note={PaddlePaddle/PaddleOCR GitHub Repository},
  year={2024}
}
```

---

## 致谢

- 原始模型：[PaddleOCR / PP-OCRv5](https://github.com/PaddlePaddle/PaddleOCR)（百度）
- ONNX 转换：[ppu-paddle-ocr-models](https://github.com/PT-Perkasa-Pilar-Utama/ppu-paddle-ocr-models)
- Node.js 运行时封装：[ppu-paddle-ocr](https://www.npmjs.com/package/ppu-paddle-ocr)
- 运行时：[ONNX Runtime](https://onnxruntime.ai/)
