python opencv识别并提取表格数据

本文涉及的产品
自定义KV模板,自定义KV模板 500次/账号
企业资质识别,企业资质识别 200次/月
车辆物流识别,车辆物流识别 200次/月
简介: 使用opencv、PaddleOCR 识别表格并提取表格数据

表格识别效果图
Snipaste_001.png

思路参考

获取表格

  • 之前我想获取表格是通过canny+HoughLines处理的。
  • 但是这里是通过腐蚀(erode)和膨胀(dilate)得到边界线条的图片。
  • 然后合并在一起形成一个表格
  • 根据轮廓检测函数(findContours)提取表格
  • ocr文字识别

文字提取
上面用过的tesseract对于中文的识别效果不明显;
我这里改为了使用PaddleOCR

代码

import cv2
import numpy as np
from paddleocr import PaddleOCR

image = cv2.imread(r'D:/BaiduNetdiskDownload/kearsImg/bank_/test222.webp', 1)
image_copy = image.copy()
#二值化
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
binary = cv2.adaptiveThreshold(~gray, 255,
             cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 15, -10)
# cv2.imshow("cell", binary)
# cv2.waitKey(0)

rows,cols=binary.shape
scale = 20
#识别横线
kernel  = cv2.getStructuringElement(cv2.MORPH_RECT,(cols//scale,1))
eroded = cv2.erode(binary,kernel,iterations = 1)
#cv2.imshow("Eroded Image",eroded)
dilatedcol = cv2.dilate(eroded,kernel,iterations = 1)
#cv2.imshow("Dilated Image",dilatedcol)
#cv2.waitKey(0)

#识别竖线
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(1,rows//scale))
eroded = cv2.erode(binary,kernel,iterations = 1)
dilatedrow = cv2.dilate(eroded,kernel,iterations = 1)
#cv2.imshow("Dilated Image",dilatedrow)
#cv2.waitKey(0)

#标识交点
bitwiseAnd = cv2.bitwise_and(dilatedcol,dilatedrow)
#cv2.imshow("bitwiseAnd Image",bitwiseAnd)
#cv2.waitKey(0)

#标识表格
merge = cv2.add(dilatedcol,dilatedrow)
#cv2.imshow("add Image",merge)
#cv2.waitKey(0)

contours, hierarchy = cv2.findContours(merge, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
cv2.drawContours(image, contours, -1, (0, 0, 255), 3)
cv2.imshow("findContours",image)
cv2.waitKey(0)

ocr=PaddleOCR(use_angle_cls = True,use_gpu= True) #使用CPU预加载,不用GPU
contours.reverse()
msg = []
for i in range(0,len(contours)-1):
    #if cv2.contourArea(contours[i])>10:
        x,y,w,h=cv2.boundingRect(contours[i])
        im = image_copy[y:y + h, x:x + w]
        #cv2.imshow("im", im)
        #cv2.waitKey(0)
        text = ocr.ocr(im, cls=True)
        if(len(text)==0):
            continue

        text2 = ""
        for t in text:
            if t[1][0] == "":
                continue
            text2 += t[1][0]
            #print(t[1][0])
        msg.append(text2.replace("\n", ""))
for j in range(0,len(msg)):
    print("---",msg[j])
cv2.waitKey(0)
AI 代码解读

提取效

image.png

目录
打赏
0
0
0
0
2
分享
相关文章
如何在Python中高效实现CSV到JSON的数据转换
在实际项目中,数据格式转换是常见问题,尤其从CSV到JSON的转换。本文深入探讨了多种转换方法,涵盖Python基础实现、数据预处理、错误处理、性能优化及调试验证技巧。通过分块处理、并行处理等手段提升大文件转换效率,并介绍如何封装为命令行工具或Web API,实现自动化批量处理。关键点包括基础实现、数据清洗、异常捕获、性能优化和单元测试,确保转换流程稳定高效。
133 83
Python 请求微店商品详情数据 API 接口
微店开放平台允许开发者通过API获取商品详情数据。使用Python请求微店商品详情API的主要步骤包括:1. 注册并申请API权限,获得app_key和app_secret;2. 确定API接口地址与请求参数,如商品ID;3. 生成签名确保请求安全合法;4. 使用requests库发送HTTP请求获取数据;5. 处理返回的JSON格式响应数据。开发时需严格遵循微店API文档要求。
从零开始:用Python爬取网站的汽车品牌和价格数据
在现代化办公室中,工程师小李和产品经理小张讨论如何获取懂车帝网站的汽车品牌和价格数据。小李提出使用Python编写爬虫,并通过亿牛云爬虫代理避免被封禁。代码实现包括设置代理、请求头、解析网页内容、多线程爬取等步骤,确保高效且稳定地抓取数据。小张表示理解并准备按照指导操作。
从零开始:用Python爬取网站的汽车品牌和价格数据
python语言采集淘宝商品详情数据,json数据示例返回
通过淘宝开放平台的API接口,开发者可以轻松获取商品详情数据,并利用这些数据进行商品分析、价格监控、库存管理等操作。本文提供的示例代码和JSON数据解析方法,可以帮助您快速上手淘宝商品数据的采集与处理。
从集思录可转债数据探秘:Python与C++实现的移动平均算法应用
本文探讨了如何利用移动平均算法分析集思录提供的可转债数据,帮助投资者把握价格趋势。通过Python和C++两种编程语言实现简单移动平均(SMA),展示了数据处理的具体方法。Python代码借助`pandas`库轻松计算5日SMA,而C++代码则通过高效的数据处理展示了SMA的计算过程。集思录平台提供了详尽且及时的可转债数据,助力投资者结合算法与社区讨论,做出更明智的投资决策。掌握这些工具和技术,有助于在复杂多变的金融市场中挖掘更多价值。
44 12
实战指南:通过1688开放平台API获取商品详情数据(附Python代码及避坑指南)
1688作为国内最大的B2B供应链平台,其API为企业提供合法合规的JSON数据源,直接获取批发价、SKU库存等核心数据。相比爬虫方案,官方API避免了反爬严格、数据缺失和法律风险等问题。企业接入1688商品API需完成资质认证、创建应用、签名机制解析及调用接口四步。应用场景包括智能采购系统、供应商评估模型和跨境选品分析。提供高频问题解决方案及安全合规实践,确保数据安全与合法使用。立即访问1688开放平台,解锁B2B数据宝藏!
Python爬取某云热歌榜:解析动态加载的歌曲数据
Python爬取某云热歌榜:解析动态加载的歌曲数据
使用 OpenCV 和 Python 轻松实现人脸检测
本文介绍如何使用OpenCV和Python实现人脸检测。首先,确保安装了OpenCV库并加载预训练的Haar特征模型。接着,通过读取图像或视频帧,将其转换为灰度图并使用`detectMultiScale`方法进行人脸检测。检测到的人脸用矩形框标出并显示。优化方法包括调整参数、多尺度检测及使用更先进模型。人脸检测是计算机视觉的基础技术,具有广泛应用前景。
82 10
Python用代理IP获取抖音电商达人主播数据
在当今数字化时代,电商直播成为重要的销售模式,抖音电商汇聚了众多达人主播。了解这些主播的数据对于品牌和商家至关重要。然而,直接从平台获取数据并非易事。本文介绍如何使用Python和代理IP高效抓取抖音电商达人主播的关键数据,包括主播昵称、ID、直播间链接、观看人数、点赞数和商品列表等。通过环境准备、代码实战及数据处理与可视化,最终实现定时任务自动化抓取,为企业决策提供有力支持。

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等