我一直在尝试使用Python实现一个OCR程序,该程序读取具有特定格式的数字XXX-XXX。我使用了谷歌的Cloud Vision API文本识别,但结果并不可靠。在30个高对比度1280 x 1024 bmp图像中,只有少数产生正确的输出,或者至少在结果中包含正确的输出。该程序倾向于省略一些数字,以非英语语言输出或潜入一些特殊字符。
目标是至少连续输出正确的数字,如果结果与其他垃圾混在一起并不重要。有没有办法帮助程序更好地识别数字,例如将结果限制为特定格式,或仅限于数字?
答案 0 :(得分:5)
此时无法添加约束或为Vision API请求提供特定的预期数字格式,如here所述(由Cloud Vision API的项目经理提供)。
您还可以检查所有可能的请求参数(在API reference中),none表示指定数字格式的任何内容。目前只有选项:
text_detection
的预期语言(支持的语言列表here)我假设您已经检查了多个响应(包含不同的图像区域)以查看是否可以使用不同数字的位置重建文本?
请注意,Vision API和text_detection
并未专门针对您的数据进行优化,如果您有大量带注释的数据,也可以选择使用Tensorflow实际构建您自己的模型。 This blogpost解释了用于检测车牌号码的系统设置(具有特定的数字格式)。所有代码都可以在Github上找到,问题似乎与您的问题非常相关。
答案 1 :(得分:4)
我无法告诉你为什么会这样,也许它与语言的读取方式有关,o vs 0,l vs 1等等。但每当我使用OCR并且我专门寻找数字时,我都有读取将检测语言设置为"韩语"。它对我来说非常好用,并且极大地影响了它的准确性。