我正在研究使用开源库检测照片中测试的最佳方法。
我认为标准方法如下(注意:步骤1 - 4都使用OpenCV):
1)检测文件大纲
2)使用所述轮廓
转换文档,使其平整并裁剪3)使用过滤器将文档背景设为白色
4)将得到的图像输入Tesseract
这是最佳流程,还是有更好的方法,还是更好的工具? 此外,如果照片没有文档大纲(步骤1和2可能是多余的),会发生什么情况?
是否有自动检测文档方向(即纵向/横向)?
答案 0 :(得分:1)
我认为你的过程很好。我已经为Android项目使用了类似的过程
我认为,如果文档是纵向/横向的,唯一可以发现的方法是推断轮廓边界框边长。
我不认为有自动的方法可以做到这一点,也许你可以找到最接近4段折线的外部轮廓(所有这些都可以在opencv中完成)。
为了实现这一目标,您必须使用contour hierarchy和contous approximation(请参阅cv2.approxPolyDP
)。
这就是我如何进行自动轮廓检测。
正如我所说,你的算法的其余部分对我来说似乎没问题。
PS。我将离开Android project GitHub link。我不知道它是否对你有用,但在这里我通过拖动一些手柄来指定轮廓,然后使用Java和OpenCV转换图像并将其提供给Tesseract。是的,在Android应用程序的主线程中这样做是一个非常糟糕的主意,是的,该应用程序尚未完成。我只想尝试使用OCR,因此我并不关心性能和可用性,因为这不是为了使用,而是为了学习。
答案 1 :(得分:1)
查找均匀宽度变换。
这样做是检测相对于其相对边缘具有或多或少相同宽度的边缘。所以像排水管(可以在以后通过时消除)以及大多数文本。虽然从概念上讲它类似于距离变换,但已发布的方法使用了相当临时的普通投影方法和Canny边缘检测。