基于文本方向的图像方位角检测

2024-04-29 10:49:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在进行OCR任务,从多个身份证明文档中提取信息。一个挑战是扫描图像的方向。需要确定扫描图像的方向,如PAN、Aadhaar、驾驶执照或任何身份证明。在

已经在Stackoverflow和其他论坛上尝试过所有建议的方法,如OpenCV minarerect、Hough Lines Transforms、FFT、单应性、带有psm0的tesseract osd。都没用。在

逻辑应该返回文本方向的角度-0、90和270度。附件是0度、90度和270度的图像。{a1}不是关于确定倾斜


Tags: 方法文档图像信息方向stackoverflowopencv论坛
1条回答
网友
1楼 · 发布于 2024-04-29 10:49:10

这里有一个基于这样一个假设的方法,即大部分文本都偏向一边。我们可以根据主文本区域的位置来确定角度

  • 将图像转换为灰度和高斯模糊
  • 二值图像的自适应阈值提取
  • 找到轮廓并使用轮廓区域进行过滤
  • 将过滤后的轮廓绘制到蒙版上
  • 根据方向水平或垂直拆分图像
  • 计算每一半的像素数

在对图像进行灰度化和高斯模糊化处理后,采用自适应阈值法得到二值图像

enter image description here

从这里我们找到轮廓,并利用轮廓区域进行滤波,去除小噪声粒子和大边界。我们画出任何通过这个过滤器到掩模上的轮廓

enter image description here

为了确定角度,我们根据图像的尺寸将图像分成两半。如果width > height那么它必须是一个水平图像,所以我们垂直分割成两部分。如果height > width那么它必须是一个垂直的图像,所以我们水平地分成两半

enter image description hereenter image description here

现在我们有了两个一半,我们可以使用cv2.countNonZero()来确定每一半上的白色像素量。以下是确定角度的逻辑:

if horizontal
    if left >= right 
        degree -> 0
    else 
        degree -> 180
if vertical
    if top >= bottom
        degree -> 270
    else
        degree -> 90

left 9703

right 3975

因此图像为0度。这是其他方向的结果

enter image description hereenter image description hereenter image description hereenter image description here

left 3975

right 9703

我们可以断定图像被翻转了180度

下面是垂直图像的结果。注意,因为这是一个垂直的图像,所以我们水平分割

enter image description hereenter image description hereenter image description hereenter image description here

enter image description here

top 3947

bottom 9550

因此结果是90度

^{pr2}$

相关问题 更多 >