1. 环境搭建
1.1 项目地址
https://github.com/PaddlePaddle/PaddleOCR
1.2 Android Studio安装
- 从官网下载Android studio。
- 安装SDK。
3.安装USB Driver。
1.3 导入项目
- Android Studio点击import project。
2.从项目文件种选择deploy/android_demo进行导入。 等待Android Studio安装相关包。
1.4 测试项目
- 用数据线连接手机,并进入开发者模式。
- 将项目运行在手机上。
2 测试效果
3 纯英文模型效果
3.1 OCRV3拍照识别
将demo中的模型更换为英文模型。 更换英文字库后识别存在一定问题,暂时还没找到原因。
4 效果对比
分别使用以下九种模型对两张图片进行识别 一张是照片拍摄的现实照片,记作图片A 另一张是截图的网站图片,记作图片B
4.1 模型ch_PP-OCRv2
对图片A的识别结果 识别时间 828.0 ms 识别率普遍偏高, 仅有一行对于空格处理出现问题,对两个单词识别遗漏 对图片B的识别结果 不能识别且不能检测
4.2 模型ch_PP-OCRv2_old
该模型是项目中原本存在的模型, 不清楚转换之前的版本 对图片A的识别结果
识别时间 958.0 ms 单词遗漏验证,对空格识别效果差 对图片B的识别结果 不能识别且不能检测
4.3 模型ch_PP-OCRv2_slim
该模型是ch_PP-OCRv2模型的裁剪版 对图片A的识别结果 识别时间 891.0ms 相较ch_PP-OCRv2,该模型会把某些英文字符识别成中文 对图片B的识别结果 不能识别且不能检测
4.4 模型ch_PP-OCRv3
对图片 A 的识别效果 识别时间 1178.0ms 能够识别出所有字符,但是对空格处理结果十分糟糕
对图片B的识别效果 不能识别且不能检测
4.5 模型ch_PP-OCRv3_slim
该模型是ch_PP-OCRv3的裁剪版
程序运行闪退
4.6 模型ch_ppocr_mobile_v2.0
对图片A的识别效果 识别时间 1048.0ms
除有一行出现分行检测外,识别和空格处理都表现优秀
对图片B的识别效果 不能识别且不能检测
4.7 模型ch_ppocr_mobile_slim_v2.0
对图片A的识别效果 识别效果混乱,不能检测到整行文本,检测结果为一行中多个不连续部分。 识别时间 951.0ms
对图片B的识别效果 不能识别且不能检测
4.8 模型ch_ppocr_server_v2.0
这是适用于服务器的模型 对图片A的识别效果 识别时间 668.0ms
完美识别文本
对图片B的识别效果 不能识别且不能检测
4.9 模型en_PP-OCRv3
对图片A的识别结果 识别时间 1017.0ms
识别率低,而且不能输出正确的识别文本,目前还没有找到原因
对图片B的识别效果 不能识别且不能检测
5 总结
对于图片B都出现了不能识别的问题, 经过对图片放大处理得到了下面两种结果 一个是带有黑色背景的图片,另一个是去除掉黑色背景的图片。 完美识别图像 出现了同ch_ppocr_mobile_slim_v2.0模型一样的效果,不能识别整行文字. 抛开识别效果来看,模型不能检测和识别图像B的原因可能是因为安卓端代码的处理限制。这部分内容需要更加深入理解安卓demo的源码
综上所述, 八号模型ch_ppocr_server_v2.0是表现最优的,但是遇到复杂图像运行速度慢,且本身体积是其他模型的6–7倍. 在综合考虑下可以选择以六号模型ch_ppocr_mobile_v2.0为基础进行研究。
6 ML kit
原图 效果 ML kit是以扫描的形式进行文字提取。
|