【K230嵌入式AI开发板测评】 +字符识别与图书录入处理篇
[复制链接]
这里所说的“字符识别”是指光学字符识别,即OCR (Optical Character Recognition)。
通常是由电子设备(如扫描仪或数码相机)来检查纸面上所打印的字符,经检测明、暗程度来确定其形状,然后以字符识别方法将形状转译成计算机文字的过程。
K230开发板的字符识别流程为:
CanMV K230支持对图片中中文和英文字符的识别,且已将所用的模型存放在CanMV K230文件系统,故无需额外提供。
识别显示屏内容的场景如图1所示,可见到识别效率很高。
图1 识别图像中文字
识别印刷品或书籍的内容其场景如图2所示,受摄像头拍摄质量的影响,其识别效率会有稍许的减弱。
图2 识别图书上文字
那该如何获取识别结果呢?
这可从输出的识别结果中来寻找,图2的输出结果为:
[array([275.0662, 278.0513, 440.2838, 282.0602, 438.9337, 350.9487, 273.7161, 346.9398], dtype=float32), array([134.241, 180.2511, 586.1193, 189.2587, 584.759, 273.7489, 132.8807, 264.7413],
dtype=float32), array([108.8152, 23.9488, 620.5769, 13.94075, 623.1848, 179.0512, 111.4231, 189.0593], dtype=float32)] ['\u7b2c2\u7248', '\u5feb\u901f\u7f16\u7a0b\u5165\u95e8', 'Python']
1.399683
因此可知,:我们需要的识别结果为:
['\u7b2c2\u7248', '\u5feb\u901f\u7f16\u7a0b\u5165\u95e8', 'Python']
其中:
'Python'---第一行识别结果
'\u5feb\u901f\u7f16\u7a0b\u5165\u95e8'---第二行识别结果
'\u7b2c2\u7248'---第三行识别结果
具体的内容如图3所示,那其中的汉字是采用哪一种编码方式呢?
图3 识别结果
经测试其编码方式并非区位码方式,见图4所示。
图4 区位码转换
在反复测试,其编码方式为Unicode码,见图5所示。
图5 Unicode码转换
那该如何提取识别结果呢?
以得到的图书名称为例,通过图6所示的程序即可其内容。
图6 Unicode码转换
这样在进行图书录入管理时,即可先通过识别来得到书籍名称,并限制识别结果的反复出现。然后再结合前面所介绍的“RTC计时与文件读写应用篇”来提供相应的时间值,并将信息存储到文件中即可。
若是进行图书的借阅管理,则再识别图书名称后,需在管理文件中查询该图书是否存在,若不存在,则添加一条借阅信息;否则,只修改图书的存放状态即可。当然,这只是一个简单的管理思路,在实际的管理中还需增添借阅人信息,以及解决图书有多个副本的问题等。
|