Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Machine learning 基于光学字符识别的文本分类_Machine Learning_Computer Vision_Ocr_Text Classification - Fatal编程技术网

Machine learning 基于光学字符识别的文本分类

Machine learning 基于光学字符识别的文本分类,machine-learning,computer-vision,ocr,text-classification,Machine Learning,Computer Vision,Ocr,Text Classification,问题陈述: 我需要从收据中提取items表,就像你在超市买的那样。 这不是干净的A4纸发票,表格上通常有行 我从OCR引擎中获取字符以及边界框。 然后将其与X轴对齐。 现在,我需要找到桌子 为什么我不采取深入学习的方法: 我不想为此使用深度学习,因为这将是一个非常庞大的项目,非常有风险,很难调试,而且我没有足够的数据。呵呵,我没有足够的培训RNN的经验 我正在寻找一种传统的机器学习方法: 我正在考虑机器学习算法或我自己的算法。 我假设ML更好,但我不确定哪种算法会给出结果数组=项目行,或者至少是

问题陈述:

我需要从收据中提取items表,就像你在超市买的那样。 这不是干净的A4纸发票,表格上通常有行

我从OCR引擎中获取字符以及边界框。 然后将其与X轴对齐。 现在,我需要找到桌子

为什么我不采取深入学习的方法:

我不想为此使用深度学习,因为这将是一个非常庞大的项目,非常有风险,很难调试,而且我没有足够的数据。呵呵,我没有足够的培训RNN的经验

我正在寻找一种传统的机器学习方法:

我正在考虑机器学习算法或我自己的算法。 我假设ML更好,但我不确定哪种算法会给出结果数组=项目行,或者至少是每行的y asix

此外,这种监督ML的特征向量是什么?我有两行的收据和十行的收据

顺便说一下,当我说行时,我指的是行项目。每个项目可以写在两行中

关于如何解决此问题的任何建议?

在OCR API中,isTable=true开关触发表格扫描逻辑,您可以通过该逻辑读取表格并获取所有行

无论如何,如果你使用的是开源软件,那么它的准确性就会降低。当我们谈到商业OCR,如ABBYY或Opentext OCR时,它将为您提供高达99%以上的开箱即用精度,并将自动检测表格。没有训练,没有任何东西,只是工作

这个问题属于自然语言处理/文本分类领域

目前这些问题都是用递归神经网络来解决的。您自己已经提到了这一点,但数据在这些方法中是至关重要的。您没有的数据

我推荐Natural Language Toolkit NLTK,这是一个Python包,可以帮助您以传统的机器学习方式进行自然语言处理。以下步骤可以为您的问题形成一个管道。您的一些示例性数据会很好:

如果标点符号不增加信息增益,请删除标点符号 标记化将文本分为单元、单词或句子 删除停止词游泳或跑步对我来说很好>>游泳跑步很好 词干化或柠檬化将单词简化为词干形式游泳>>游泳 矢量化数据,例如,一袋字将文本编码为整数 特征提取,例如线条长度、线条内的关键词等。 模式提取使用生成的特征对行或整个文本进行分类,考虑行或文本应具有哪些标签
可以找到NLTK的进一步阅读和示例代码。

正如您在评论中提到的,您有收据上的文本。现在,您可以简单地使用LSTM或RNN,但由于它是一种深入的学习,因此只需要从个人经验中说几句话-

它需要你们提到的你们并没有的数据,所以若你们在小数据集上训练NN,那个么它就会过度拟合

如果您可以增加数据集,并且一旦有了数据集,就可以保持类的数量保持一致,这样会更好。这不应该像一个类有很多例子,而另一个只有一个,尽量保持它们的一致性。如果仍然过盈,则使用脱落和/或L2调节


如果深度NN太多,你没有足够的数据,那么为了简单起见,从朴素贝叶斯开始,这个算法非常简单有效。在对@mrk提到的数据进行预处理后,只需将其馈送到朴素贝叶斯(Naive Bayes),它就可以轻松分类。

问题在于如何解决这些问题。我正在使用谷歌OCR将图像转换成文本;但是,我想自己对数据进行分类。如果能看到您的问题图像的一些示例数据、您正在使用的OCR的输出以及您的文本分类算法的预期输出,那就太好了。我将回答这个问题。NaiveBayes可以帮助我分类到列,然后检查价格的简单算法将它分成几行。谢谢!正如我所说,我正在努力避免NN。我将尝试下面的Rishabh Sahrawat答案,请看我的评论。