在燃气表上执行 OCR

Posted

技术标签:

【中文标题】在燃气表上执行 OCR【英文标题】:Performing OCR on gas meter 【发布时间】:2019-03-13 23:18:39 【问题描述】:

我想,以便它可以读取值。我要对其执行 OCR 的仪表示例:

在这种情况下,OCR 应该返回 25539144。

如您所见,有一点问题:仪表周围有很多文字。所以一个普通的 OCR 库在这里不起作用,因为它也会返回它周围的文本。

我已经尝试过物体检测来检测仪表,但唯一似乎运行良好的(因为我只有 50 张图片)是 azure 认知服务。问题是稍后它应该能够在实时流中检测到它,因此无法使用 Web 服务。

谁能帮助我解决这个问题的正确方向?

【问题讨论】:

我正在考虑是否可以从颜色中获得一些提升:数字及其背景的颜色。做一些特征工程,你不需要很多图片来训练,因为数字检测是一项相当复杂的技术。我将从阈值开始包含这些数字的区域。祝你好运。 在某种程度上似乎与 ANPR(自动车牌识别)类似。您大致知道您期望的格式,并且可能还有其他文本 - ANPR 面临同样的挑战。也许您可以利用现有的 ANPR 框架并重新训练/迁移学习?例如,github.com/openalpr/openalpr 我有类似的要求,正在寻找可能的帮助,请告诉我你是如何实现这一目标的。 【参考方案1】:

如果关于使用颜色的评论对您没有帮助,那么您可以尝试这种方法:

一种可能的方法是训练一个模型(也许是一个神经网络)来围绕使用数字绘制一个边界框。

您将不得不手工绘制几个方框来提供训练示例。

一旦你运行了这个“边界框创建模型”,你就可以剪掉所有不相关的东西,你将拥有一个新的训练集,其中包含更容易学习的示例。

然后您可以尝试在这个新数据集上重新训练您的 ocr 模型。

【讨论】:

我在 azure 认知服务中进行了尝试。这工作得很好,但不幸的是在线。当我使用 TensorFlow 进行尝试时,它并没有那么顺利。我很想放弃实时图像提要并使其仅成为静止图像。 你试过只使用 keras 吗?它可能比从头开始使用 TF 更容易(除非你必须使用 TF)。另外,你能不能对整个事情进行 ocr,然后用 grep 搜索一个 8 位数字? 整个图像上 OCR 的问题在于它读取的一些图像是 B 而不是 8。所以我不能只是对其进行正则表达式。

以上是关于在燃气表上执行 OCR的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Google TextRecognizer 或 Tesseract 在相机帧的子集上执行 OCR

在一页或多页上执行ocr不成功(未找到文本)怎么办?啥办法都试了。

有人可以成功地对该图像执行 OCR 吗?

OCR文本识别软件提示说无法对该语言执行OCR,请将您的OCR语言设置更改为可用的OCR语言是啥问题?

使用 OpenCV,如何在执行 OCR 之前检测文本方向?

当您执行更多 OCR 时,Tesseract 似乎正在学习字符,如何在使用之间保存学习数据?