2012-02-17 61 views
6

我想要制作一个应用程序。我们有墙上安装的时间表板,它们在白色背景上用黑线分成小矩形。磁性名称标签被放置在特定的分区中以指示此人将在该单元中工作。这个系统非常适合人们之间的沟通,但是我想自动将这个时间表信息自动保存到数据库中。开源办法实时图像处理OCR应用程序?

我在设想一个系统,其中一个摄像头设置在固定位置,侧重于日程表板。定期相机将拍摄该板的图片。我想写一些代码来解密哪个名字标签在哪个区域。这将需要一些OCR或符号识别。每个姓名标签上都有很大的数字,我将用它来标识姓名标签的人。

我在处理新的编程问题时自然会去Python。我发现这个帖子 - >python image recognition看起来像一个好地方开始(与PIL和numpy)。

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

更新:我已经尝试过SimpleCV,现在看起来很好。

+2

如果您将条形码添加到名称标签或将数字写入旨在简化OCR的字体中,我认为您可以更轻松地完成任务。 – 2012-02-17 15:40:31

回答

4

这实际上是一个相当难的问题,即使它看起来很简单。但是,通过对图像进行一些操作以使其易于管理,您可以更轻松地进行操作。我有以下建议:

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

从我使用非常类似的图像捕捉设置的经验来看,如果您尝试拍摄的表面具有高度反射性,例如大多数白板都是闪光灯,并且闪光灯与闪光灯位于相同的位置,则闪光灯通常非常无益相机。但是,良好的照明,但是来,是最有用的。 – 2012-02-20 09:33:10

+0

是的,如果您使用闪光灯,您应该定位以便反射b不会成为问题。一般来说,你应该从你能得到的图像开始。 – 2012-02-20 09:38:25

+0

我喜欢条形码或QR码的想法。也许每个带有条形码的标签都有一个明确的边界。 – 2012-02-20 13:26:14

2

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

0

我非常同意jilles de witt认为OCR将是一个非常艰巨的图像分析任务,从零开始开发。阅读代码是一个更好的选择,但这也将是难以编程的,并且需要其他人已经注意到的复杂或有些具有挑战性的成像。但是,对于这个应用程序,你真的不需要实施OCR或正式的条形码,QR或其他二维码。

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