基于ppocrv6的onnx模型实现图片文字检测识别python源码+onnx模型

基于ppocrv6的onnx模型实现图片文字检测识别python源码+onnx模型 PP-OCRv6 ONNX Runtime 推理2026 最新版基于PP-OCRv6ONNX 模型的纯 Python 文字检测 识别推理代码。零 PaddlePaddle 依赖仅需onnxruntimeopencvnumpypyclipper。内置 Tiny 版检测 / 识别 ONNX 模型开箱即用。✨ 特性2026 最新 PP-OCRv6— 使用百度 PaddleOCR v6 版本导出的 ONNX 模型零 PaddlePaddle 依赖— 不安装 Paddle不装 PaddleX体积仅 ~200 MB内置 Tiny 模型—models/目录已包含检测 识别 ONNX 模型tiny 版无需额外下载完整 OCR 流水线— 文字检测 → 框排序 → 透视裁剪 → 文字识别全流程纯 Python 实现高精度— 与 PaddleX 在同 ONNX Runtime 后端下 bit-exact 对齐高性能— 比 PaddlePaddle 原生推理快约 3× 环境要求依赖最低版本说明Python≥ 3.10使用了dataclass(slotsTrue)等 3.10 特性onnxruntime≥ 1.23.2需支持 ONNX IR version 10opencv-python任意稳定版图像处理numpy任意稳定版数组运算pyclipper任意稳定版多边形偏移文本框扩展 快速开始1. 安装依赖pipinstallonnxruntime opencv-python numpy pyclipper2. 直接运行python ppocrv6_onnx.py# 默认对 test_images/handwrite_ch_demo.png 进行识别或指定图片python ppocrv6_onnx.py your_image.png3. 作为模块使用importcv2fromppocrv6_onnximportPPOCRv6Onnx,OCRResult det_modelmodels/PP-OCRv6_tiny_det_onnx/inference.onnxrec_modelmodels/PP-OCRv6_tiny_rec_onnx/inference.onnxchar_dictmodels/rec_char_dict.txt# 已内置withPPOCRv6Onnx(det_model,rec_model,char_dict)asocr:imgcv2.imread(your_image.png)results:list[OCRResult]ocr(img)forrinresults:print(f{r.text}({r.score:.3f})) 项目结构ppocrv6_onnx-python/ ├── ppocrv6_onnx.py # 核心推理模块检测 识别~890 行 ├── demo.py # 快速 Demo 脚本 ├── benchmark.py # 性能基准测试工具 ├── pyproject.toml # 项目元数据与依赖声明 ├── README.md # 本文档 ├── models/ │ ├── PP-OCRv6_tiny_det_onnx/ # ✅ 已内置文字检测 ONNX 模型tiny │ │ ├── inference.onnx │ │ └── inference.yml │ ├── PP-OCRv6_tiny_rec_onnx/ # ✅ 已内置文字识别 ONNX 模型tiny │ │ ├── inference.onnx │ │ └── inference.yml │ └── rec_char_dict.txt # ✅ 已内置7180 字符字典 ├── assets/ # 示例图片 ├── test_images/ # 多语言测试图片中/英/日/手写/杂志/竖排 ├── scripts/ # 精度验证脚本 └── docs/ # 方法论说明 内置模型说明models/目录已包含以下 ONNX 模型tiny版开箱即用模型路径用途文字检测DBmodels/PP-OCRv6_tiny_det_onnx/inference.onnx定位图中文字区域文字识别CRNNCTCmodels/PP-OCRv6_tiny_rec_onnx/inference.onnx识别裁剪后的文字行字符字典models/rec_char_dict.txtCTC 解码字符表7180 字 API 参考PPOCRv6OnnxclassPPOCRv6Onnx:def__init__(self,det_model_path:str,# 检测 ONNX 模型路径rec_model_path:str,# 识别 ONNX 模型路径rec_char_dict_path:str,# 字符字典路径*,det_thresh:float0.3,# 检测二值化阈值det_box_thresh:float0.6,# 检测框置信度阈值det_unclip_ratio:float1.5,# 文本框扩展比例Vatti clippingrec_batch_size:int6,# 识别批大小prefer_accelerator:boolFalse,# 启用 CUDA / CoreML 加速)-None:...def__call__(self,img_bgr:np.ndarray)-list[OCRResult]:完整 OCR 流程检测 → 排序 → 裁剪 → 识别defdetect(self,img_bgr:np.ndarray)-tuple[np.ndarray,list[float]]:仅检测。返回 (boxes[N,4,2], scores[N])defrecognize(self,img_list:list[np.ndarray])-tuple[list[str],list[float]]:仅识别。返回 (texts, scores)defclose(self)-None:释放 ONNX Runtime 会话资源幂等支持with上下文管理退出时自动释放资源。OCRResultdataclass(frozenTrue,slotsTrue)classOCRResult:text:str# 识别文本score:float# 置信度范围 [0, 1]box:list[list[int]]# 四顶点坐标 [[x0,y0],[x1,y1],[x2,y2],[x3,y3]] 流水线架构输入图片 (BGR) │ ▼ [文字检测] DB 模型 → Resize → ImageNet 归一化 → ONNX 推理 → DBPostProcess │ ▼ [框排序] 按阅读顺序上→下左→右稳定排序 │ ▼ [区域裁剪] 透视变换逐区域裁剪自动处理旋转 / 竖排文本 │ ▼ [文字识别] CRNN 模型 → Resize(H48, 宽按比例) → 归一化[-1,1] → ONNX → CTC Greedy Decode │ ▼ list[OCRResult]⚡ 高级用法GPU / CoreML 加速默认使用 CPUCPUExecutionProvider以保证跨平台 bit-exact 精度。如需 GPU 或 CoreML 加速ocrPPOCRv6Onnx(det_model_path...,rec_model_path...,rec_char_dict_path...,prefer_acceleratorTrue,# 自动选择 CoreML(macOS) CUDA CPU)注意加速器因硬件浮点优化可能产生微小置信度差异识别文本结果不变。 常见问题Q: 运行时报Unsupported model IR version: 10A:onnxruntime版本过低需升级到 ≥ 1.23.2pipinstall--upgradeonnxruntime源码地址https://download.csdn.net/download/FL1623863129/90010788