Closed SkeathyTomas closed 10 months ago
关于顺序,你可以使用 PaddleOCR-json 的 tbpu模块 对结果进行排序。请仔细阅读该文档来使用。(PaddleOCR-json和RapidOCR-json的python接口是部分兼容的,理论上tbpu模块可以直接拿过来用。)
关于灵敏度,按理说本项目与原生 rapidocr-onnx-cpp 不会有任何差别的,推理部分的代码没有改动过。可能一些参数存在差异?或者你可以改用旧版V3的onnx模型库,它的精度低一些,实测不会将 '★★★★★' 给识别出来。
我用的是python版rapidocr-onnx,实测v4除了识别速度比较慢,准确度、稳定度都没什么问题。 这个项目的稳定度除了上面的‘★’问题,还有锁也会识别成其他中文字符,无论是用v3、v4模型。以下是一些识别结果:
['黄金之夜的喧嚣', '空之杯', '中', '46.6%', '风元素伤害加成', '+20', '·暴击率+3.1%', '·暴击伤害+26.4%', '·攻击力+4.1%', '·生命值+448'] ['黄金之夜的喧嚣', '空之杯', '46.6%', '风元素伤害加成', '★', '+20', '·暴击率+3.1%', '·暴击伤害+26.4%', '攻击力+4.1%', '生命值+448']
['黄金之夜的喧嚣', '空之杯', '0', '生命值', '46.6%', '+20', '·暴击率+5.8%', '·暴击伤害+7.0%', '·元素充能效率+14.2%', '· 防御力+42']
python库和C++库存在差异是正常的。即使使用相同的模型,不同语言的浮点误差、图像解码方式、多线程调度、数学函数库等都会存在差异,这些差异一点一滴积累起来就会导致结果的少量不同。
比如python的NumPy进行浮点矩阵计算可能更精准,而C++启用编译器优化后,矩阵计算更快、但可能产生细微的浮点差异。
从你的测试结果上看,我认为这些误差是可接受的。如果你用于自动刷游戏脚本,'★'这些干扰项不会阻碍脚本对目标UI的识别。如果用于供人类阅读,则可以添加一些后处理步骤来过滤结果:比如移除低于某置信度的文本,或者类似Umi-OCR的“忽略区域”功能过滤掉主要区域以外的文本。
都使用了v4模型,识别图这张
使用原生rapidocr-onnx识别比较稳定
这个exe跑出来会额外把一些非中文图形识别出来,顺序也会混乱,可以怎么优化?
使用参数
ocr = OcrAPI(ocrPath, argsStr=" --det=ch_PP-OCRv4_det_infer.onnx --cls=ch_ppocr_mobile_v2.0_cls_infer.onnx --rec=rec_ch_PP-OCRv4_infer.onnx --keys=dict_chinese.txt")