如何在Android中使用OpenCV + Tesseract进行准确的文本识别?

时间:2014-04-29 10:06:50

标签: android opencv ocr tesseract

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

但我没有取得好成绩。

请建议我在进入Tesseract之前或在Tesseract处理阶段进一步处理图像时可采取哪些步骤/措施。

此外,Android中还有其他更好的库吗?

1 个答案:

答案 0 :(得分:10)

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

以下步骤适合我:

  1. 获取图像的灰度。
  2. 在灰度图像上执行canny edge detection
  3. 在灰度图像上应用高斯模糊(以单独矩阵存储)
  4. 来自步骤2&amp ;;的输入矩阵。 3进入SWT algorithm
  5. Binarize(threshhold)生成的图像。
  6. 将图像输入到tesseract。
  7. 请注意,对于第4步,您需要在链接中构建c ++库,然后使用JNI包装器导入到您的android项目中。此外,您需要对所有步骤进行微调,以获得最佳效果。但是,这至少应该让你开始。