我们可以设置或编辑com.google.android.gms.vision.text.Text.TextBlock的内容吗?

时间:2016-09-15 11:42:55

标签: android textblock

根据OCR TextBlock的Google文档,它包含这些方法。

  • getBoundingBox()

  • getComponents()

  • getCornerPoints()

  • 使用getLanguage()

  • 的getValue()

有没有办法为TextBlock设置setValue()?

提前致谢。

2 个答案:

答案 0 :(得分:0)

没有。 OCR旨在从图像内容中推断文本 - 它不是为了在图像空间中重新创建文本。

您可以随时覆盖自己的文本框,具体取决于您的使用情况。

答案 1 :(得分:0)

这取决于您到底需要什么。如果您想更改视觉API可以识别的显示文本,则可以。

在我使用Vision API中的OCR示例的情况下,您只需要在OcrGraphic类中创建另一个构造函数即可。

private TextBlock mText;
private String cText;

OcrGraphic(GraphicOverlay overlay, TextBlock text, String caption){
    super(overlay);
    mText = text;
    cText = caption;
    .
    .
    .

    // Redraw the overlay, as this graphic has been added.
    postInvalidate();
}

然后修改以前的构造函数

OcrGraphic(GraphicOverlay overlay, TextBlock text) {
    super(overlay);

    mText = text;
    cText = text.getValue();
    .
    .
    .

    // Redraw the overlay, as this graphic has been added.
    postInvalidate();
}

在draw方法中,您需要从变量中绘制文本

public void draw(Canvas canvas) {
    TextBlock text = mText;
    if (text == null) {
        return;
    }
    .
    .
    .
    // we replaced text.getValue() with cText that string are set by either constructors
    canvas.drawText(cText, rect.left, rect.bottom, sTextPaint);

}

现在您可以通过两种方式调用,它将起作用,仅在检测器处理器中必要的时候使用,如下所示:(在 receiveDetections 方法的 OcrDetectorProcessor 类中)< / p>

OcrGraphic graphic = new OcrGraphic(mGraphicOverlay, item);
// Or use new one for your custom text
OcrGraphic graphic = new OcrGraphic(mGraphicOverlay, item, textValue);

mGraphicOverlay.add(graphic);

请让我确切地了解您的情况。公认的答案也是正确的,但这是视觉API之外的一个技巧。