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

本文涉及的产品
自定义KV模板,自定义KV模板 500次/账号
个人证照识别,个人证照识别 200次/月
票据凭证识别,票据凭证识别 200次/月
简介: 讯飞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





目录
相关文章
|
4月前
|
传感器 人工智能 监控
智能耕耘机器人
智能耕耘机器人
106 3
|
1月前
|
人工智能 算法 机器人
机器人版的斯坦福小镇来了,专为具身智能研究打造
【8月更文挑战第12天】《GRUtopia:城市级具身智能仿真平台》新论文发布,介绍了一款由上海AI实验室主导的大规模3D城市模拟环境——GRUtopia。此平台包含十万级互动场景与大型语言模型驱动的NPC系统,旨在解决具身智能研究中的数据稀缺问题并提供全面的评估工具,为机器人技术的进步搭建重要桥梁。https://arxiv.org/pdf/2407.10943
175 60
|
27天前
|
机器人 C# 人工智能
智能升级:WPF与人工智能的跨界合作——手把手教你集成聊天机器人,打造互动新体验与个性化服务
【8月更文挑战第31天】聊天机器人已成为现代应用的重要组成部分,提供即时响应、个性化服务及全天候支持。随着AI技术的发展,聊天机器人的功能日益强大,不仅能进行简单问答,还能实现复杂对话管理和情感分析。本文通过具体案例分析,展示了如何在WPF应用中集成聊天机器人,并通过示例代码详细说明其实现过程。使用Microsoft的Bot Framework可以轻松创建并配置聊天机器人,增强应用互动性和用户体验。首先,需在Bot Framework门户中创建机器人项目并编写逻辑。然后,在WPF应用中添加聊天界面,实现与机器人的交互。
34 0
|
4月前
|
自然语言处理 机器人 Go
【飞书ChatGPT机器人】飞书接入ChatGPT,打造智能问答助手
【飞书ChatGPT机器人】飞书接入ChatGPT,打造智能问答助手
295 0
|
1月前
|
机器人 TensorFlow 算法框架/工具
智能聊天机器人
【8月更文挑战第1天】智能聊天机器人。
73 2
|
1月前
|
人工智能 自然语言处理 安全
盘点国内:AI写作助手_ai智能问答机器人
AI写作助手是利用人工智能技术,特别是自然语言处理(NLP)技术,来辅助用户进行写作的工具。这类助手通过分析大量文本数据,能够理解语言的结构和含义,从而生成、编辑或优化文本内容。AI写作助手通常具有自动纠错、语法检查、内容生成和风格调整等功能,帮助用户提高写作效率和质量。
|
1月前
|
自然语言处理 监控 搜索推荐
使用 LangChain 创建高度互动和智能的聊天机器人
【8月更文第3天】随着自然语言处理(NLP)技术的进步,聊天机器人已成为企业和用户之间互动的重要渠道。LangChain 是一个强大的框架,旨在简化构建复杂语言模型应用程序的过程。本文将详细介绍如何使用 LangChain 框架创建高度互动和智能的聊天机器人,包括选择合适的语言模型、设计对话流程、上下文管理以及集成外部API和服务等内容。
92 0
|
4月前
|
传感器 人工智能 自然语言处理
智能咖啡厅助手:人形机器人 +融合大模型,行为驱动的智能咖啡厅机器人
智能咖啡厅助手:人形机器人 +融合大模型,行为驱动的智能咖啡厅机器人
智能咖啡厅助手:人形机器人 +融合大模型,行为驱动的智能咖啡厅机器人
|
4月前
|
传感器 机器学习/深度学习 算法
植保机器人具备智能感知与决策能力
植保机器人具备智能感知与决策能力
53 2

热门文章

最新文章