我是tesseract库的新手,我在Ubuntu 12.04上进行了设置。
我正在使用此data set进行识别。当我使用this code将这些图像提供给tesseract(没有任何预处理)时,我得到了大约70-75%。精度。
我希望精度为90 +%,所以我做了一些预处理步骤,我按照这些步骤来增强图像
预处理步骤
完成这些步骤后,我得到的图像非常清晰seen here。但现在当我使用相同的代码精度将这些图像提供给tessearct时,将其减少到< 50%我不知道为什么?是因为tesseract做了一些预处理吗?如果是,那么我如何限制 tesseract进行预处理。如果没有,那么为什么当图像非常清晰时它会给我带来不好的结果呢?如果我问了一些基本问题,请原谅我。
答案 0 :(得分:1)
关于你的问题,为什么tesseract在使用二进制图像而不是灰色图像作为tesseract的输入时提供更好的结果:
Tesseract将使用各种方法对灰度图像进行内部二值化(没有想到正确使用什么方法进行二值化,有时是局部适应阈值,有时候是全局OTSU阈值。互联网)。当然,tesseract在二进制图像上执行字符识别,并且tesseract的预处理仍然可能在特定问题上失败(例如,没有很好的布局分析)。因此,如果您自己进行预处理部分并将tesseract作为输入图像仅提供带文本的二进制图像并禁用tesseract中的所有布局分析,那么您可以获得比让tesseract为您完成所有操作更好的结果。由于它是一个开源的免费工具,它有一些已知的缺点,必须接受。
如果使用tesseract作为命令行工具,则此线程对参数非常有用。 tesseract command line page segmantation
如果您在开发自己的C ++代码时使用tesseract的源代码,则必须使用正确的参数初始化tesseract。这里的参数在tesseract API方面进行了描述。 tesseract API
答案 1 :(得分:0)