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

Posted

技术标签:

【中文标题】如何在 Android 中使用 OpenCV+Tesseract 进行准确的文本识别?【英文标题】:How to use OpenCV+Tesseract for accurate Text recognition in Android? 【发布时间】:2014-06-15 05:01:21 【问题描述】:

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

但我没有得到好的结果。

请建议在传递到 Tesseract 之前或在 Tesseract 处理的阶段,我可能会采取哪些步骤/措施来进一步处理图像。

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

【问题讨论】:

【参考方案1】:

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

以下步骤对我很有效:

    获取图像的灰度。 对灰度图像执行canny edge detection。 在灰度图像上应用高斯模糊(存储在单独的矩阵中) 将第 2 步和第 3 步的矩阵输入到SWT algorithm 二值化(阈值)结果图像。 将图像馈送到 tesseract。

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

【讨论】:

StrokeWidthTransform 的 Python 实现链接:github.com/ag-ds-bubble/swtloc

以上是关于如何在 Android 中使用 OpenCV+Tesseract 进行准确的文本识别?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 android 中提高 OpenCV 人脸检测性能?

如何使用适用于 Android 的 OpenCV 减少实时视频序列中的运动效果?

如何在 Android App 中集成 OpenCV Manager

如何在Android项目中导入OpenCV库?

Android:如何使用 OpenCV C++ 打开文件?

如何在 Android Opencv c++ 中获取 abs Mat?