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