Image processing 检测文本方向
如何检测图像中的文本方向 方向是否颠倒(180度)无关紧要。。但是如果文本线是垂直的(90度或270度),我需要将其旋转90度 我希望在没有OCR的情况下这是可能的,因为在同一图像的4个不同方向上处理OCR需要太多的资源 原因是我在数码相机或智能手机的图像上使用scantailor,如果文本方向为90度或270度,有时图像会被裁剪,文本会丢失您可以使用检测图像中最长的线条,然后找到这些线条的主要坡度。如果坡度接近零,则文本是水平的;如果接近无穷大,则文本是垂直的 您没有提到是否使用库来实现这一点,但在OpenCV中您可以使用。我在以下网站上找到的图像上使用了此选项: 要获取此图像,请执行以下操作: 然后我旋转原始图像: 要获得此信息: 因为您只对水平或垂直感兴趣,所以只需测试直线端点的x坐标差是否接近零(垂直)或y坐标差是否接近零(水平) 建议的解决方案(Hough变换)很好(我对它投了更高的票),但它可能会占用大量CPU。 下面是一个快速解决方案:Image processing 检测文本方向,image-processing,text,Image Processing,Text,如何检测图像中的文本方向 方向是否颠倒(180度)无关紧要。。但是如果文本线是垂直的(90度或270度),我需要将其旋转90度 我希望在没有OCR的情况下这是可能的,因为在同一图像的4个不同方向上处理OCR需要太多的资源 原因是我在数码相机或智能手机的图像上使用scantailor,如果文本方向为90度或270度,有时图像会被裁剪,文本会丢失您可以使用检测图像中最长的线条,然后找到这些线条的主要坡度。如果坡度接近零,则文本是水平的;如果接近无穷大,则文本是垂直的 您没有提到是否使用库来实现这一点
另一种方法是对投影向量进行二值化,将其视为大小为1xH的新图像,进行组件分析并提取斑点。这非常快,因为斑点是一维的。因此,明亮的斑点将大致标记文本行之间的区域,而暗洞标记文本行。如果你的求和很好(vector有一个清晰的分区)-您将有几个大斑点(斑点数量~大致相当于行的数量,斑点的中间长度~大致相当于文本行之间的距离)。但如果您的求和错误(文档旋转90度),您将得到许多随机斑点。连接组件分析需要更多的代码(与std相比)但它可以提供文本行的位置。行“i”将位于blob“i”和blob“i+1”之间。在Python下,您可以使用pytesseract执行以下操作:
重新导入
进口撇渣
导入pytesseract
img_path='/home/name/Pictures/Screenshot from 2019-03-21 13-33-54(副本).png'
im=skimage.io.imread(img\u路径)
newdata=pytesseract.image_to_osd(im,nice=1)
搜索(“(?我成功使用的一种技术是使用Radon变换。您可以在python中找到一个实现示例。您还可以使用获得的投影来检测行距。上面的python实现还显示了如何执行