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

7
我有一个想法,想要制作一个应用程序。我们有挂在墙上的日程安排板,使用白色背景上的黑线将其分成小矩形。将磁性姓名标签放入特定的分区以指示此人将在该单元中工作。这个系统在人与人之间的沟通中非常有效,但我希望有一种自动保存此计划信息到数据库的方法。
我设想了一个系统,在固定位置设置相机,聚焦于日程安排板。相机会定期拍摄板子的照片。我想编写一些代码来解密哪个名字标签在哪个区域。这需要一些OCR或符号识别。每个名字标签上都有大数字,我将使用它来识别其所属的人。
当我面对新的编程问题时,我自然而然地想到Python。我发现这篇文章-> python image recognition 看起来是一个不错的起点(使用PIL和numpy)。
你知道一个好的方法吗?
更新:我尝试过SimpleCV,目前看起来很好。

2
如果你在名牌上添加条形码或者使用易于OCR的字体书写数字,我认为你可以让任务更容易完成。 - High Performance Mark
3个回答

4
这实际上是一个相当困难的问题,尽管看起来很简单。但是,您可以通过对图像进行一些处理使其更易于管理。我有以下建议:
  • 尽量使相机以合理的镜头直视黑板,以便图像在边缘处最小化失真,并且没有透视失真。
  • 考虑到你偶尔需要拍摄用于分析的图像,性能绝不是问题,因此请拍摄高分辨率图像,使用闪光灯或长曝光时间(因为你拍摄的所有内容都是静止的),以获得最佳的图片质量。
  • 如果你期望的不同标签数量不太多,你可能会发现,通过模板匹配来匹配这些标签的参考图像比进行完整的数字OCR更容易。如果你的图像足够好,这样做会容易很多。python opencv interface非常完整。
  • High Performance Mark对你关于在标签上包含条形码的提问有良好的评论。我会添加QR码的选项,但那只是一样东西。两者都很容易检测,并且有很好的库可以帮助你读取它们。
  • 如果你决定需要OCR,则应查看可用的OCR软件包,而不是尝试自己开发。尝试pytessertesseract引擎或OCRopus python接口

根据我使用类似的图像捕获设置的经验,如果您要拍摄的表面非常反光,例如大多数白板,而且闪光灯与相机位于同一位置,那么闪光灯通常是无用的。但是,无论如何获得良好的照明都是非常有用的。 - High Performance Mark
是的,如果您使用闪光灯,应该将其位置调整好,以避免反射成为问题。通常情况下,您应该从尽可能好的图像开始。 - jilles de wit
我喜欢条形码或QR码的想法。也许每个标签都有一个带有条形码的独特边框。 - jeffery_the_wind

2

既然您提到想用Python解决这个问题,也许您可以看看SimpleCV。它将为您提供一种轻松的方式来从摄像头中获取图像并进行基本的图像处理。


0

我非常赞同Jilles de Witt的看法,从零开始开发OCR将是一项极为困难的图像分析任务。代码阅读可能是更好的选择,但这也将是一个很难的编程工作,并且如其他人所指出的那样需要复杂或有些具有挑战性的成像技术。然而,对于这个应用程序,您确实不需要实现OCR或正式的条形码、QR码或其他二维码。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接