opencv - 如何检测照片中的文字

标签 opencv tesseract

我正在研究使用开源库检测照片测试的最佳方法。

我认为标准的方式如下(注意:第1-4步全部使用OpenCV):

1) 检测文档的轮廓

2) 使用上述轮廓转换文档,使其变平并裁剪

3) 使用滤镜将文档背景设为白色

4) 将生成的图像提供给 Tesseract

这是最佳流程,还是有更好的方法或更好的工具? 另外,如果照片没有文档大纲(可能第 1 步和第 2 步是多余的),会发生什么情况?

有没有自动检测文档方向(即纵向/横向)的方法?

最佳答案

我觉得你的流程没问题。我在 Android 项目中使用了类似的过程。
我认为,您可以发现文档是否为纵向/横向的唯一方法是根据轮廓边界框的边长进行推理。
我不认为有一种自动的方法可以做到这一点,也许你可以找到最接近的 4 段折线的外部轮廓(在 opencv 中都可行)。
为了得到这个你必须使用contour hierarchycontous approximation (参见 cv2.approxPolyDP)。
这就是我进行自动轮廓检测的方法。
正如我所说,你算法的其余部分对我来说似乎没问题。

附言。我会留下我的 Android project GitHub link .我不知道它是否对你有用,但在这里我通过拖动一些 handle 来指定轮廓,然后使用 Java 和 OpenCV 转换图像并将其提供给 Tesseract。是的,在 Android 应用程序的主线程中执行此操作是一个非常糟糕的主意,是的,该应用程序尚未完成。我只是想尝试OCR,所以我不太关心性能和可用性,因为这不是为了使用,而是为了学习。

关于opencv - 如何检测照片中的文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44928829/

相关文章:

python - cv2.error:完成播放视频后出现OpenCV(3.4.3)错误

image-processing - 如何将通过http post接收到的png图像加载为OpenCV IplImage格式

python - 如何使用python从图像中提取文本或数字

ios - Xcode 5 llvm-g++ 和 llvm-gcc 路径?

tesseract - 如何获取已识别字符的坐标

ios - 如何在 Tesseract 中使用配置变量?

python - 使用python mss在屏幕记录顶部绘制边框

c++ - OpenCV cmake 在为 Docker 构建图像时找不到 CUDA

opencv - 如何使用图像处理从俯 View 中找到铰链点或旋转轴点?

javascript - 将图像传递给 Tesseract.js OCR