美文网首页
Android中集成百度AI之文字识别

Android中集成百度AI之文字识别

作者: 笔墨Android | 来源:发表于2018-02-06 05:49 被阅读0次

    XSize

    本文知识点简介:

    • 关于百度文字识别的集成

    最近看到百度AI方面的知识有关于文字识别的内容,于是感兴趣集成了一下,特此记录了一下:

    百度文字识别的集成

    • 百度AI开放平台注册账号
    • 下载相应的SDK并导入项目(参见百度说明内容)
    • 创建相应的项目(这里注意创建项目的时候要填写相应的包名)
    • 下载相应的License文件(这个是放在相应assets文件夹下面的)
    • 初始化相应的内容
    • 实现文字识别功能

    1.注册账号略

    2.导入相应的SDK(参见说明内容)

    • (必须)将下载包libs目录中的ocr-sdk.jar文件拷贝到工程libs目录中,并加入工程依赖。
    • (必须)将libs目录下armeabi,arm64-v8a,armeabi-v7a,x86文件夹按需添加到android studio工程src/main/jniLibs目录中

    3.创建相应的项目

    这里创建的部分就省略了,但是有一个问题还是值得说明一下的,当你创建完成项目的时候,应该i心啊在相应的License文件,这个文件的目的是为了安全性,文档上写的是可以有两种方法进行相应的初始化,但是我发现不安全的那种方式已经使用不了了,所以还是乖乖的听话下载吧,下载好之后放在相应的assets文件夹下面就可以了.

    4.初始化相应的内容

    其实一般这种三方项目都是单例的,而且初始化都是在Application中进行的,这里也不例外;看一下初始化的代码:

    OCR.getInstance().initAccessToken(new OnResultListener<AccessToken>() {
        @Override
        public void onResult(AccessToken result) {
            // 调用成功,返回AccessToken对象
            String token = result.getAccessToken();
        }
        @Override
        public void onError(OCRError error) {
            // 调用失败,返回OCRError子类SDKError对象
        }
    }, this);
    

    我是在Application中执行的初始化操作,所以第二个参数传的是一个this,如果你是在相应的Activity中执行的,这里要传全局的上下文.返回的Token什么作用我还没有研究,反正我在集成相应的内容的时候是没有用到的.

    5.实现文字识别功能

    由于我在集成的时候没有集成相应的UI库,所以我这里直接从手机里面取出一张图片进行相应操作的.主要是懒,就没有相应的集成,感兴趣的可以集成一下试试,我是没有尝试,所以这里不再过多说关于UI的问题了.我感觉我写的不会比他们好,其实下载的内容中是有相应的Demo的.

    5.1通用文字识别

    先上实例代码在进行讲解:

            /*设置相应的参数内容,这里主要是设置路径和*/
            GeneralBasicParams param = new GeneralBasicParams();
            param.setDetectDirection(true);//检测朝向的,这个在说明文档中都有
            param.setImageFile(new File(Environment.getExternalStorageDirectory().getPath() + "/timg.jpg"));
    
            // 调用通用文字识别服务
            OCR.getInstance().recognizeGeneralBasic(param, new OnResultListener<GeneralResult>() {
                @Override
                public void onResult(GeneralResult result) {
                    Log.e(TAG, "onResult: " + result.getJsonRes());
                    Gson gson = new Gson();
                    WordsBean wordsBean = gson.fromJson(result.getJsonRes(), WordsBean.class);
                    List<WordsBean.WordsResultBean> words_result = wordsBean.getWords_result();
                    StringBuffer sb = new StringBuffer();
                    for (int i = 0; i < words_result.size(); i++) {
                        sb.append(words_result.get(i).getWords());
                    }
                    Log.e(TAG, "onResult: " + sb.toString());
                }
    
                @Override
                public void onError(OCRError error) {
                    // 调用失败,返回OCRError对象
                }
            });
    

    前半部分主要是设置相应的参数内容,主要是Android根目录下的一张图片,这里的图片你可以自己去网上找一张就行,百度中说的大小是不大于4M,其实在说明文档中还有两个相应的方法是设置语言和是否检测语言的方法,做国际化的可以尝试一下;
    后半部分就是相应实现通用文字识别的代码了,其实代码很简单通过一个相应的回调进行返回识别的文字,这里注意一下WordsBean这个类是我根据返回的json格式自己生成的,返回的GeneralResult类没有什么参数,主要是是返回相应的识别内容的,但是这里是给一个数组,所以内容你可以用StringBuffer进行一下拼接就可以打印出来了.

    其实剩下的内容基本上文档都有,但是上面这个我尝试了,没有什么坑,剩下的内容还没有去尝试,等尝试完成之后在写下来吧,否则怕有什么坑让大家踩到!

    相关文章

      网友评论

          本文标题:Android中集成百度AI之文字识别

          本文链接:https://www.haomeiwen.com/subject/stwqixtx.html