Tesseract提取的文字不清晰

时间:2016-03-05 20:18:15

标签: opencv ocr tesseract

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

预期输出

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());
        } 

1 个答案:

答案 0 :(得分:1)

嗯,至少应该向我们提供输入图像,这样我们可以更好地看到问题是什么。但是从预期和实际输出中可以看出,您的输入图像非常不适合扫描,因此可能存在一些可能(最常见)的问题:

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

您应该向我们提供您的输入图片以及处理方式,找到问题要容易得多,如果有可能,请与我们分享。