在这个特殊的春节,我们多了很多属于自己的时间。不论是孩子还是大人,都有了更多的业余时间,也多了更多彼此的陪伴。足不出户,就是守护自己,守护他人,多读书成了我们家不二的选择。书读的多了,桌上的书堆积如山,不知道每天都读了哪些书?为此,我考虑集成了百度的文字识别,TinyWebDB数据库以及App Inventor的手机应用,还有掌控板,共同制作了这个项目。
步骤1 确定思路
可以肯定的是这次需要用到三个终端,一个是手机,一个是电脑,一个是掌控板。
掌控板:只有一个按钮,当按下按钮时,开始进行文字识别操作。也就是说,每按下一次,都会识别一次文字(既:识别一本书)
电脑:重点使用的是电脑的摄像头,具体内容分三步走。
(1):通过mind+连接到百度AI云平台,利用电脑的摄像头,对书上的文字进行识别。
(2):将识别出来的文字,更新到数据库中(Tiny web DB)。
(3):将识别后的文字语音播放出来,并将统计的总数显示在掌控板屏幕上。
手机:使用AppInventor2进行编程,将数据库中的内容读取出来并显示。
以上内容的贯穿我也是参考了论坛中诸多大神们的帖子,再逐步摸索出来,这其中也踩了不少坑,后面我会一一说明。
材料清单
- 带摄像头的电脑 X1
- 掌控板 X1
- 掌控扩展板 X1
- 按钮 X1
- 安卓手机 X1
步骤2 注册百度云AI账号
打开百度AI开放平台:http://ai.baidu.com/
这里是为mind+中的文字识别做准备,在百度控制台中选择文字识别,如下图。
新建自己的应用,注意带星号的都要输入。由于是在文字识别类目下创建应用,所以默认需要的接口都已经打好勾了。
创建好应用之后,管理该应用,会看到AppID,APIKey,以及SecretKey,这三个参数。
步骤3 下载最新版本Mind+
强烈推荐先下载最新版本的mind+,变化还是有的哦,df的程序猿gg们很勤劳的,经常会有很多很棒的更新。
在当前最新版V1.6.2中,打开实时模式,注意是实时模式而不是上传模式哦!
接着将需要扩展的项目和主板都加载进来。
主控板中的掌控板
功能模块中的文字朗读
网络服务中的TinyWebDB和AI图像识别
步骤4 电脑端的编程
文字识别这里有三个要注意的点,其中有两个也是我掉进去的坑:
1)一定要开启镜像,否则的话摄像头是按反相文字进行识别,基本全错,一开始这个问题困扰了我,后来发现这里有镜像开启,一切困难迎刃而解。
2)识别出来的文字,如果有换行或者特殊字符是会在字符串中加入\再写入数据库的,而手机端在读取时,只读取第一个\之前的内容,因此为了防止将多余的文字识别进去,希望入库的数据尽可能是有效书目,这里我做了一个类似trim的操作,因为没有太多对字符串的操作,所以只简单识别了第一个斜杠之前的文字。另外关于识别时,我发现,只要将书脊对着摄像头,会极大的提高识别准确度。书目内容相当简洁。
3)将百度AI智能云的账号输入,如下图。
这段代码主要有三个功能:
1)通过掌控板按下按钮后,开始识别摄像头中的文字(并进行简单的文字处理)
2)如果识别到了,那么录入数据库(http://tinywebdb.appinventor.space/)
3)录入数据库后,语音播放所识别内容,并将识别总数显示在掌控板上。
其他内容都比较好理解,下面说一说我在录入数据库中踩到的坑。
步骤5 TinyWebDB数据库
打开网址:http://tinywebdb.appinventor.space/
就来到上图中的界面,注册自己的账号后,登录数据库中。
在mind+中,调用TinyWebDB中,需要设置API地址,用户名,密钥这三项,将上图中的对应项目,填入mind+代码中。
至此,我们已经建立好了数据库和录入,在开始操作文字识别后,我们会发现数据库的数据是在不断增加的。
步骤6 手机端App Inventor的设计和制作
关于App Inventor2的操作,我也是学习了很多论坛大神的方法后,多方面尝试,总结一下具体操作。
最好是能够根据连接中的方案,安装上集成版,这样可以直接在电脑端看到手机模拟器的效果,很方便调试程序,如果不能,直接用网络版也是可以的。
设计自己需要的页面:三个按钮,一个列表,一个隐藏控件(网络微数据库)
选中网络微数据库的组件后,设置其服务器地址。这里的地址和刚刚在mind+中所填写的是不一样的哦,这里是服务器地址(也就是我用红框第一个圈出来的)。
在这里我也曾掉了一个坑,就是一开始没有仔细看,一直觉得,既然写了地址,就一定要有地方去输入用户名密码才能连数据库啊,完全没有仔细观察,这个地址的后面本身就是传参的,自带了用户名和密码,所以此处和mind+不一样,也是完全合情合理哒~~输入完这个,基本上数据库的设置就完事了,很简单吧。
然后打开逻辑设计,在逻辑设计中填写代码。
我用了三个按钮,点击获取数据后,会将数据库的数据读取到数组中,再点击显示按钮后,会显示再列表中,假如需要清空,那么就点击清空,将列表初始化。
在模拟器中的效果已经读取出来我们识别到的书目了。
这个是在安卓手机上的实际演示效果。这样,我们每天都看了哪些书,就一目了然了~~
努力学习,继续宅家,武汉加油,中国加油!!!
步骤7 视频效果
余小雁2020.04.12
为什么我一直识别不到文字,实时模式,摄像头已经镜像开启?