# PaddleOCRApi
**Repository Path**: corallite/PaddleOCRApi
## Basic Information
- **Project Name**: PaddleOCRApi
- **Description**: PaddleOCRSDK免费离线OCR组件,支持CPU/GPU,免费使用,免费升级,支持.net/C++/java/Python/Go语言开发, 基于百度飞桨PaddleOCR封装的C++动态链接库,可用于.net/C++/java/Python/Go等语言中调用,支持paddle_inference2.6.2及3.0推理库,加群475159576技术交流
- **Primary Language**: C#
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: https://github.com/PaddleOCRCore/PaddleOCRApi
- **GVP Project**: No
## Statistics
- **Stars**: 23
- **Forks**: 7
- **Created**: 2025-03-08
- **Last Updated**: 2025-12-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
[](README.md) [
](README_EN.md)
# PaddleOCRApi离线OCR组件 支持C#/C++/java/Python/Go语言开发
## 📋 调用参数说明
| 参数名称 | 默认值 | 值说明 |
| ---------------------------- | ------ | ---------------------------------------------------------------------------------------- |
| det_model_dir | - | 检测模型inference model地址 |
| cls_model_dir | - | 方向分类器inference model地址 |
| rec_infer | - | 文字识别模型inference model地址 |
| keys | - | 文字识别字典文件 |
| table_model_dir | - | 表格识别模型inference model地址 |
| table_char_dict_path | - | 表格识别字典文件 |
| 通用参数 | -- | -- |
| det | true | 是否执行文字检测 |
| rec | true | 是否执行文字识别 |
| cls | false | 是否执行文字方向分类 |
| use_gpu | false | 是否使用GPU |
| gpu_id | 0 | GPU id,使用GPU时有效 |
| gpu_mem | 4000 | 使用GPU时内存 |
| use_tensorrt | false | 使用GPU预测时,是否启动tensorrt |
| cpu_mem | 4000 | CPU内存占用上限,单位MB。-1表示不限制 |
| cpu_math_library_num_threads | 10 | CPU预测时的线程数,在机器核数充足的情况下,该值越大,预测速度越快 |
| enable_mkldnn | true | 是否使用mkldnn库,关掉可以减少内存占用,但会降低速度 |
| 检测模型相关 | -- | -- |
| max_side_len | 960 | 输入图像长宽大于960时,等比例缩放图像,使得图像最长边为960 |
| det_db_thresh | 0.3 | 用于过滤DB预测的二值化图像,设置为0.-0.3对结果影响不明显 |
| det_db_box_thresh | 0.5 | DB后处理过滤box的阈值,如果检测存在漏框情况,可酌情减小 |
| det_db_unclip_ratio | 1.6 | 表示文本框的紧致程度,越小则文本框更靠近文本 |
| use_dilation | false | 是否在输出映射上使用膨胀 |
| det_db_score_mode | true | true:使用多边形框计算bbox score,false:使用矩形框计算。矩形框计算速度更快,多边形框对弯曲文本区域计算更准确。 |
| visualize | false | 是否对结果进行可视化,为false时,预测结果会保存在output文件夹下和输入图像同名的图像上。 |
|方向分类器相关 | -- | -- |
| use_angle_cls | false | 是否使用方向分类器 |
| cls_thresh | 0.9 | 方向分类器的得分阈值 |
| cls_batch_num | 1 | 方向分类器批量识别数量 |
| 识别模型相关 | -- | -- |
| rec_batch_num | 6 | 文字识别模型批量识别数量 |
| rec_img_h | 48 | 文字识别模型输入图像高度 |
| rec_img_w | 320 | 文字识别模型输入图像宽度 |
| 表格识别模型相关 | -- | -- |
| table_max_len | 488 | 表格识别模型输入图像长边大小,最终网络输入图像大小为(table_max_len,table_max_len) |
| merge_empty_cell | true | 是否合并空单元格 |
| table_batch_num | 1 | table_batch_num |
## 🎯 多语言示例
### C#示例
```csharp
// 详见 Demo/WinFormsApp/
var ocrService = new OCRService();
ocrService.Initialize(detModelPath, clsModelPath, recModelPath, keysPath);
var result = ocrService.Detect(imagePath);
```
### Python示例
```python
# 详见 Demo/Python/OCRPythonDemo.py
import ctypes
ocr_dll = ctypes.CDLL("PaddleOCR.dll")
init_func = ocr_dll.Initjson
detect_func = ocr_dll.Detect
# 初始化
init_func(det_model_path, cls_model_path, rec_model_path, keys_path)
# 识别
result = detect_func(image_path)
```
### Go示例
```go
// 详见 Demo/GoDemo/OCRGoDemo.go
ocrDLL, _ := syscall.LoadDLL("PaddleOCR.dll")
initFunc, _ := ocrDLL.FindProc("Initjson")
detectFunc, _ := ocrDLL.FindProc("Detect")
// 初始化和调用
initFunc.Call(detModelPath, clsModelPath, recModelPath, keysPath)
detectFunc.Call(imagePath)
```
### C++示例
```cpp
// 详见 Demo/CPP/PaddleOCRCpp.cpp
#include
## ☕ 捐助
如果这个项目对您有所帮助,请扫下方二维码打赏一杯咖啡。
## 🎯 技术架构
### 核心组件
```
┌─────────────────────────────────────────┐
│ 应用层 (Application) │
│ WinForms / WebAPI / Console / SDK │
└─────────────────┬───────────────────────┘
│
┌─────────────────▼───────────────────────┐
│ .NET封装层 (PaddleOCRSDK) │
│ OCRService / IOCRService / Models │
└─────────────────┬───────────────────────┘
│ P/Invoke
┌─────────────────▼───────────────────────┐
│ C++动态库 (PaddleOCR.dll) │
│ 文字检测 / 识别 / 分类 / 表格识别 │
└─────────────────┬───────────────────────┘
│
┌─────────────────▼───────────────────────┐
│ Paddle Inference 推理引擎 │
│ paddle_inference 3.2.2 / 2.6.2 │
└─────────────────┬───────────────────────┘
│
┌─────────────────▼───────────────────────┐
│ 硬件加速层 │
│ CPU (MKL) / GPU (CUDA+TensorRT) │
└─────────────────────────────────────────┘
```
### 工作流程
1. **图片预处理** → 图像归一化、尺寸调整
2. **文字检测** → DBNet检测文字区域
3. **方向分类** → 文字方向校正(可选)
4. **文字识别** → CRNN识别文字内容
5. **结果输出** → JSON/文本格式返回
## 📝 更新日志
### v3.2.2 `2025.12.11`
- ✅ 优化PaddleOCR.dll,支持paddle_inference3.2.2推理库
- ✅ 发布PaddleOCRRuntime_x64 v3.2.2,包含paddle3.2.2推理库、PaddleOCR.dll及依赖文件
- ⚠️ Nuget PaddleOCRSDK停止更新,核心文件已整合到PaddleOCRRuntime_x64中,.net项目请参考PaddleOCRSDK源码
### v3.1.0 `2025.9.15`
- ✅ 优化PaddleOCR.dll,支持paddle_inference3.2.0推理库
- ✅ 增加支持文本行方向分类模型PP-LCNet_x1_0_textline_ori
- ✅ v4/v5模型采用yml格式
- ✅ 表格识别初始化增加方向分类模型参数,可单独使用表格识别功能
- ✅ 发布PaddleOCRRuntime_x64 v3.1.1
- ✅ 发布PaddleOCRSDK v3.1.0,对齐PaddleOCR.dll
### v2.1.1 `2025.8.1`
- ✅ 发布PaddleOCRSDK2.1.1版本,增加DetectMat接口
### v2.1.0 `2025.7.31`
- ✅ 修改PaddleOCR.dll接口,指针类型改为char*(UTF8编码)
- ✅ 增加DetectMat接口支持直接传入Mat
- ✅ EnableANSIResult更名为EnableASCIIResult
- ✅ 发布PaddleOCRSDK2.1.0版本
### v2.0.0 `2025.6.4`
- ✅ 修改PaddleOCR.dll接口,增加支持PP-OCRv5模型
- ✅ WinForm Demo增加V5/V4模型选择下拉选项
### v1.0.5 `2025.4.1`
- ✅ 优化PaddleOCR.dll接口,Demo增加表格识别功能
### v1.0.4 `2025.3.29`
- ✅ 优化PaddleOCR.dll,增加日志输出开关,OCR识别提速
- ✅ WebApi接口优化,增加OCR初始化及参数设置
### v1.0.2 `2025.3.23`
- ✅ 优化PaddleOCR.dll,增加多线程队列支持
- ✅ 增加内存达到上限自动回收
- ✅ WinFormDemo功能强化,增加初始化选项
- ✅ 增加多图选择及模拟并发测试
### v1.0.1 `2025.3.5`
- ✅ 优化PaddleOCR.dll,提高识别速度,增加智能指针
### v1.0 `2025.1.22`
- 🎉 初版发行: PaddleOCRApi
## 🔍 常见问题 (FAQ)