17

我一直在尝试用 Python 实现一个 OCR 程序,它可以读取具有特定格式 XXX-XXX 的数字。我使用了 Google 的 Cloud Vision API Text Recognition,但结果不可靠。在 30 张高对比度 1280 x 1024 bmp 图像中,只有少数产生了正确的输出,或者至少在结果中包含了正确的输出。该程序倾向于省略一些数字,以非英语语言输出或潜入一些特殊字符。

目标是至少连续输出正确的数字,不管结果是否撒满了其他垃圾。有没有办法帮助程序更好地识别数字,例如将结果限制为特定格式或仅限数字?

4

2 回答 2

9

我无法告诉你为什么会这样,也许它与语言的阅读方式有关,o vs 0,l vs 1 等。但是每当我使用 OCR 并且我专门寻找数字时,我已经阅读设置检测语言为“韩语”。它对我来说效果非常好,并且极大地影响了准确性。

于 2016-10-01T17:43:03.040 回答
5

目前无法为 Vision API 请求添加约束或提供特定的预期数字格式,如此所述(由 Cloud Vision API 的项目经理提供)。

您还可以检查所有可能的请求参数(在API 参考 中),没有表示任何指定数字格式的内容。目前只有以下选项:

  • latLongRect:指定图像的位置
  • languageHints:表示预期的语言(此处text_detection支持的语言列表)

我假设您已经检查了多个响应(包含不同的图像区域),看看您是否可以使用不同数字的位置重建文本?

请注意,Vision API 并text_detection没有专门针对您的数据进行优化,如果您有大量带注释的数据,也可以选择使用 Tensorflow 实际构建自己的模型。这篇博文解释了检测车牌(具有特定数字格式)的系统设置。所有代码都可以在Github上找到,问题似乎与您的问题非常相关。

于 2016-09-24T20:33:40.170 回答