美文网首页
基于百度OCR的Android图片文字识别(三)

基于百度OCR的Android图片文字识别(三)

作者: 就算过了一载春秋 | 来源:发表于2020-03-19 17:17 被阅读0次

    0、前言

    本篇主要在百度OCR的Demo上小作文章。只采用通用文字识别
    基于百度OCR的Android图片文字识别(一)
    基于百度OCR的Android图片文字识别(二)
    代码链接在文末。

    1、分析

    1.1 返回值类型

    识别前
    识别后
    部分代码

    可以得知,识别结果为JSON类型的字符串。

    {
    "log_id":4121873516746509587,
    "direction":0,
    "words_result_num":3,
    "words_result":[
            {"words":"科技说明文阅读题命题规律分析"},
            {"words":"让英语语法学习有趣起来"},
            {"words":"填报志愿须掌握的十大技巧"}
            ]
    }
    

    共有4个键值对,前3个键值对的值为整型,第4个键值对的值为一个JSONArray

    1.2 取数据

    1.2.1 导入jar包

    这里采用org.json包,还可以用net.sf.json包等等。不过需要注意的是它们的方法会有些许差异。
    org.json包复制进目录下的libs文件夹内即可

    1.2.2 MainActivity部分代码

    // 识别成功回调,通用文字识别
            if (requestCode == REQUEST_CODE_GENERAL_BASIC && resultCode == Activity.RESULT_OK) {
                RecognizeService.recGeneralBasic(this, FileUtil.getSaveFile(getApplicationContext()).getAbsolutePath(),
                        new RecognizeService.ServiceListener() {
                            @Override
                            public void onResult(String result)  {
                                try{
    //                                infoPopText(result);
                                    Intent intent = new Intent(MainActivity.this,MyActivity.class);
                                    intent.putExtra("result",result);
                                    startActivity(intent);
    
                                }catch (Exception e){
                                    e.printStackTrace();
                                }
                                
                            }
                        });
            }
    

    将识别出的result传给MyActivity

    1.2.3 MyActivity部分代码

            Intent intent = getIntent();
    
            try {
                JSONObject jsonObject = new JSONObject(intent.getStringExtra("result"));
    
                JSONArray array = jsonObject.getJSONArray("words_result");
    
                String lines = "";
                for(int i=0;i<array.length();++i){
                    lines += (array.getJSONObject(i)).getString("words");
                }
                tv.setText(lines);
    
            } catch (JSONException e) {
                e.printStackTrace();
            }
    

    首先是从MainActivity发送的Intent中取字符串result,并将其转换为JSONObject类型的值jsonObject
    这里只关注识别的结果即"words_result",故利用getJSONArray方法取出"words_result"所对应的JSONArray值array
    然后遍历array,取出"words"对应的值即可,连成一个字符串。

    2、效果展示

    3、代码链接

    https://github.com/wangzhebufangqi/BaiduOCR/tree/master/OCRDemo2

    相关文章

      网友评论

          本文标题:基于百度OCR的Android图片文字识别(三)

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