我还是Node.js的新手,目前正在为我的厨房开发一个小应用程序。这个应用程序可以扫描收据,并使用OCR提取数据。对于OCR提取,我使用ocr空间网络api。之后,我需要将原始文本解析为JSON结构,并将其发送到我的数据库。我还使用测试了这张收据,结果更加糟糕。目前,我在Node.js中使用Node.js的解析部分苦苦挣扎。
下面是我的JSON结构,用于解析收据数据:
receipt = {
title: 'title of receipt'
items: [
'item1',
'item2',
'item3'
],
preparation: 'preparation text'
}
由于大多数收据都有项目部分,然后是准备部分,因此,到目前为止,我总的做法如下:
。
如果缺少这些关键字,这种方法就不起作用。以下面的收据为例,我很难将其解析为JSON结构。收据是用德语写的,没有相应的关键字(“项目”或“祖顿”、“准备”或“祖贝雷通”)。
有必要从原始文本中提供以下信息:
8
你有什么提示或建议如何接近解决方案吗?或者你有什么其他的想法来处理这样的情况吗?
Quinoa-Brot
30 g Chiasamen
350 g Quinoa
70 ml Olivenöl
1/2 TL Speisenatron
1 Prise Salz
Saft von 1/2 Zitrone
1 Handvoll Sonnenblumenkerne
30 g Schwarzkümmelsamen
1 Chiasamen mit 100 ml Wasser
verrühren und 30 Minuten quel-
len lassen. Den Ofen auf 200 oc
vorheizen, eine kleine Kastenform
mit Backpapier auslegen.
2 Quinoa mit der dreifachen
Menge Wasser in einen Topf ge-
ben, einmal aufkochen und dann
3 Minuten köcheln lassen - die
Quinoa wird so nur teilweise ge-
gegart. In ein Sieb abgießen, kalt
abschrecken und anschließend
gut abtropfen lassen.
每一行之间都有一个\n制表器。
分析后的收据应该如下所示:
receipt = {
title: 'Quinoa-Brot',
items: [
'30 g Chiasamen',
'350 g Quinoa',
'70 ml Olivenöl',
'1/2 TL Speisenatron',
'1 Prise Salz',
'Saft von 1/2 Zitrone'
'1 Handvoll Sonnenblumenkerne'
'30 g Schwarzkümmelsamen',
],
preparation: '1 Chiasamen mit 100 ml Wasser verrühren und 30 Minuten quellen lassen. Den Ofen auf 200 oc vorheizen, eine kleine Kastenform mit Backpapier auslegen. 2 Quinoa mit der dreifachen Menge Wasser in einen Topf geben, einmal aufkochen und dann 3 Minuten köcheln lassen - die Quinoa wird so nur teilweise gegegart. In ein Sieb abgießen, kalt abschrecken und anschließend gut abtropfen lassen.'
}
发布于 2020-04-20 03:05:25
像RegExp这样的模式匹配解决方案听起来不适合这类分类问题。您可能需要考虑聚类(k-均值等)--训练一个模型来区分成分和指令。这可以通过标记许多菜谱来实现(越多越好),或者通过逐行聚类使用无监督的ML。
如果你出于某种原因需要坚持使用RegExp,你可以跟踪重复的单词。弱方法:说明中将引用成分名称(Chiasemen,Quinoa ),因此您可以在多行上进行匹配,以找到后面重复相同单词的位置:
(?<=\b| )([^ ]+)(?= |$).+(\1)
如果您确实在循环中运行此操作,加上逻辑,您可以找到对组成-指令对,并使用剪影信息处理文档。
您可以利用包含数字等数字数据的成分行,或者可以将“片段、枝、叶”之类的单词存储在字典中。这可以丰富单词边界输入匹配。
我会重新考虑在这里使用RegExp .
https://stackoverflow.com/questions/60857033
复制相似问题