【问题标题】:Is there a way to detect size of Text with MLKit有没有办法用 MLKit 检测文本的大小
【发布时间】:2020-03-01 22:39:47
【问题描述】:

我一直在使用 Firebase MLkit 检测图像中的文本,我需要一种方法来确定如何检测文本的大小。我意识到 Kotlin 有办法做到这一点,但我正在使用 Java,所以我正在寻找一种在 android studio 上使用 Java 的方法。

我想我需要在下面的检测文本方法中添加一些内容:

private void detectTextFromImage()
    {
        FirebaseVisionImage firebaseVisionImage = FirebaseVisionImage.fromBitmap(imageBitmap);
        FirebaseVisionTextDetector firebaseVisionTextDetector = FirebaseVision.getInstance().getVisionTextDetector();
        firebaseVisionTextDetector.detectInImage(firebaseVisionImage).addOnSuccessListener(new OnSuccessListener<FirebaseVisionText>() {
            @Override
            public void onSuccess(FirebaseVisionText firebaseVisionText) {
                displayTextFromImage(firebaseVisionText);
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Toast.makeText(PatientActivity.this, "Error: " + e.getMessage(), Toast.LENGTH_SHORT).show();
            }
        });
    }

谢谢

【问题讨论】:

  • 不确定我是否正确理解了您的问题。文本的大小是多少,是文本的长度吗?

标签: java android android-studio ocr firebase-mlkit


【解决方案1】:

我找不到 ML 工具包中内置的方法来提取文本大小,但解决方法是获取 Line 或 Element 的框架并计算其高度:

// Image recognition stuff...

List<FirebaseVisionText.TextBlock> blocks = visionText.getTextBlocks();

for (FirebaseVisionText.TextBlock textBlock : visionText.getTextBlocks()) {
    for (FirebaseVisionText.Line line : textBlock.getLines()) {
        Rect frame = line.getBoundingBox();
        float fontSize = frame.bottom - frame.top;

        // Do something with fontSize, e.g. add to a list
    }
}

请注意,根据拍摄图像的角度,某些文本可能会显得更大,因此会有更大的边界框,因此只有在图像与文本正面拍摄时这才是准确的。

希望这会有所帮助! (抱歉我来晚了)

【讨论】:

    猜你喜欢
    • 2014-01-21
    • 2023-01-29
    • 1970-01-01
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 2022-11-22
    • 2020-03-16
    • 1970-01-01
    相关资源
    最近更新 更多