2024-04-26 05:09:12 发布
网友
我有下面所附的图片。我需要提取网格中的数据以及表格结构,并将其转换为dataframe/csv。
我使用OCR提取文本和坐标,但为了提取表格结构,我想提取水平和垂直网格线
OpenCV中是否有一种方法可以很好地进行推广?
到目前为止,我遇到的方法有: 1.霍夫线 2.矩形轮廓提取 3.绘制垂直和水平等高线
您可以使用openCV定义网格结构并从所有单独的区域提取信息,请参阅本文A Box detection algorithm for any image containing boxes
一切都解释得很清楚
在充分尊重@Chrys Bltr的情况下,链接中的解决方案有点过头了。这里有一个更简单的解决方案,所以我认为:
import numpy as np import cv2 import matplotlib.pyplot as plt img_rgb = cv2.imread('your/image') img = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY) th = cv2.adaptiveThreshold(img,255, cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,3,3) _, ctrs, _ = cv2.findContours(img,cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) im_h, im_w = img.shape im_area = im_w * im_h for ctr in ctrs: x, y, w, h = cv2.boundingRect(ctr) # Filter contours based on size if 0.01 * im_area < w * h < 0.1*im_area: cv2.rectangle(img_rgb, (x, y), (x+w, y+h), (0, 255, 0), 2) plt.imshow(img_rgb, cmap='gray', vmin=0, vmax=255)
您可以在上面的过滤过程中存储矩形信息,然后在每个单独的矩形区域内进行OCR
您可以使用openCV定义网格结构并从所有单独的区域提取信息,请参阅本文A Box detection algorithm for any image containing boxes
一切都解释得很清楚
在充分尊重@Chrys Bltr的情况下,链接中的解决方案有点过头了。这里有一个更简单的解决方案,所以我认为:
您可以在上面的过滤过程中存储矩形信息,然后在每个单独的矩形区域内进行OCR
相关问题 更多 >
编程相关推荐