2016-03-05 56 views
0

我正在实施OCR系统。 Tesseract API用于提取。图像在提取文本之前使用OpenCV进行预处理。在预处理灰度化下,进行锐化和自适应阈值处理。在提取图像中的文本后,获得以下输出。Tesseract不清楚的文本提取

期望输出

Let's talk ;-) 

输出后获得了

" yr _ W??? V. ? _ 
W fag '7? |g§3:? V 
é claw?! 

是否有人知道这样做的原因? 我编辑了这个问题,采取了不同的路径来实现我的项目。我输入一个图像,并使用opnCV来锐化图像。这是输入图像。 input image

然后我得到了以下输出。 Sharpened output image。当我使用Tesseract Api的锐化图像时,它提供了字符混合。但是,如果我将输入图像提供给Tesseract API,则它会正确提取单词。如何去除锐化图像中的阴影区域?

这是我用锋利的输入图像

try { 
      System.loadLibrary(Core.NATIVE_LIBRARY_NAME); 
      Mat source = Imgcodecs.imread("input.jpg", 
        Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE); 
      Mat destination = new Mat(source.rows(), source.cols(), source.type()); 

      Imgproc.equalizeHist(source, destination); 
      Imgcodecs.imwrite("sharpen.jpg", destination); 

     } catch (Exception e) { 
      System.out.println("error: " + e.getMessage()); 
     } 
+0

什么是输入图像? – Ferrybig

+0

这是一个带有文本的jpg图像让我们来谈谈;-) –

+0

我尝试在Java项目中使用tesseract从我们网站上的图像中提取文本。我得到了混合的结果,我们使用的图像通常是500 x 500像素。 – neal

回答

1

好代码,你应该为我们提供至少输入图像,这样我们就可以更好地看到,是什么问题。但是从预期和实际产出看出,你的输入图像的扫描很不好,所以有可能是几个可能的(最常见)的问题吧:

  • 你的输入图像可旋转太多(甚至可以旋转90度左右(我有这个问题,当android手机拍摄的照片转过90度,扫描结果非常糟糕时),Tesseract无法识别扭曲并旋转图像。
  • 图像中的字符分辨率太小(尝试使它们至少为10-12像素,在此之下,扫描输出将显着下降,分辨率越高,扫描越快且越准确(处理对于更大分辨率的图像,取决于你如何做,将会变得更慢,所以应该有一些平衡)
  • 图像可能太模糊,所以可以识别字母炮
  • 字母与阴影或其他物体,太暗或受环境影响太大

您应该向我们提供您的输入图像以及如何处理它,它会更容易找到你的问题,所以如果可能的话,请与我们分享。

+0

我编辑了我的问题。可以请检查一下吗? –