Android實現OCR掃描識別數字圖片之圖片掃描識別


[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段代碼就能運行了, 貌似只能截取數字, 最近要做這個


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM