首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Node.js -使用RegEx将原始文本解析为JSON

Node.js -使用RegEx将原始文本解析为JSON
EN

Stack Overflow用户
提问于 2020-03-25 20:38:31
回答 1查看 291关注 0票数 0

我还是Node.js的新手,目前正在为我的厨房开发一个小应用程序。这个应用程序可以扫描收据,并使用OCR提取数据。对于OCR提取,我使用ocr空间网络api。之后,我需要将原始文本解析为JSON结构,并将其发送到我的数据库。我还使用测试了这张收据,结果更加糟糕。目前,我在Node.js中使用Node.js的解析部分苦苦挣扎。

下面是我的JSON结构,用于解析收据数据:

代码语言:javascript
运行
复制
receipt = {
      title: 'title of receipt'
      items: [
               'item1',
               'item2',
               'item3'
          ],
      preparation: 'preparation text' 
}

由于大多数收据都有项目部分,然后是准备部分,因此,到目前为止,我总的做法如下:

  • 搜索原始文本中的“项”和“准备”等关键字
  • 解析这些关键字
  • 之间的文本进行进一步的字符串处理,如缺少空白空间、梳理等

如果缺少这些关键字,这种方法就不起作用。以下面的收据为例,我很难将其解析为JSON结构。收据是用德语写的,没有相应的关键字(“项目”或“祖顿”、“准备”或“祖贝雷通”)。

有必要从原始文本中提供以下信息:

8

  • preparation:

  • 标题:第1行

  • 项目:第2行-

  • 第9行,直到end

你有什么提示或建议如何接近解决方案吗?或者你有什么其他的想法来处理这样的情况吗?

代码语言:javascript
运行
复制
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制表器。

分析后的收据应该如下所示:

代码语言:javascript
运行
复制
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.'
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-20 03:05:25

像RegExp这样的模式匹配解决方案听起来不适合这类分类问题。您可能需要考虑聚类(k-均值等)--训练一个模型来区分成分和指令。这可以通过标记许多菜谱来实现(越多越好),或者通过逐行聚类使用无监督的ML。

如果你出于某种原因需要坚持使用RegExp,你可以跟踪重复的单词。弱方法:说明中将引用成分名称(Chiasemen,Quinoa ),因此您可以在多行上进行匹配,以找到后面重复相同单词的位置:

(?<=\b| )([^ ]+)(?= |$).+(\1)

如果您确实在循环中运行此操作,加上逻辑,您可以找到对组成-指令对,并使用剪影信息处理文档。

您可以利用包含数字等数字数据的成分行,或者可以将“片段、枝、叶”之类的单词存储在字典中。这可以丰富单词边界输入匹配。

我会重新考虑在这里使用RegExp .

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60857033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档