【问题标题】:Optical character recognition program for photographs照片的光学字符识别程序
【发布时间】:2011-01-27 18:36:18
【问题描述】:

我需要在 Matlab(或任何其他可以做到这一点的语言)中开发一个光学字符识别程序,以便能够提取这张照片上的读数。

该程序必须能够上传尽可能多的图片文件,因为我需要处理大约 40000 张图片。

此任务的总体目标是记录照片中显示的特定燃气表的日内燃气读数。这是一个当前设置的网络摄像头,被编程为每分钟拍摄一次读数,因此 OCR 程序将有助于获得历史日内气体读数数据。

哪个是最好的软件?有没有可用的在线资源?

【问题讨论】:

  • @Yochai Timmer 最后一行:P 谢谢你..
  • 你能控制什么?也就是说,您可以根据自己的喜好放置网络摄像头吗?可以额外照明吗?
  • @hash blue 是的,我可以完全控制网络摄像头和房间内的照明
  • 如果您每分钟都在测量,那么您有很多额外的信息可以使用。如果一个字符在最后 N 张图片中没有变化,但在这张图片中发生了变化,你可以(可能)安全地假设它上升了 1。同样,如果你在 t1 和 t3 成功读取仪表,但不是 t2,只需取t1 和 t3 时间的平均值,你很好。

标签: matlab ocr


【解决方案1】:

我将基本识别步骤分解如下:

  1. 在图像中定位仪表显示
  2. 隔离并清理数字
  3. 计算特征
  4. 使用您使用历史示例训练的模型对每个数字进行分类

假设特定位置的摄像头不移动,则步骤 1 只需执行一次。第 2 步将包括增强对比度和过滤噪声等内容。第 3 步可以包括您能想到的任何有用的计算,例如“墨水”(白色)像素的均值和偏斜。第 4 步将利用您构建的模型将单个数字分类为“0”、“1”、...“9”,并且可以使用 k 最近邻、逻辑回归、SVM、神经网络等来完成。

【讨论】:

  • 不要忘记将字母限制为 0-9。
【解决方案2】:

有几件事可以使 Predictor 的答案中的 1 变得容易:将凸轮直接放在仪表上方,添加足够的光线,也许在仪表周围放置亮粉色条以帮助分割显示 :)。

执行此操作后,凸轮保持固定,您可以使用一次手动过程,然后将其应用于所有后续图像以分割数字。如果照明良好且一致,您也许可以使用简单的模板匹配来识别每个分段数字。

实际上,一旦你获得了所有数字的样本,你甚至可以用更简单的方法(比如阈值图片的总和)对它们进行分类。

【讨论】:

    【解决方案3】:

    最近,有很多物体检测方法可以用来处理这个问题。

    【讨论】:

    • 你能举个例子吗?如果不是,这更像是一个评论而不是一个答案。
    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2011-07-16
    • 1970-01-01
    • 2013-12-25
    • 2014-04-25
    • 2016-08-09
    • 2014-05-27
    • 1970-01-01
    • 2020-12-26
    相关资源
    最近更新 更多