文章目录
- 一、前言
- 二、英文模型输出文本错误
- 三、图片宽度过长导致识别失败
一、前言
在使用 PaddleOCR 项目中预设置的安卓程序时, 出现了两个问题.
这里对两个问题进行一些初步分析并给出自己的猜测和之后将会进行的解决方案.
二、英文模型输出文本错误
一个是使用英文模型识别时会出现类似于 xxxxxxxx 这样的符号, 但是其识别率还是能够保证在 80% 左右.
例如对如下图片进行识别
手机端运行效果如下图:
Android Studio 端日志结果如下图(红框内为识别率):
也就是说识别出来之后, 不能进行正常的输出. 首先想到的是字典的问题, 因为官方文档中提醒到, 如果是纯英文模型就需要更新字典. 但是实验之后发现既不是字典问题, 也不是字典编码问题.
这和之前出现的识别中文乱码有些相似. 中文识别乱码是因为编译运行库时出现问题 (通过 Github 和 Gitee 下载的运行库源码有所区别, 所以造成了乱码).
在这里也可以考虑是否还是因为运行库而出现的错误, 但是如果要匹配上此安卓 Demo, 需要考虑到很多方面, 尤其是 SDK 和 NDK 的版本. 这其中的兼容性错综复杂, 尤其是当升高 NDK 版本之后会出现众多的头文件缺失.
显然这个方案有待商榷, 那么解决的思路将随着下一个问题的提出而展现.
三、图片宽度过长导致识别失败
现有如下一张图片, 在安卓 Demo 中无论采用哪种模型都不能识别成功.
Android Studio 端日志结果如下图:
但是我们对图片裁剪一半后得到这样的图片
对它使用 ch_ppocr_server_v2.0 模型进行识别, 可以在 Android Studio 端日志得到下图:
那么针对这个问题的解决方法就是修改安卓端的源码, 查看是否对输入文件的尺寸进行了相应的处理.
同时我们使用 PaddleOCR 的 PC 端工具的中英文识别模型对未裁剪图进行识别, 可以在终端中得到如下结果:
然后指定其使用英文模型进行识别:
可以看到, 除了中文识别错误外, 英文的识别率高且无类似 xxxxxxxx 符号出现.
可以了解到, PaddleOCR 给出的各个平台的各个模型其实存在一定问题, 或许是转换时参数出现问题, 或许是模型未更新.
总之, 可以看见纯英文模型在特殊环境下还是能够保证其运行和识别功能的完整. 具体细节就需要对框架和各种参数进行进一步的了解.