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

本文涉及的产品
图像搜索,7款服务类型 1个月
小语种识别,小语种识别 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





目录
相关文章
|
3月前
|
机器学习/深度学习 数据采集 文字识别
7大核心技术:智能OCR如何助力市政单位文档处理数字化转型
随着政务服务数字化的推进,市政单位面临复杂的文档处理需求。本文介绍了一种基于智能OCR技术的一站式文档处理方案,涵盖数据矫正、通用文字识别、表格与票据结构化提取、卡证分类、印章检测、手写文字识别及图像内容识别等核心技术,显著提升工作效率与文档解析的准确性。
|
8天前
|
人工智能 自然语言处理 算法
基于DeepSeek的具身智能高校实训解决方案——从DeepSeek+机器人到通用具身智能
本实训方案围绕「多模态输入 -> 感知与理解 -> 行动执行 -> 反馈学习」的闭环过程展开。通过多模态数据的融合(包括听觉、视觉、触觉等),并结合DeepSeek模型和深度学习算法,方案实现了对自然语言指令的理解、物体识别和抓取、路径规划以及任务执行的完整流程。
154 12
|
24天前
|
人工智能 机器人 API
AppFlow:无代码部署Dify作为钉钉智能机器人
本文介绍如何通过计算巢AppFlow完成Dify的无代码部署,并将其配置到钉钉中作为智能机器人使用。首先,在钉钉开放平台创建应用,获取Client ID和Client Secret。接着,创建消息卡片模板并授予应用发送权限。然后,使用AppFlow模板创建连接流,配置Dify鉴权凭证及钉钉连接凭证,完成连接流的发布。最后,在钉钉应用中配置机器人,发布应用版本,实现与Dify应用的对话功能。
AppFlow:无代码部署Dify作为钉钉智能机器人
|
3月前
|
人工智能 自然语言处理 算法
具身智能高校实训解决方案 ----从AI大模型+机器人到通用具身智能
在具身智能的发展历程中,AI 大模型的出现成为了关键的推动力量。高校作为培养未来科技人才的摇篮,需要紧跟这一前沿趋势,开展具身智能实训课程。通过将 AI 大模型与具备 3D 视觉的机器人相结合,为学生搭建一个实践平台。
288 64
|
2月前
|
机器学习/深度学习 人工智能 算法
人工智能与机器人的结合:智能化世界的未来
人工智能与机器人的结合:智能化世界的未来
346 32
|
1月前
|
数据采集 监控 数据可视化
优锘科技携手逐际动力,共创数字孪生与具身智能机器人新未来
近日,优锘科技与逐际动力正式宣布达成战略合作,双方将在业务和技术领域展开深度协作,共同探索数字孪生与具身智能机器人的融合应用。这一合作无疑将为智能科技领域注入全新动力,推动行业智能化转型迈向更高水平。
|
2月前
|
人工智能 自然语言处理 机器人
机器人迈向ChatGPT时刻!清华团队首次发现具身智能Scaling Laws
清华大学研究团队在机器人操作领域发现了数据规模定律,通过大规模数据训练,机器人策略的泛化性能显著提升。研究揭示了环境和对象多样性的重要性,提出了高效的數據收集策略,使机器人在新环境中成功率达到约90%。这一发现有望推动机器人技术的发展,实现更广泛的应用。
91 26
|
3月前
|
算法 机器人 语音技术
由通义千问驱动的人形机器人具身智能Multi-Agent系统
申昊科技人形机器人小昊,集成通义千问多模态大模型的具身智能系统,旨在讲解销售、迎宾表演等场景。机器人通过语音、动作等方式与用户互动,利用云端大语言模型处理自然语言,结合视觉、听觉等多模态感知技术,实现流畅的人机对话、目标追踪、展厅讲解等功能。
373 4
由通义千问驱动的人形机器人具身智能Multi-Agent系统
|
2月前
|
机器学习/深度学习 文字识别 自然语言处理
医疗行业化验单智能识别技术探讨:OCR与表格识别的应用
本文探讨了OCR与表格识别技术在医疗化验单处理中的应用,通过自动化数据提取和录入,显著提高了效率和准确性,降低了人工劳动强度和错误率。技术实现包括图像预处理、文字识别和表格解析等核心算法的优化,支持与医院信息管理系统集成,未来将向跨模态数据融合、多语言适配及数据安全方向发展。
|
3月前
|
自然语言处理 算法 机器人
智能电话销售机器人源码搭建部署系统电话机器人源码
智能电话销售机器人源码搭建部署系统电话机器人源码
55 4

热门文章

最新文章