为什么文本识别器无法运行?

时间:2018-06-07 12:49:35

标签: android computer-vision text-recognition

在第3行中,检查文本识别器是否可操作 当我在我的华硕me371毫克平板电脑上运行程序时,它永远不会进入其他地方。 这意味着文本识别器永远不会运行,我该怎么办?

TextRecognizer textRecognizer=new TextRecognizer.Builder(getApplicationContext()).build();

if (!textRecognizer.isOperational()) {
    Log.w("MainActivity", "Detector dependencies are not yet available");

} else {
    cameraSource = new CameraSource.Builder(getApplicationContext(), textRecognizer)
            .setFacing(CameraSource.CAMERA_FACING_BACK)
            .setRequestedPreviewSize(600, 400)
            .setRequestedFps(2.0f)
            .setAutoFocusEnabled(true)
            .build();
    cameraView.getHolder().addCallback(new SurfaceHolder.Callback() {
        @Override
        public void surfaceCreated(SurfaceHolder holder) {
            try {
                if (ActivityCompat.checkSelfPermission(getApplicationContext(), android.Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
                    ActivityCompat.requestPermissions(MainActivity.this,new String[]{android.Manifest.permission.CAMERA},ReqiestCameraPermissionID);
                    return;
                }
                cameraSource.start(cameraView.getHolder());


            }catch (IOException e){e.printStackTrace();}



        }

        @Override
        public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

        }

        @Override
        public void surfaceDestroyed(SurfaceHolder holder) {
            cameraSource.stop();

        }
    });
    textRecognizer.setProcessor(new Detector.Processor<TextBlock>() {
        @Override
        public void release() {

        }

        @Override
        public void receiveDetections(Detector.Detections<TextBlock> detections) {
            final SparseArray<TextBlock> items =detections.getDetectedItems();
            if (items.size()!=0){
                textView.post(new Runnable() {
                    @Override
                    public void run() {
                        StringBuilder stringBuilder =new StringBuilder();
                        for (int i =0 ; i<items.size();++i){
                            TextBlock item=items.valueAt(i);
                            stringBuilder.append(item.getValue());
                            stringBuilder.append("\n");
                        }
                        textView.setText(stringBuilder.toString());
                    }
                });
            }


        }
    });
}

1 个答案:

答案 0 :(得分:0)

尝试将其添加到您的AndroidManifest.xml

<application
   android:allowBackup="true"
   android:icon="@mipmap/ic_launcher"
   android:label="@string/app_name"
   android:roundIcon="@mipmap/ic_launcher_round"
   android:supportsRtl="true"
   android:theme="@style/AppTheme">


<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />
<meta-data
    android:name="com.google.android.gms.vision.DEPENDENCIES"
    android:value="ocr"/>