# 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**: 25
- **Forks**: 7
- **Created**: 2025-03-08
- **Last Updated**: 2026-01-07
## 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 |
完整示例请查看 `Demo/` 目录下的各语言示例代码。
## 🖥️ GPU环境配置说明
### paddle_inference2.6.2版本GPU推理库
**下载地址**:[paddle_inference2.6.2](https://www.paddlepaddle.org.cn/inference/v2.6/guides/install/download_lib.html#windows)
- https://paddle-inference-lib.bj.bcebos.com/2.6.2/cxx_c/Windows/GPU/x86-64_cuda12.0_cudnn8.9.1_trt8.6.1.6_mkl_avx_vs2019/paddle_inference.zip
**配置步骤**:
1. 解压后将以下dll文件复制到程序运行文件夹:
- `paddle\lib\` 目录:`common.dll`、`paddle_inference.dll`
- `third_party\install\mkldnn\lib\` 目录:`mkldnn.dll`
- `third_party\install\mklml\lib\` 目录:`libiomp5md.dll`、`mklml.dll`
2. 安装CUDA和CUDNN,复制对应的cudnn64_x.dll
- 位于:`C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x\bin\cudnn64_x.dll`
### paddle_inference3.x版本GPU推理库,要求CUDA12.9以上
**配置步骤**:
1. 解压后将以下dll文件复制到程序运行文件夹:
- `paddle\lib\` 目录:`common.dll`、`paddle_inference.dll`
- `third_party\install\mkldnn\lib\` 目录:`mkldnn.dll`
- `third_party\install\mklml\lib\` 目录:`libiomp5md.dll`、`mklml.dll`
2. 安装CUDA和CUDNN,复制对应的cublas64_12.dll、cublasLt64_12.dll、cudnn_cnn64_9.dll、cudnn_engines_precompiled64_9.dll、cudnn_engines_runtime_compiled64_9.dll、cudnn_graph64_9.dll、cudnn_heuristic64_9.dll、cudnn_ops64_9.dll、cudnn64_9.dll
- 位于:`C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\bin`
### 相关下载链接
| 资源 | 链接 |
|------|------|
| CUDA | [https://developer.nvidia.com/cuda-toolkit-archive](https://developer.nvidia.com/cuda-toolkit-archive) |
| CUDNN | [https://developer.nvidia.cn/rdp/cudnn-archive](https://developer.nvidia.cn/rdp/cudnn-archive) |
| TensorRT | [https://developer.nvidia.com/nvidia-tensorrt-download](https://developer.nvidia.com/nvidia-tensorrt-download) |
| PP-OCRv4/v5模型 | [https://www.paddleocr.ai/latest/version3.x/pipeline_usage/OCR.html](https://www.paddleocr.ai/latest/version3.x/pipeline_usage/OCR.html) |
## 🔗 WebAPI接口
详细的WebAPI接口文档请参考:[WebApi接口文档](./OCRCoreService/README.md)
**Swagger文档**:`http://localhost:5000/swagger/index.html`
## 💬 开发交流群
欢迎加入QQ群 **475159576** 交流,或者添加QQ定制项目:**2380243976**
若您喜欢本项目,请点击免费的 **Star ⭐**
## ☕ 捐助
如果这个项目对您有所帮助,请扫下方二维码打赏一杯咖啡。
## 🎯 技术架构
### 核心组件
```
┌─────────────────────────────────────────┐
│ 应用层 (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/文本格式返回
## 📝 更新日志
详细的更新历史请查看:[更新日志](./Doc/CHANGELOG.md)
## 🔍 常见问题 (FAQ)
详细的常见问题请查看:[常见问题](./Doc/FAQ.md)
## 🙏 致谢
本项目基于以下开源项目:
- [PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR) - 飞桨PaddleOCR
- [Paddle](https://github.com/PaddlePaddle/Paddle) - 飞桨推理引擎
## ⭐️ Star
[](https://star-history.com/#PaddleOCRCore/PaddleOCRApi&Date)
## 📄 许可证书
本项目的发布受 [Apache License Version 2.0](./LICENSE) 许可认证, 欢迎大家使用和贡献。