讯飞AIUI智能机器人7-----文字识别

本文涉及的产品
车辆物流识别,车辆物流识别 200次/月
教育场景识别,教育场景识别 200次/月
票证核验,票证核验 50次/账号
简介: 讯飞AIUI智能机器人7-----文字识别

一、实验目的

本次实验通过使用讯飞开放平台上文字识别的能力,介绍了文字识别中的 印刷体文字识别 WebAPI 的使用,结合服务机器人的相机能力,开发一个简单 的印刷体文字识别应用程序,了解文字识别技术如何在机器人上使用, 同时对文字识别技术的使用步骤进行详细讲解,理解起来更加轻松。调用讯飞接口和外设套件通过套件摄像头实现文字捕捉和识别。

二、实验内容

随着人工智能的热度上升,图像识别这一分领域也渐渐被人们所关注。图像 识别中最贴近我们生活的可能就是 OCR 技术,OCR 指电子设备(例如扫描仪 或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用 字符识别方法将形状翻译成计算机文字的过程。 从整体上来说,OCR 一般分为两个大步骤:图像处理以及文字识别。图像处 理是在识别文字前,我们要对原始图片进行预处理,以便后续的特征提取和学习。 这个过程通常包含:灰度化、二值化、降噪、倾斜矫正、文字切分等子步骤。每 一个步骤都涉及了不同的算法。处理完毕后,就到了文字识别的阶段。主要有以下几个阶段

💖💖1、了解讯飞开放平台账号申请、应用创建及配置;

💖💖2、了解讯飞开放平台文字识别相关 API;

💖💖3、掌握印刷体文字识别 WebAPI 的使用

三、实验步骤

步骤 1:开放平台账号申请及能力注册

由于本次实验开发的人脸识别功能应用使用的是科大讯飞开放平台提供的 人脸识别能力,我们需要先到讯飞的开放平台申请账号,并完成平台上相关能力 注册,具体流程如下: 1)首先,我们要在讯飞开放平台进行账号注册,地址:https://www.xfyun.cn/image.png



插条广告,不过说真的,这款软件是真的不错。


介绍一下牛客。Leetcode有的刷题牛客都有,除此之外牛客里面还有招聘(社招和校招)、一些上岸大厂的大佬的面试经验。 牛客是可以伴随一生的编程软件(完全免费),从学校到社会工作,时时刻刻你都可以用到,感兴趣的可以去注册试试可以伴随一生的刷题app


完成注册后,登陆开放平台,进入控制台。点击“创建应用”,完成应用相关信息的输入后,点击“提交”按钮image.png



此时,进入“我的应用”界面,可以看到添加的应用信息,包括 appid 等,点 击“其他”,在弹出的界面中选择“人脸验证与检索”的管理服务,可以选择对 应的服务完成 SDK 的下载image.png



在其他中找到文字识别,下载对应的SDK。注意,文字识别需要的印刷体。

步骤 2:项目工程搭建及能力包导入image.png

步骤 3:功能代码开发

(部分代码:)


套件初始化

机器人能力一般会作用于项目的整个生命周期,因此我们的初始化可以在 MainActivity.的 onCreate 中进行,也可以在应用的 Application。通过oncreate初始化机器人(套件)的能力。

@Override
public void onCreate() {
    super.onCreate();
    mContext = getApplicationContext();
    init();
}
private void init() {
    StarLogAbility.getInstance().initAbility(this);
    //基础能力初始化
    StarCommonAbility.getInstance().initAbility(this,
            RobotType.TYPE_TEACHING, new StarCommonAbility.onResultCallback() {
                @Override
                public void onResult(boolean isSuccess, String hardCode) {
                    if (isSuccess) {
                        //硬件和业务状态初始化
                        switch (hardCode) {
                            case PartCode.HARDWARE_PARTCODE.CODE_EMOJI:
                                //设置初始表情
                                EmojiHelper.doEmojiBase();
                                break;
                            case PartCode.HARDWARE_PARTCODE.CODE_GPIO:
                                //默认加载的时候,将拾音方向设置为默认正前方的0度。
                                GPIOHelper.getInstance().setMainMic(0);
                                break;
                            case PartCode.HARDWARE_PARTCODE.CODE_CENTER_LIGHT:
                                //关闭腹部灯带
                                CenterLightHelper.takeCenterLightOff();
                                break;
                            default:
                                break;
                        }
                    }
                }
            });
    //图像识别能力初始化,离线OCR识别实验demo中暂不使用
    //因第一次初始化时间可能较慢,可以先进行实例化操作
    //PictureOCRHelper.getInstanse();
    //图像识别能力初始化,OcrHelper为封装的webapi的接口帮助类
    OcrHelper.getInstance().init(APPID,API_KEY);
}

💦💦Camera 初始化


我们创建 MainActivity,在 onCreate 后初始化相机, openCamera 传入 FrameLayout(可选)为预览视图,setOnCameraPrepareListener 为准备完成回调, setGetBitmapListener 设置获取图像的回调。

public class MainActivity extends AppCompatActivity implements CameraHelper.GetBitmapListener {
    private static final String TAG = MainActivity.class.getSimpleName();
    private CameraHelper cameraHelper;
    private ImageView picView;
    private ImageView takePicBtn, cropPicBtn, ocrPicBtn, backPicBtn;
    private FrameLayout frameLayout;
    private Bitmap mBitmap, mCropBitmap;
    private HandlerThread handlerThread;
    private Handler mHandler;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        handlerThread = new HandlerThread("ocrThead");
        handlerThread.start();
        mHandler = new Handler(handlerThread.getLooper());
        layoutView();
        initCamera();
    }
    @Override
    public void getBitmap(Bitmap bitmap) {
        mBitmap = bitmap;
        mBitmap = bitmap;
        picView.setImageBitmap(bitmap);
        picView.setVisibility(View.VISIBLE);
        showCrop();
    }

💦💦控件初始化

protected void layoutView() {
    //照片显示
    picView = (ImageView) findViewById(R.id.iv_pic);
    takePicBtn = (ImageView) findViewById(R.id.takepic);
    cropPicBtn = (ImageView) findViewById(R.id.croppic);
    ocrPicBtn = (ImageView) findViewById(R.id.ocrpic);
    backPicBtn = (ImageView) findViewById(R.id.backpic);
    cropPicBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            cropBirmap();
        }
    });
    //OCR识别
    ocrPicBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mHandler.post(new Runnable() {
                @Override
                public void run() {
                    String result = OcrHelper.getInstance().ocrForFont(WEBOCR_GENERAL_URL,mCropBitmap);
                    showToast(result);
                    Log.d(TAG,"result = " + result);
                }
            });
        }
    });
    //返回
    backPicBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showTakePic();
        }
    });
    //拍照按钮
    takePicBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //调用拍照
            cameraHelper.takePreView();
        }
    });
}

步骤 4:应用权限申请

跟以前在安装 APP 的是就申请了权限不同,Google 在 API 23,也就 Android6.0 之后加入了动态权限。对于一些敏感的权限,决定权交还给了用户, 不再是强制申请了。因为这个原因,如果 APP 需要支持 Android6.0 以上的系 文档密级:外部公开 20 统,就需要进行一下适配,否则 APP 就会崩溃。 除了进入设置手动开启权限,还有两种方式让应用获得权限:动态权限申请、 平台签名。本次实验我们采用平台签名的方式获得权限。image.png

步骤5:实验结果image.png





目录
相关文章
|
6月前
|
人工智能 自然语言处理 机器人
9.9K star!大模型原生即时通信机器人平台,这个开源项目让AI对话更智能!
"😎高稳定、🧩支持插件、🦄多模态 - 大模型原生即时通信机器人平台"
179 0
|
4月前
|
弹性计算 自然语言处理 Ubuntu
从0开始在阿里云上搭建基于通义千问的钉钉智能问答机器人
本文描述在阿里云上从0开始构建一个LLM智能问答钉钉机器人。LLM直接调用了阿里云百炼平台提供的调用服务。
从0开始在阿里云上搭建基于通义千问的钉钉智能问答机器人
|
3月前
|
机器人
陌陌自动回复消息脚本,陌陌自动打招呼回复机器人插件,自动聊天智能版
这是一款为陌陌用户设计的自动回复软件,旨在解决用户无法及时回复消息的问题,提高成交率和有效粉丝数。软件通过自动化操作实现消息检测与回复功能
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
TsingtaoAI具身智能机器人开发套件及实训方案
该产品套件创新性地融合了先进大模型技术、深度相机与多轴协作机械臂技术,构建了一个功能强大、灵活易用的人机协作解决方案。其核心在于将智能决策、精准感知与高效执行完美结合,为高校实训领域的发展注入新动力。
348 10
|
5月前
|
人工智能 自然语言处理 安全
Deepseek 的 “灵魂”,宇树的 “躯体”,智能机器人还缺一个 “万万不能”
法思诺创新探讨智能机器人产业的发展,指出Deepseek的AI“灵魂”与宇树的机器人“躯体”虽技术先进,但缺乏关键的商业模式。文章分析了两者在硬件和软件领域的困境,并提出通过软硬一体化结合及明确商业模式,才能实现真正实用的智能机器人。未来,需聚焦高频刚需场景、优化付费体验、推动技术创新,让智能机器人走进千家万户。法思诺提供相关课程与咨询服务,助力行业突破。
125 0
|
5月前
|
传感器 机器学习/深度学习 人工智能
自己都站不稳,怎么护理人?智能机器人的自主平衡问题,用TRIZ和DeepSeek有解吗?
法思诺创新探讨机器人自主平衡难题,结合TRIZ创新理论与DeepSeek大模型,为仿人机器人动态平衡提供解决方案。文章分析了机器人平衡差的原因,包括复杂环境、传感器限制、算法难度和机械设计挑战等,并提出通过TRIZ原理(如矛盾识别、理想解)与DeepSeek的AI能力(如数据学习、强化学习)协同优化平衡性能。展望未来,2024-2028年将实现从实验室验证到家用场景落地,推动消费级人形机器人发展。
190 0
|
8月前
|
人工智能 机器人 API
AppFlow:无代码部署Dify作为钉钉智能机器人
本文介绍如何通过计算巢AppFlow完成Dify的无代码部署,并将其配置到钉钉中作为智能机器人使用。首先,在钉钉开放平台创建应用,获取Client ID和Client Secret。接着,创建消息卡片模板并授予应用发送权限。然后,使用AppFlow模板创建连接流,配置Dify鉴权凭证及钉钉连接凭证,完成连接流的发布。最后,在钉钉应用中配置机器人,发布应用版本,实现与Dify应用的对话功能。
1776 7
AppFlow:无代码部署Dify作为钉钉智能机器人
|
7月前
|
人工智能 自然语言处理 算法
基于DeepSeek的具身智能高校实训解决方案——从DeepSeek+机器人到通用具身智能
本实训方案围绕「多模态输入 -> 感知与理解 -> 行动执行 -> 反馈学习」的闭环过程展开。通过多模态数据的融合(包括听觉、视觉、触觉等),并结合DeepSeek模型和深度学习算法,方案实现了对自然语言指令的理解、物体识别和抓取、路径规划以及任务执行的完整流程。
1014 12
|
7月前
|
边缘计算 文字识别 自然语言处理
当OCR遇见大语言模型:智能文本处理的进化之路
简介:本文探讨光学字符识别(OCR)技术与大语言模型(LLM)结合带来的革新。传统OCR在处理模糊文本、复杂排版时存在局限,而LLM的语义理解、结构解析和多模态处理能力恰好弥补这些不足。文中通过代码实例展示了两者融合在错误校正、文档解析、多语言处理、语义检索及流程革新上的五大优势,并以财务报表解析为例,说明了该技术组合在实际应用中的高效性。此外,文章也展望了未来的技术发展趋势,包括多模态架构、小样本学习和边缘计算部署等方向,预示着文本处理技术正迈向智能认知的新时代。(240字)
|
9月前
|
机器学习/深度学习 人工智能 算法
人工智能与机器人的结合:智能化世界的未来
人工智能与机器人的结合:智能化世界的未来
1164 32