开始接触本章节之前,需要先学习CSK6 [环境搭建] ,完成 CSK6 的环境搭建和熟悉基本开发方式,再进行本章节的操作。
识别图片中的文本信息,图片转文本。目前离线识别支持中英2种语言识别。
● 支持识别中文简体字、英文字母、常用中英文符号、汉语拼音;
● 支持标准字体:二号字及以下,高对比度(浅底深字,深底浅字);
● 待优化效果:生僻字、形近字;
● 不支持:希腊字母(α、β等)、繁体字、空心字体、低对比度(绿底黄字,粉底白字等);
● 扫描速度:A4纸一行支持1.5s内扫完;
扫描笔及衍生产品
在体验OCR能力之前,需要准备以下硬件:
OCR开发套件
串口转接板
USB 线
下载对应平台的cskburn烧录工具,下载链接,将cskburn执行文件放置在固件bin文件同级目录下,或者将cskburn配置到系统环境变量。
步骤一:开发套件烧录串口接串口转接板,PA15(RX)接转接板TX,PA18(TX)接转接板RX,GND接转接板GND
步骤二:PB01接地
步骤三:插上USB线
接线方式如下图所示:
步骤四:使用cskburn工具烧录固件
.\cskburn.exe -s \\.\COMx -C 6 0x0 .\nor_merge.bin -b 3000000
其中的 COMx 代表开发套件连接到 PC 上对应的串口号。例如:COM3
。
.\cskburn -s PORT -C 6 0x0 ./nor_merge.bin -b 3000000
其中的 PORT 代表开发套件连接到 PC 上对应的串口号。例如:/dev/ttyUSB0
。
注意:完成烧录后,需要将
PB01接地
的线去掉退出烧录模式,才能进行后续的OCR识别操作。
PC端OCR结果解析工具是基于Python QT5开发的一个简单数据解析工具,接收CSK6串口输出数据并解析为文字,用于OCR开发套件能力体验。
运行OCR文本解析工具:
# 给执行文件设置权限
chmod 777 comtool_ubuntu-xxx
./comtool_ubuntu-xxx
串口参数设置:
波特率:1500000
数据位:8
停止位:1
校验位:None
使用OCR开发板扫描A4纸上的文字,如下图视频所示:
待扫描的文字内容:
通过PC端串口工具解析OCR结果如下:
OCR开发套件通过串口通讯和上位机进行数据交互,如果开发者需要在上位机解析并获取OCR识别结果,需要详细阅读扫描笔开发套件串口通讯协议和交互和协议最佳实践。
OCR开发套件向上位机发送的过程数据:
58 46 0B 00 05 52 FF 00 50 01 B0 #发送按压消息
58 46 0B 00 05 52 FF 00 50 00 B1 #发送抬笔消息
58 46 0B 00 05 52 FF 00 50 09 A8 #发送OCR输出开始消息
58 46 51 00 00 11 #帧头
FF #命令帧类型 0xFF响应帧
00 #地址
53 #CMD命令类型 0x53上传数据
01 #命令数据类型 0x01:OCR文本
00 00 00 00 #空
00 00 #空
00 00 #空
00 00 #空
00 00 #空
26 00 00 00 #数据大小
F1 #数据状态 0xf1: 传输中
F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 #预留字节
# OCR数据
E6 9C B1 E5 BE B7 E5 90 8C E5 BF 97 E5 B8 A6 E9 A2 86 E9 98 9F E4 BC 8D E5 88 B0 E4 BA 95 E5 86 88 E5 B1 B1 00 00
B2 #帧数据校验
58 46 0B 00 05 52 FF 00 50 0A A7 #发送OCR输出结束消息
OCR数据包内容:
E6 9C B1 E5 BE B7 E5 90 8C E5 BF 97 E5 B8 A6 E9 A2 86 E9 98 9F E4 BC 8D E5 88 B0 E4 BA 95 E5 86 88 E5 B1 B1 00 00
这段数据是UTF-8编码的中文字符,可以使用Python的bytes类型将其解码为Unicode字符串,然后再将其编码为需要的编码格式。
示例代码如下:
data = b'\xe6\x9c\xb1\xe5\xbe\xb7\xe5\x90\x8c\xe5\xbf\x97\xe5\xb8\xa6\xe9\xa2\x86\xe9\x98\x9f\xe4\xbc\x8d\xe5\x88\xb0\xe4\xba\x95\xe5\x86\x88\xe5\xb1\xb1\x00\x00'
# 将字节串解码为Unicode字符串
unicode_str = data.decode('utf-8')
# 将Unicode字符串编码为GBK格式
gbk_str = unicode_str.encode('gbk')
print(gbk_str.decode('gbk'))
运行结果为:
朱德同志带领队伍到井冈山