开源方式实时图像处理OCR应用程序?

时间:2012-02-17 15:16:08

标签: image-processing open-source computer-vision ocr

我有一个应用程序,我想要生产。我们有壁挂式的时间表板,在白色背景上使用黑色线条分成小矩形。磁性名称标签放置在特定分区中以指示此人员将在该单元格中工作。这个系统非常适合人们之间的通信,但我希望自动将这种计划信息自动保存到数据库中。

我正在设想一种系统,其中相机设置在固定位置,专注于计划板。相机会定期拍摄电路板的照片。我想写一些代码来破译哪个名称标签在哪个区域。这将需要一些OCR或符号识别。每个名称标签上都有大数字,我将用它来识别名称标签的人。

在处理新的编程问题时,我自然会去Python。我找到了这篇文章 - > python image recognition看起来像是一个好的起点(PIL和numpy)。

你知道这样做的好方法吗?

更新:我尝试过SimpleCV,现在看起来很不错。

3 个答案:

答案 0 :(得分:4)

这实际上是一个非常难的问题,尽管它看起来很简单。但是你可以通过对图像做一些事情来使这个变得容易管理。我有以下建议:

  • 试着让它让你的相机用合适的镜头直视电路板,这样边缘的图像失真最小,而且没有透视失真。
  • 鉴于您将拍摄偶尔的图像进行分析,我认为性能绝不是问题,所以拍摄高分辨率图像,闪光灯或长曝光时间(因为您拍摄的所有内容都是固定的)以获得最佳的图像质量。
  • 如果您期望的不同标签的数量不是太大,您可能会发现通过template matching尝试匹配图像中这些标签的参考图像更容易,而不是进行完整的数字OCR。如果您的图像足够好,这将更容易工作。 python opencv interface非常完整。
  • 高性能标记对您在标记上加入barcodes的问题有一个很好的评论。我会添加QR codes的选项,但这是同样的事情。两者都易于检测,并且有很好的库可以帮助您阅读它们。
  • 如果您确定需要OCR,则应该查看可用的OCR包,而不是尝试自己动手。对pytesser引擎或tesseract OCRopus尝试python interface

答案 1 :(得分:2)

既然你提到你想使用Python来解决这个问题,也许你可以看看SimpleCV。它将为您提供一种从相机中抓取图像并进行基本图像处理的简便方法。

答案 2 :(得分:0)

我非常同意jilles de witt认为OCR将是一项从头开发的极其困难的图像分析任务。代码阅读将是一个更好的选择,但这也很难编程,并且需要其他人注意到的复杂或有些挑战性的成像。但是,对于这个应用程序,您实际上不需要实现OCR或正式条形码,QR或其他2d代码。

由于您的应用程序仅限于有限数量的目标,因此您可以制作自己的简单代码。例如,您可以在每个人的姓名后面的2x2数组中放置0到4个大点。这个简单的示例代码唯一地标识了16个唯一标记,并且这些特征比正式代码更容易成像,提取和解码。如果代码位置不一致,请添加定位线。