0、前言
本篇主要在百度OCR的Demo上小作文章。只采用通用文字識別。
基于百度OCR的Android圖片文字識別(一)
基于百度OCR的Android圖片文字識別(二)
代碼鏈接在文末。
1、分析
1.1 返回值類型

識別前

識別后

部分代碼
可以得知,識別結(jié)果為JSON類型的字符串。
{
"log_id":4121873516746509587,
"direction":0,
"words_result_num":3,
"words_result":[
{"words":"科技說明文閱讀題命題規(guī)律分析"},
{"words":"讓英語語法學(xué)習(xí)有趣起來"},
{"words":"填報志愿須掌握的十大技巧"}
]
}
共有4個鍵值對,前3個鍵值對的值為整型,第4個鍵值對的值為一個JSONArray
1.2 取數(shù)據(jù)
1.2.1 導(dǎo)入jar包
這里采用org.json包,還可以用net.sf.json包等等。不過需要注意的是它們的方法會有些許差異。
將org.json包復(fù)制進(jìn)目錄下的libs文件夾內(nèi)即可
1.2.2 MainActivity部分代碼
// 識別成功回調(diào),通用文字識別
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發(fā)送的Intent中取字符串result,并將其轉(zhuǎn)換為JSONObject類型的值jsonObject。
這里只關(guān)注識別的結(jié)果即"words_result",故利用getJSONArray方法取出"words_result"所對應(yīng)的JSONArray值array。
然后遍歷array,取出"words"對應(yīng)的值即可,連成一個字符串。
2、效果展示


3、代碼鏈接
https://github.com/wangzhebufangqi/BaiduOCR/tree/master/OCRDemo2