ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ML Kit – Android – 文本识别 – 文本方向

2019-07-10 14:35:51  阅读:740  来源: 互联网

标签:android ocr firebase firebase-mlkit text-recognition


我开始了一个新的文件识别文件识别应用程序到架子上,我在Youtube上使用了以下ML Kit文本识别:
Tutorial ML KIT Text Recognition

只要文件号水平写入,它就能完美地工作.
当文本垂直定向并且我将手机置于横向位置时,应用程序会考虑方向并且文本识别不再起作用.

我试着加两个

<activity android:name=".NameOfTheActivity" android:screenOrientation="portrait"> 

在清单和
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)甚至

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR)

进入onCreate方法.即使手机处于横向位置,活动也会保持纵向模式.但是,在横向位置使用手机时,文本识别功能仍无效.

Activity代码的相应部分如下:

//Event Camera View
    cameraView.addCameraKitListener(new CameraKitEventListener() {
        @Override
        public void onEvent(CameraKitEvent cameraKitEvent) {
        }

        @Override
        public void one rror(CameraKitError cameraKitError) {
        }

        @Override
        public void onImage(CameraKitImage cameraKitImage) {
            //Show Dialog
            waitingDialog.show();

            //Processing image
            Bitmap bitmap = cameraKitImage.getBitmap();
            bitmap = Bitmap.createScaledBitmap(bitmap, cameraView.getWidth(), cameraView.getHeight(), false);
            cameraView.stop();

            recognizeText(bitmap);
        }

        @Override
        public void onVideo(CameraKitVideo cameraKitVideo) {
        }
    });

private void recognizeText(Bitmap bitmap) {
    FirebaseVisionImage image = FirebaseVisionImage.fromBitmap(bitmap);

    FirebaseVisionTextRecognizer textRecognizer = FirebaseVision.getInstance().getOnDeviceTextRecognizer();

    textRecognizer.processImage(image)
            .addOnSuccessListener(new OnSuccessListener<FirebaseVisionText>() {
                @Override
                public void onSuccess(FirebaseVisionText firebaseVisionText) {
                    drawTextResult(firebaseVisionText);
                }
            }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            Log.d("EDMT_ERROR", e.getMessage());
        }
    });
}

有没有人有一些提示使其工作或知道一个有效的教程?我在这里看到了一个例子:Firebase example,他们使用media.Image对象来考虑方向.由于我不知道如何修改原始代码(使用位图),我只是试图“停用”方向传感器,以便所拍摄的图像/位图完全相同,无论我是以肖像方式使用手机还是景观位置.在这种情况下,recognText(位图)方法应该在两种情况下返回相同的答案.

解决方法:

我终于使用了位图旋转方法

    public static Bitmap rotateImage(Bitmap source, float angle) {
    Matrix matrix = new Matrix();
    matrix.postRotate(angle);
    return Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(),
            matrix, true);
}

以下修改原始代码

FirebaseVisionImage image = FirebaseVisionImage.fromBitmap(rotateImage(bitmap, 270));

bitmap = Bitmap.createScaledBitmap(bitmap, cameraView.getHeight(), cameraView.getWidth(), false);

这样做…显示的图像仍然是模糊的,但分析的图像是正常的,并在手机的横向位置返回良好的结果(不要尝试纵向位置,它将不再工作).

标签:android,ocr,firebase,firebase-mlkit,text-recognition
来源: https://codeday.me/bug/20190710/1424903.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有