Tensorflow模型用于OCR

18

我是Tensorflow的新手,想要构建一个模型,能够在我的图片上执行OCR。所有的图像中都有9个字符(数字和字母),我的模型会类似于下面这个链接所示的模型:

https://matthewearl.github.io/2016/05/06/cnn-anpr/

我的问题是:我应该首先针对每个字符训练我的模型,然后再组合字符获取完整的标签,还是直接对完整的标签进行训练?

我知道我需要向模型传递图像+对应图像的标签,那么这些标签的格式是什么,是文本文件吗?我对这部分有点困惑,任何关于传递给模型的标签格式的解释都会很有帮助。谢谢。


我建议使用所有标签进行训练,这是最干净的解决方案。如果失败了,那么你可以尝试不同的方法。通常情况下,你会将一个独热编码向量作为标签传入。例如,在狗和猫的情况下,你会将猫的标签表示为[1,0],狗的标签表示为[0,1] - niczky12
好的,我该如何传递例如标签“17C31T2F”? - thug_
HASYv2数据集包含32px x 32px大小的手写符号,可能会对您有所帮助。 - Martin Thoma
2个回答

12

处理这个问题的方式有几种(以下列表并非详尽无遗)。

1)第一种方法是直接从图像中对单词进行分类。如果您的9个字符的词汇量有限,可以训练一个针对特定词汇的分类器。然后,您可以将此分类器与您的图像进行卷积,并选择概率最高的单词。

2)第二个选项是训练一个字符分类器,在图像中找到所有字符,并找到最可能包含您要查找的9个字符的行。

3)第三个选项是训练一个文本检测器,找到所有可能的文本框。然后使用基于序列的模型读取所有文本框,并选择最符合您约束条件的最可能解决方案。下面的论文介绍了一个简单的基于序列的模型:http://ai.stanford.edu/~ang/papers/ICPR12-TextRecognitionConvNeuralNets.pdf。其他基于序列的模型可以基于HMM、连接时序分类、注意力模型等。

4)第四种选项是基于注意力机制的模型,可以端到端地先找到文本,然后逐个输出字符。

请注意,此列表并非详尽无遗,解决此问题的方法可能有很多种。其他选项甚至可以使用第三方解决方案,如Abbyy或Tesseract来帮助解决您的问题。


感谢您,1、2和4有哪些示例可用?请问您认为哪种方式最好且最容易使用?为什么? - thug_

10

谢谢亚历山大的回复,我会尝试按照您建议的方式去做。 - thug_
嗨,亚历山大,你觉得Attention OCR模型能够识别车牌吗?例如像这样的号码牌:https://i.cbc.ca/1.3112890.1434422741!/fileImage/httpImage/image.jpg_gen/derivatives/16x9_620/kevin-eklund-rear-bike-rack.jpg并且假设我们有足够的数据进行训练,你知道这个模型可以达到的大致准确率是多少吗?谢谢。 - VB4EVA
@thug_ 你试过使用注意力OCR吗?它对你有效吗?谢谢。 - VB4EVA
嗨,鲍勃,不幸的是我自己没能让它工作。对于那个项目,我们使用了不使用人工智能的不同OCR解决方案。 - thug_

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接