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
网友评论