如何强制Android版Mobile Vision阅读完整的文字

时间:2017-02-21 04:22:57

标签: android-vision text-recognition

我已经按照教程实施了谷歌的Android移动视觉。我正在尝试构建一个应用程序,它将扫描收据并找到数字总数。但是,当我扫描以不同格式打印的不同收据时,API将以似乎任意方式检测TextBlocks。例如,在一个收据中,如果几个文本单词由单个空格分隔,则它们被分组为单个TextBlock。但是,如果两个文本的单词由大量空格分隔,则它们将被分隔为独立的TextBlock,即使它们出现在同一行"行"上。我想要做的是强制API将收据的每一行都识别为单个实体。这可能吗?

1 个答案:

答案 0 :(得分:0)

header('Content-Type: application/json');

$json['datoscreate'] = 'ok';

print json_encode($json, JSON_UNESCAPED_UNICODE);

这应该在GraphicOverlay.java文件中,并基本上获取该行中的所有图形。

public ArrayList<T> getAllGraphicsInRow(float rawY) {
    synchronized (mLock) {
        ArrayList<T> row = new ArrayList<>();
        // Get the position of this View so the raw location can be offset relative to the view.
        int[] location = new int[2];
        this.getLocationOnScreen(location);
        for (T graphic : mGraphics) {
            float rawX = this.getWidth();
            for (int i=0; i<rawX; i+=10){
                if (graphic.contains(i - location[0], rawY - location[1])) {
                    if(!row.contains(graphic)) {
                        row.add(graphic);
                    }
                }
            }
        }
        return row;
    }
}

这应该在OcrCaptureActivity.java中,它将TextBlock分解为行,并找到与行相同的行中的块,并检查组件是否都是价格,并相应地打印所有值。

almostEqual中的eps值是它检查行中图形的高度的容差。