[Android實例] Android實現OCR掃描識別數字圖片之圖片掃描識別
Android可以識別和掃描二維碼,但是識別字符串呢?
google提供了以下解決方案用的是原來HP的相關資料。
可以吧,這個遷移到Android上。
工程導入成功是可以正常運行的,我是專門換了個電腦重新驗證了下。
如果有不能運行的問題,應該是其他方面的問題,不然我的截圖如何截 啊?
關於識別漢字,理論上可以識別,但是要是實現,並且很實用要做的東西更多。
兄弟不才啊,這2個簡單的工程,僅僅識別數字,也是我鼓搗了半個多月才獲得成果。
apk有時間再發。
http://code.google.com/p/tesseract-ocr/
實現圖像識別的主要方法。
TessBaseAPI baseApi = new TessBaseAPI();
baseApi.init(TESSBASE_PATH, DEFAULT_LANGUAGE);
Bitmap mp = BitmapFactory.decodeResource(getResources(),
R.drawable.number1);
mp = mp.copy(Bitmap.Config.ARGB_8888, false);
baseApi.setImage(mp);
String value = baseApi.getUTF8Text();
需要,實現一個Camera,不停得掃描圖像的,當得出掃描結果的時候就通知用戶。
實現了識別數字 的判斷,不過也可以識別其他字符,需要做的處理就更多了。
附件里有2個工程一個是 OcrLib是android lib工程
一個OcrSearch是個android工程,這2個工程需要都導入eclipse才可以運行起來。
最后先導入 OcrLib,然后再是 OcrSearch
回頭大家可以實現下,識別簡體中文的嘗試
兄弟不是我要分啊,是論壇上傳文件大小有限制啊,
郁悶啊,有不要積分的下載你也可以試試啊。發布到網盤地址大家可以嘗試下啊:
推薦 aiyuaichou
導入后OcrSearch 有錯, CameraManager里, 我注釋掉了
/*@TargetApi(Build.VERSION_CODES.GINGERBREAD)
private void open(Camera theCamera) {
int numCameras = Camera.getNumberOfCameras();
if (numCameras == 0) {
Log.w(TAG, "No cameras!");
theCamera = null;
return;
}
int index = 0;
while (index < numCameras) {
Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
Camera.getCameraInfo(index, cameraInfo);
if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK) {
break;
}
index++;
}
if (index < numCameras) {
Log.i(TAG, "Opening camera #" + index);
theCamera = Camera.open(index);
} else {
Log.i(TAG, "No camera facing back; returning camera #0");
theCamera = Camera.open(0);
}
}*/
獲取相機數..? Camera.getNumberOfCameras() 沒有這個方法, 我就注釋掉了這段
同樣注釋掉了
/*@TargetApi(Build.VERSION_CODES.GINGERBREAD)
private static void getResult(Activity activity, int cameraId, Camera camera) {
Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
Camera.getCameraInfo(cameraId, cameraInfo);
int degrees = getDisplayRotation(activity);
int result;
if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
result = (cameraInfo.orientation + degrees) % 360;
result = (360 - result) % 360; // compensate the mirror
} else { // back-facing
result = (cameraInfo.orientation - degrees + 360) % 360;
}
camera.setDisplayOrientation(result);
}*/
Camera.CameraInfo 沒有這個類, 注釋掉上面2段代碼就能運行了, 貌似只能截取數字, 最近要做這個