8

我有这张图片

带有雕刻文字的图像

如何OCR呢?我知道这非常具有挑战性,但我非常感谢任何帮助。

4

4 回答 4

2

我建议您使用 2 个库来帮助您:

  1. 正方体
  2. Emgu CV - 附带大量示例,将车牌检测作为一个很好的起点。
于 2012-11-29T16:29:02.350 回答
2

如果您有时间自己开发检测,我会大致这样做:

  1. 获取 1000 张左右的图像,然后自己进行 OCR,或者让 Amazon Mechanical Turk 上的人为您完成,几乎不需要任何成本。现在你有一些东西可以调整你的算法并衡量你的表现。
  2. 就像 Ryan 写的那样,手动或使用http://www.roborealm.com/之类的东西使用标准图像过滤器、对比度、颜色、高斯等。看看您是否找不到使文本真正脱颖而出的组合。
  3. 再次尝试库
  4. 如果库仍然不起作用,请尝试使用您对图片的了解将其拆分为单独的数字。您知道应该有多少位以及每个位应该占用多少像素。使用边缘检测或其他东西(也许标准的 OCR 特征提取,加上聚类会给你每个数字作为一个集群?)找到数字并将它们分开。
  5. 对每个数字进行标准 OCR 特征提取(不要太有创意 - 使用现有库或至少阅读最常见和最简单的内容)并将这些特征连同你在 1 下得到的答案一起输入神经网络或 SVM。
  6. 改进您的功能集,直到机器学习起作用。

由于您只有十位数字,这在图像之间相当一致,因此应该可以。

于 2012-11-30T10:01:40.933 回答
1

尝试在图像上使用对比度和伽玛。您所需要的只是大多数图书馆的字符轮廓。根据您的性能 SLA,您可以运行各种对比度/伽玛场景,并让 OCR 软件对其进行几次拍摄。汇总结果并查看是否有任何一致性。从长远来看,这可以为您提供相当准确的结果。

于 2012-11-29T16:33:58.533 回答
-1

机器学习(在这里,使用一些中性网络)对于数字通常已经是准确的,只需最少的培训且易于使用。

一种DIY方法:

  1. 一些神经网络的输出可能是???1160060060??1??? 对于第一个字符。您应该从中选择最常出现的 (0)。

  2. 要正确识别数字的顺序,请使用“移动窗口”,就像您裁剪图像宽度的一小部分一样。

  3. 在图像的整个宽度上重复此操作。

最棘手的一点很可能是计算一个数字和下一个数字之间的空间。

如果幸运的话,数字总是相同的大小(等宽),您可以提前决定需要多少像素。否则,这通常可以在将像素输入神经网络之前在校准步骤中完成。

如果图像可以旋转,那么让一个单独的神经网络帮助您计算旋转实际上可能是有意义的。

程序员(和我)在 1980 年代已经在 Commodore 计算机上尝试了数字识别!如今,您可能会发现一些大学 AI 课程的任务与此类似。

于 2016-10-15T11:36:23.083 回答