如何在 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 减少实时视频序列中的运动效果?