2014-04-29 70 views
4

我想使用OpenCV(Android)处理使用相机拍摄的图像,然后将其传递给Tesseract以进行文本(数字)识别,但是直到图像非常(几乎没有噪音)才能获得好结果。 目前我正在对拍摄的图像进行如下处理: 1.应用高斯模糊。 2.自适应阈值:二值化图像。 3.反转颜色使背景变黑。 然后将处理后的图像传递给Tesseract。如何使用OpenCV + Tesseract在Android中进行准确的文本识别?

但是我没有得到好的结果。

请提出在进入Tesseract之前或在Tesseract处理阶段,我可能会采取哪些步骤/措施来进一步处理图像。

此外,有没有其他更好的图书馆在这个Android?

回答

10

您可以隔离/检测图像中的字符。这可以使用强大的算法完成,例如Stroke Width Transform

下面的步骤,我工作得好:

  1. 获取图像的灰度。
  2. 在灰度图像上执行canny edge detection
  3. 应用灰度图像高斯模糊(在单独的矩阵存储)
  4. 从步骤2 & 3输入矩阵转换成SWT algorithm
  5. 二值化(门限)得到的图像。
  6. 将图像传送到tesseract。

请注意,对于第4步,您需要在链接中构建C++库,然后用JNI包装器导入到您的android项目中。此外,您需要对所有步骤进行微调,以获得最佳效果。但是,这至少应该让你开始。

相关问题