人工智能入门课程:基于字符识别的二十四节气

【项目背景】
寒露是二十四节气中的第十七个节气,
也是秋冬两季交替的开端,通常在每年公历的10月7日至9日之间,
当太阳到达黄经195°时。
寒露的意思是气温比白露时更低,地面的露水更冷,快要凝结成霜了。
它标志着天气由凉爽向寒冷过渡,露珠寒光四射,如俗语所说:“寒露寒露,遍地冷露”
今天分享一个利用二哈识图2识别二十四节气项目。
【硬件准备】
二哈识图2是一款简单易用、玩法多样的AI视觉传感器,采用6TOPS算力专用AI芯片,预置人脸识别、目标检测、物体分类、姿态识别、实例分割等20余种开机即用的AI模型。同时,用户还可部署自行训练的模型,教会二哈识图识别任意目标物体。二哈识图2 AI视觉传感器通过内置大语言模型提供了直接感知和理解物理世界的能力。突破传统大模型仅能进行文本推理的局限,实现了视觉感知与认知能力的深度融合。同时还能识别特定物品和行为特征,真正实现了从"看到什么"到"知道什么"的质变,还能通过自训练识别任何特定目标。

【原理与功能介绍】
(一)原理:光学字符识别(OCR) 是一种将这些图像中的文字自动识别并转换为可编辑、可搜索的电子文本的技术,使得纸质文档或图片中的文字信息能够被计算机理解和利用。当二哈识图2内置模型切换在光学字符识别功能下,HUSKYLENS 2能检测出画面中所有文字块出现的区域并用方框圈出,但只识别离十字光标最近的一个文字块区域的内容并显示在方框左上角。让学生在探索中认识二十四节气知识,提升地理教学效率。
(二)功能:
1.上电初始化:行空板K10屏幕显示:基于字符识别二十四节气之秋,正在识别中
2.识别二十四节气中文字符:当二哈识图2识别寒露字符后,行空板K10屏幕显示节气文字和画面,当师生的语音提问,二哈识图小智对节气相关信息进行解读,再通过二哈识图2将内容转换为语音并播报,以便学生对二十四节气的学习理解。
【配置二哈识图小智AI】

1.刷入二哈识图2最新固件,1.4.1版本

2..安装WiFi模块并连接网络

3.在二哈识图 2的菜单页面找到"小智AI",点击进入

4.进入小智AI功能后,点击下方的开关按钮,启动小智AI。

5.通过唤醒词“你好,小哈”,唤醒HUSKYLENS 2 的小智AI,获取激活码

激活码为后续绑定设备时需要使用。
6.进入小智AI官网 https://xiaozhi.me/
7.控制台里添加设备:二行,对角色进行配置,

【程序设计】

步骤1 打开 Mind+1.8程序设计,选择上传 模式

步骤2 在主扩展中添加行空板K10

步骤3 在主扩展中添加二哈识图2

步骤4 左侧脚本区,二哈识图的光学字符识别
步骤5 编写程序
/*!
* MindPlus
* esp32s3bit
*
*/
#include "unihiker_k10.h"
#include "DFRobot_HuskylensV2.h"
// 创建对象
HuskylensV2 huskylens;
uint8_t screen_dir=2;
UNIHIKER_K10 k10;
// 主程序开始
void setup() {
k10.begin();
k10.initScreen(screen_dir);
k10.creatCanvas();
k10.initSDFile();
Wire.begin();
while (!huskylens.begin(Wire)) {
delay(100);
}
huskylens.switchAlgorithm(ALGORITHM_OCR_RECOGNITION);
delay(5000);
k10.setScreenBackground(0xFFFFFF);
k10.canvas->canvasClear();
k10.canvas->canvasText("二哈识图2", 1, 0x333333);
k10.canvas->canvasText("基于字符识别", 3, 0x333333);
k10.canvas->canvasText("——二十四节气之秋", 5, 0x333333);
k10.canvas->updateCanvas();
}
void loop() {
huskylens.getResult(ALGORITHM_OCR_RECOGNITION);
if ((huskylens.available(ALGORITHM_OCR_RECOGNITION))) {
if (((RET_ITEM_STR(huskylens.getCachedCenterResult(ALGORITHM_OCR_RECOGNITION), Result, content))==String("立秋"))) {
k10.canvas->canvasDrawImage(75, 155, "S:/立秋.jpg");
k10.canvas->canvasText("立秋", 95, 245, 0x333333, k10.canvas->eCNAndENFont24, 50, true);
k10.canvas->canvasText(" ", 0, 280, 0xFFFFFF, k10.canvas->eCNAndENFont24, 50, true);
k10.canvas->updateCanvas();
}
if (((RET_ITEM_STR(huskylens.getCachedCenterResult(ALGORITHM_OCR_RECOGNITION), Result, content))==String("处暑"))) {
k10.canvas->canvasDrawImage(75, 155, "S:/处暑.jpg");
k10.canvas->canvasText("处暑", 95, 245, 0x333333, k10.canvas->eCNAndENFont24, 50, true);
k10.canvas->canvasText(" ", 0, 280, 0xFFFFFF, k10.canvas->eCNAndENFont24, 50, true);
k10.canvas->updateCanvas();
}
if (((RET_ITEM_STR(huskylens.getCachedCenterResult(ALGORITHM_OCR_RECOGNITION), Result, content))==String("白露"))) {
k10.canvas->canvasDrawImage(75, 155, "S:/白露.jpg");
k10.canvas->canvasText("白露", 95, 245, 0x333333, k10.canvas->eCNAndENFont24, 50, true);
k10.canvas->canvasText(" ", 0, 280, 0xFFFFFF, k10.canvas->eCNAndENFont24, 50, true);
k10.canvas->updateCanvas();
}
if (((RET_ITEM_STR(huskylens.getCachedCenterResult(ALGORITHM_OCR_RECOGNITION), Result, content))==String("秋分"))) {
k10.canvas->canvasDrawImage(75, 155, "S:/秋分.jpg");
k10.canvas->canvasText("秋分", 95, 245, 0x333333, k10.canvas->eCNAndENFont24, 50, true);
k10.canvas->canvasText(" ", 0, 280, 0xFFFFFF, k10.canvas->eCNAndENFont24, 50, true);
k10.canvas->updateCanvas();
}
if (((RET_ITEM_STR(huskylens.getCachedCenterResult(ALGORITHM_OCR_RECOGNITION), Result, content))==String("寒露"))) {
k10.canvas->canvasDrawImage(75, 155, "S:/寒露.jpg");
k10.canvas->canvasText("寒露", 95, 245, 0x333333, k10.canvas->eCNAndENFont24, 50, true);
k10.canvas->canvasText(" ", 0, 280, 0xFFFFFF, k10.canvas->eCNAndENFont24, 50, true);
k10.canvas->updateCanvas();
}
if (((RET_ITEM_STR(huskylens.getCachedCenterResult(ALGORITHM_OCR_RECOGNITION), Result, content))==String("霜降"))) {
k10.canvas->canvasDrawImage(75, 155, "S:/霜降.jpg");
k10.canvas->canvasText("霜降", 95, 245, 0x333333, k10.canvas->eCNAndENFont24, 50, true);
k10.canvas->canvasText(" ", 0, 280, 0xFFFFFF, k10.canvas->eCNAndENFont24, 50, true);
k10.canvas->updateCanvas();
}
}
else {
k10.canvas->canvasText(" ", 75, 135, 0x0000FF, k10.canvas->eCNAndENFont24, 50, true);
k10.canvas->canvasText("正在识别", 0, 280, 0x0000FF, k10.canvas->eCNAndENFont24, 50, true);
k10.canvas->updateCanvas();
}
}

【项目总结】
本项目以行空板 K10、二哈识图 2 与二哈识图小智硬件,实现基于字符识别的二十四节气学习功能。通过二哈识图 2 检测识别到 “寒露” 字符时,行空板同步显示对应节气文字与画面。师生进行语音提问后,二哈识图小智解析节气相关知识,再由二哈识图 2 转化为语音播报输出。项目将字符识别、语音交互相结合,把传统节气文化与智能硬件融合,帮助学生直观了解寒露节气知识,提升二十四节气课堂学习趣味性。



