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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容