吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]
查看: 1928|回复: 16
收起左侧

[C&C++ 转载] PP-OCRv6嵌入的离线ocr-带位置信息

[复制链接]
top777 发表于 2026-6-15 10:46
基于@858983646的dll模型源码修改(small版),原帖:PP-OCRv6嵌入的离线ocr的dll,单文件 - 吾爱破解 - 52pojie.cn

RapidOcrOnnx DLL 测试项目

基于 RapidOCR ONNX 的 Windows DLL 封装测试项目,在 Python 中通过 ctypes 调用 DLL 实现 OCR 文字识别,支持文字角度分类,⭐新增文字位置坐标获取(文本框四点坐标 + 逐字置信度)。

功能特性

  • 嵌入式模型:OCR 模型内置于 DLL 中,无需外部模型文件
  • 文字识别:支持中文、英文等多语言文字识别
  • 角度分类:自动检测文字方向(0°/180°),支持旋转图片识别
  • 坐标定位(新增):获取每个文字块的四点包围框坐标 (x1,y1,x2,y2,x3,y3,x4,y4),支持逐字置信度
  • 逐字置信度:获取每个字符的识别置信度
  • 两种传入方式:支持文件路径传入和二进制数据(内存)传入

项目结构

.
├── RapidOcrOnnx.dll      # OCR DLL(嵌入式模型版本)
├── 1.jpg                 # 测试图片
├── test_embedded.py      # 基础测试脚本(识别 + ⭐坐标获取)
└── test_dll_full.py      # 完整测试脚本(角度分类 + ⭐坐标定位 + 参数调优等)

环境要求

  • Windows 操作系统
  • Python 3.x
  • 依赖包:numpyopencv-python(仅完整测试需要)
pip install numpy opencv-python

快速开始

基础用法

from test_embedded import RapidOcr

ocr = RapidOcr("RapidOcrOnnx.dll")
ocr.init_embedded()

# 识别图片文字
result = ocr.detect_mem("your_image.jpg")
print(result)

# 获取文字位置坐标
blocks = ocr.detect_mem_ex("your_image.jpg")
for blk in blocks:
    print(f"文字: {blk['text']}, 坐标: {blk['box']}")

运行内置测试:

python test_embedded.py

完整测试

完整测试包含 7 项测试用例:

测试项 说明
测试1 二进制数据传入 + 启用分类器
测试2 文件路径传入(中文路径可能失败)
测试3 旋转180°图片 + 分类器启用(应正常识别)
测试4 旋转180°图片 + 分类器禁用(应输出乱码)
测试5-6 参数调优测试(阈值、unClipRatio)
⭐ 测试7 文字位置坐标获取(OcrDetectMemEx)(新增)
python test_dll_full.py

DLL API 参考

生命周期管理

函数 说明
OcrInitEmbedded(debug) 初始化 OCR 引擎(嵌入式模型),返回句柄
OcrDestroy(handle) 销毁 OCR 句柄,释放资源

文字识别

函数 说明
OcrDetect(handle, imgDir, imgName, params) 通过文件路径传入图片进行识别
OcrDetectMem(handle, imgData, dataLen, params) 通过二进制数据传入图片进行识别
OcrGetResult(handle, buffer, bufLen) 获取识别结果字符串
OcrGetLen(handle) 获取识别结果字符串长度

⭐ 坐标与位置获取(Ex 系列 · 新增)

函数 说明
OcrDetectMemEx(handle, imgData, dataLen, params) 检测并返回文本块数量
OcrDetectEx(handle, imgDir, imgName, params) 通过文件路径检测,返回文本块数量
OcrGetBlockCount(handle) 获取文本块数量
OcrGetBlockText(handle, index, buffer, bufLen) 获取第 index 个文本块的文字
OcrGetBlockScore(handle, index) 获取第 index 个文本块的置信度
OcrGetBlockBox(handle, index, boxInts) 获取第 index 个文本块的四点坐标(8 个 int)
OcrGetBlockAngle(handle, index) 获取第 index 个文本块的角度分类
OcrGetBlockAngleScore(handle, index) 获取角度分类的置信度
OcrGetBlockCharScores(handle, index, scores, maxLen) 获取第 index 个文本块的逐字置信度

OCR_PARAM 参数说明

参数 类型 默认值 说明
padding int 50 文本框内边距
maxSideLen int 960 图片最大边长(等比缩放)
boxScoreThresh float 0.5 文本框置信度阈值
boxThresh float 0.3 文本框检测阈值
unClipRatio float 1.5 文本框扩张比例
doAngle int 1 是否启用角度分类(1=启用, 0=禁用)
mostAngle int 1 是否启用多角度检测

注意事项

  1. DLL 路径:建议使用绝对路径加载 DLL
  2. 嵌入式模型:DLL 已内置模型,无需额外下载模型文件
  3. 文件路径方式OcrDetectOcrDetectEx 在中文路径下可能失败,推荐使用 OcrDetectMem / OcrDetectMemEx 通过二进制数据传入
  4. 角度分类:启用 doAngle 后 DLL 会自动检测文字方向,适合处理旋转过的图片

相关链接



下载地址:通过网盘分享的文件:PP-OCRv6_测试dll.zip
链接: https://pan.baidu.com/s/1wtq1xR5lT5EIOy-palz4qg?pwd=9449 提取码: 9449 复制这段内容后打开百度网盘手机App,操作更方便哦
--来自百度网盘超级会员v9的分享

免费评分

参与人数 4吾爱币 +11 热心值 +4 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
卖梦人 + 1 + 1 谢谢@Thanks!
cioceo + 1 + 1 谢谢@Thanks!
homejun + 2 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

  • · 好帖|主题: 593, 订阅: 89

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

星峰 发表于 2026-6-15 11:21
 楼主| top777 发表于 2026-6-16 08:14
IT大小白 发表于 2026-6-17 13:51
快速开始那里的示例代码:ocr = RapidOcr("RapidOcrOnnx.dll"),需要改成绝对路径才不会报错

[Python] 纯文本查看 复制代码
from test_embedded import RapidOcr
import os

dll_path = os.path.join(os.getcwd(), "RapidOcrOnnx.dll")
# 使用绝对路径
dll_path = os.path.abspath(dll_path)
print(f"加载DLL: {dll_path}")

ocr = RapidOcr(dll_path)
ocr.init_embedded()

# 识别图片文字
result = ocr.detect_mem("1.jpg")
print(result)

# 获取文字位置坐标
blocks = ocr.detect_mem_ex("1.jpg")
for blk in blocks:
    print(f"文字: {blk['text']}, 坐标: {blk['box']}")


kulouxiaohai 发表于 2026-6-15 11:28
具体怎么做有步骤图片吗?
wxcmyman 发表于 2026-6-16 16:04
没有逐字的坐标么?
cioceo 发表于 2026-6-15 10:51
有测试结果对比,相较于其他ocr怎么样呢
 楼主| top777 发表于 2026-6-15 13:46
kulouxiaohai 发表于 2026-6-15 11:28
具体怎么做有步骤图片吗?

在python环境直接运行修改后的py脚本,可以看到测试结果。
Pierce 发表于 2026-6-15 16:00
逐字置信度,怎么实现的呢~~可以学习一下吗
hai0079 发表于 2026-6-15 18:42
要能部署个,给个测试链接就更好了。
homejun 发表于 2026-6-15 22:39
本帖最后由 homejun 于 2026-6-17 15:06 编辑

厉害!厉害!有没有办法集成Paddleocr?
 楼主| top777 发表于 2026-6-16 08:07
Pierce 发表于 2026-6-15 16:00
逐字置信度,怎么实现的呢~~可以学习一下吗

paddle自带的,你可以看看它的说明文档。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-7-21 16:18

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表