【问题标题】:7 segment OCR java application7段OCR java应用
【发布时间】:2016-02-13 01:55:16
【问题描述】:

我已经在这个项目上工作了几个月,需要一些帮助。我正在尝试识别来自旧相机的图像上的字符,该相机使用七段 LED 将帧号印在图像的右下角。问题是这些图像是人的,并且肤色与一些肤色较浅的图像相混淆。但是大多数情况下通常不能被传统的 OCR 识别,我正在尝试使用 Tesseract,但在编译应用程序时未能成功,只是为了对其进行测试和训练。我在这里问是否有其他人有类似的问题或知道 Tesseract 的替代品能够识别这些字符。最好是可训练的 ocr。我的搜索结果为空。

【问题讨论】:

  • 您要处理多少张图片?因为您可能需要进行机器学习,而这很难正确。对于较小的数字(例如 1000),您最好手动输入数据或通过 Mechanical Turk 雇佣劳动力或其他方式?
  • 我相信每天最多 3,500 个,但平均约为 1k
  • 这是一个连续的工作流?我猜你确实想要一些自动化。
  • 这个 ocr 将被插入到我们正在构建的另一个外部应用程序中。

标签: java image-processing ocr tesseract seven-segment-display


【解决方案1】:

大多数 OCR 都存在图像背景问题,因此您应该首先尝试隔离文本。因为这是计算机渲染的文本,所以:

  1. 文字很可能出现在图片中的同一位置

    所以不用找了。

  2. 文本很可能总是使用相同的字体

    如果您拥有它,这将大大简化事情,并且可以使用甚至简单的方法,例如每像素比较或相关系数,从而获得更好的结果,然后是基于神经网络的分类。你也可以试试这个simple OCR

  3. 您可以检测到文本的“准确”颜色,过滤掉所有其余部分

    尝试检测文本是实心的还是透明的(与图像像素相加/异或)。无论如何,在此之后检测文本像素应该不会太难。一旦您可以可靠地检测到您的文本像素,就可以将其他所有内容涂黑,然后使用 OCR。

【讨论】:

  • 问题是我通常可以在肤色较深的人身上分离出角色,但在一些肤色较浅的人身上,我无法检测到皮肤或角色的差异。
  • @Acfarris1 首先尝试制作具有白色、红色、绿色、蓝色、黑色和灰色背景的图像,以确定如何将文本添加到图像中。从单个图像很难说,但看起来像某种混合(颜色被添加到原始像素),如果这是真的,那么非饱和边缘应该是可检测的,非常可靠和容易。但这只是初步的想法......因为这些片段要么被图像压缩扭曲,要么某种抗锯齿效果很难分辨
  • 我知道正在使用的相机不会以数字方式添加帧数,而是通过捕获从 LED 发射器到光传感器的光(真正的老派)
  • @Acfarris1 在这种情况下,您应该尝试扫描所有通道中与形状和厚度相匹配且与每个通道成比例的凸起。所以先找到段光的属性,然后形成扫描线搜索类似这样的东西:How to find horizon line efficiently in a high-altitude photo?
猜你喜欢
  • 2012-03-10
  • 2012-11-17
  • 2016-07-24
  • 2011-08-31
  • 2012-06-13
  • 1970-01-01
  • 2020-04-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多