4

我正在为自己制作一个应用程序来扫描收据,并将数据放入数据库中。我尝试使用 ML kit 文本识别,效果很好。但是,我在从识别的文本中提取数据时遇到问题。我会用一个例子来解释:

这是收据的格式,这就是我想要获取数据的方式:

+--------+--------+-------+-------+
| Amount |  Name  | Price | Total |
+--------+--------+-------+-------+
|      1 | Cheese |       | 1,15  |
|      1 | Eggs   |       | 2,59  |
|      2 | Milk   | 0,99  | 1,98  |
|      1 | Butter |       | 0,80  |
+--------+--------+-------+-------+

然而,在运行文本识别时,它会以非常奇怪的方式格式化数据。例如,上面的收据会给出这些块:

Amount
Price
Name Cheese Eggs Milk 0,99
Butter
Total 1,15 2,59
1,98 0,80

它似乎跳过了金额列中的单个数字,但我可以解决这个问题。但是我不知道如何将上述数据解析为我想要的数据,尤其是将价格与名称联系起来。有没有办法改变块,使它只需要收据的行或列,而不是这种随机性?

编辑:当使用线条或元素而不是块时,我得到以下结果:

Amount
Price
Name
Cheese
Eggs
Milk
0,99
Butter
Total
1,15
2,59
1,98
0,80

但是我仍然有同样的问题:如何将商品与正确的价格配对?

4

1 回答 1

3

在这种情况下尝试使用线条或元素而不是块(https://developers.google.com/ml-kit/vision/text-recognition/android#4.-extract-text-from-blocks-of-recognized-text ) 然后使用这些块的位置来重建表。

于 2020-07-16T19:08:58.097 回答