【问题标题】:ML Kit Android Studio java, how to Multible Images Text Recognition?ML Kit Android Studio java,如何进行多图文字识别?
【发布时间】:2022-11-26 11:56:11
【问题描述】:

我有一个包含大约 10 张图像的文件夹,我喜欢用 OCR 提取文本。 这对 1 张图片非常有效,但我的 Java 技能不足以实现对多张图片的处理。

如果有人能向我展示一个干净的解决方案,我将不胜感激。

非常感谢 卢卡斯

TextView output1;
ArrayList<Bitmap> bitmapArray = new ArrayList<Bitmap>();
TextRecognizer recognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS);



private void OCR_list()
{
    String path = Environment.getExternalStorageDirectory().toString()+"/folder_with_images";
        File directory = new File(path);
        File[] files = directory.listFiles();
        for (int i = 0; i < files.length; i++) {
            output1.setText(output1.getText() + ", " + files[i].getName());

            File imgFile = files[i];

            if (imgFile.exists()) {
                bitmapArray.add(BitmapFactory.decodeFile(imgFile.getAbsolutePath()));
            } else {
                output1.setText(output1.getText()+"\n Bitmap not found!");
                return;
            }
        }

    InputImage image = InputImage.fromBitmap(bitmapArray.get(0), 0);
    recognizer.process(image)
            .addOnSuccessListener(
                    new OnSuccessListener<Text>() {
                        @Override
                        public void onSuccess(Text texts) {
                            processTextRecognitionResult(texts);
                        }
                    })
            .addOnFailureListener(
                    new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {
                            e.printStackTrace();
                        }
                    });

编辑:

我现在这样解决了,但看起来很糟糕:

private void new_Recognition(InputImage image) {

    recognizer.process(image)
            .addOnSuccessListener(
                    new OnSuccessListener<Text>() {
                        @Override
                        public void onSuccess(Text texts) {
                            processTextRecognitionResult(texts);
                            bitmapArray.remove(0);
                            if (!bitmapArray.isEmpty()) {
                                InputImage image = InputImage.fromBitmap(bitmapArray.get(0), 0);
                                new_Recognition(image);
                            }

                        }
                    })
            .addOnFailureListener(
                    new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {
                            e.printStackTrace();
                        }
                    });
}

【问题讨论】:

标签: android image google-mlkit


【解决方案1】:

可以直接迭代输入,识别任务会在内部排队,然后按顺序处理。

for (Bitmap input : inputs) {
  recognizer.process(input)
      .addOnSuccessListener(text -> ...)
}

【讨论】:

    【解决方案2】:

    我也必须这样做。您可以共享代码以查看如何操作吗?谢谢你,伊万

    【讨论】:

    猜你喜欢
    • 2019-09-07
    • 1970-01-01
    • 2022-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多