好友
阅读权限10
听众
最后登录1970-1-1
|
基于@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
- 依赖包:
numpy、opencv-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 |
是否启用多角度检测 |
注意事项
- DLL 路径:建议使用绝对路径加载 DLL
- 嵌入式模型:DLL 已内置模型,无需额外下载模型文件
- 文件路径方式:
OcrDetect 和 OcrDetectEx 在中文路径下可能失败,推荐使用 OcrDetectMem / OcrDetectMemEx 通过二进制数据传入
- 角度分类:启用
doAngle 后 DLL 会自动检测文字方向,适合处理旋转过的图片
相关链接
下载地址:通过网盘分享的文件:PP-OCRv6_测试dll.zip
链接: https://pan.baidu.com/s/1wtq1xR5lT5EIOy-palz4qg?pwd=9449 提取码: 9449 复制这段内容后打开百度网盘手机App,操作更方便哦
--来自百度网盘超级会员v9的分享 |
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|
|