位置: IT常识 - 正文

Table Transformer做表格检测和识别实践(clh锅)

编辑:rootadmin
Table Transformer做表格检测和识别实践

推荐整理分享Table Transformer做表格检测和识别实践(clh锅),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:clh锅,ambition锅,锅具 wmf,锅mini,wmm锅,sentruth锅,sentruth锅,sentruth锅,内容如对您有帮助,希望把文章链接给更多的朋友!

计算机视觉方面的三大顶级会议:ICCV,CVPR,ECCV.统称ICE CVPR 2022文档图像分析与识别相关论文26篇汇集简介

论文: PubTables-1M: Towards comprehensive table extraction from unstructured documents是发表于CVPR上的一篇论文 作者发布了两个模型,表格检测和表格结构识别。

论文讲解可以参考【论文阅读】PubTables- 1M: Towards comprehensive table extraction from unstructured documents

hugging face Table Transformer 使用文档 hugging face Table DETR 使用文档

检测表格from huggingface_hub import hf_hub_downloadfrom transformers import AutoImageProcessor, TableTransformerForObjectDetectionimport torchfrom PIL import Imagefile_path = hf_hub_download(repo_id="nielsr/example-pdf", repo_type="dataset", filename="example_pdf.png")image = Image.open(file_path).convert("RGB")image_processor = AutoImageProcessor.from_pretrained("microsoft/table-transformer-detection")model = TableTransformerForObjectDetection.from_pretrained("microsoft/table-transformer-detection")inputs = image_processor(images=image, return_tensors="pt")outputs = model(**inputs)# convert outputs (bounding boxes and class logits) to COCO APItarget_sizes = torch.tensor([image.size[::-1]])results = image_processor.post_process_object_detection(outputs, threshold=0.9, target_sizes=target_sizes)[ 0]for score, label, box in zip(results["scores"], results["labels"], results["boxes"]): box = [round(i, 2) for i in box.tolist()] print( f"Detected {model.config.id2label[label.item()]} with confidence " f"{round(score.item(), 3)} at location {box}" ) region = image.crop(box) #检测 region.save('xxx.jpg') #保存# Detected table with confidence 1.0 at location [202.1, 210.59, 1119.22, 385.09]

Table Transformer做表格检测和识别实践(clh锅)

结果 :效果不错

表格结构识别

参考:https://github.com/NielsRogge/Transformers-Tutorials/blob/master/Table%20Transformer/Using_Table_Transformer_for_table_detection_and_table_structure_recognition.ipynb

import torchfrom PIL import Imagefrom transformers import DetrFeatureExtractorfrom transformers import AutoImageProcessor, TableTransformerForObjectDetectionfrom huggingface_hub import hf_hub_downloadfeature_extractor = DetrFeatureExtractor()file_path = hf_hub_download(repo_id="nielsr/example-pdf", repo_type="dataset", filename="example_pdf.png")image = Image.open(file_path).convert("RGB")encoding = feature_extractor(image, return_tensors="pt")model = TableTransformerForObjectDetection.from_pretrained("microsoft/table-transformer-structure-recognition")with torch.no_grad(): outputs = model(**encoding)target_sizes = [image.size[::-1]]results = feature_extractor.post_process_object_detection(outputs, threshold=0.6, target_sizes=target_sizes)[0]# plot_results(image, results['scores'], results['labels'], results['boxes'])results

获取列图像:

columns_box_list = [results['boxes'][i].tolist() for i in range(len(results['boxes'])) if results['labels'][i].item()==1]columns_1 = image.crop(columns_box_list[0]) columns_1.save('columns_1.jpg') #保存

可视化:import matplotlib.pyplot as plt# colors for visualizationCOLORS = [[0.000, 0.447, 0.741], [0.850, 0.325, 0.098], [0.929, 0.694, 0.125], [0.494, 0.184, 0.556], [0.466, 0.674, 0.188], [0.301, 0.745, 0.933]]def plot_results(pil_img, scores, labels, boxes): plt.figure(figsize=(16, 10)) plt.imshow(pil_img) ax = plt.gca() colors = COLORS * 100 for score, label, (xmin, ymin, xmax, ymax), c in zip(scores.tolist(), labels.tolist(), boxes.tolist(), colors): ax.add_patch(plt.Rectangle((xmin, ymin), xmax - xmin, ymax - ymin, fill=False, color=c, linewidth=3)) text = f'{model.config.id2label[label]}: {score:0.2f}' ax.text(xmin, ymin, text, fontsize=15, bbox=dict(facecolor='yellow', alpha=0.5)) plt.axis('off') plt.show()post_process_object_detection方法:

OpenCV PIL图像格式互转

参考:https://blog.csdn.net/dcrmg/article/details/78147219

PIL–》OpenCV

cv2.cvtColor(numpy.asarray(image),cv2.COLOR_RGB2BGR)import cv2from PIL import Imageimport numpyimage = Image.open("plane.jpg")image.show()img = cv2.cvtColor(numpy.asarray(image),cv2.COLOR_RGB2BGR)cv2.imshow("OpenCV",img)cv2.waitKey()

OpenCV --》 PIL

Image.fromarray(cv2.cvtColor(img,cv2.COLOR_BGR2RGB))import cv2from PIL import Imageimport numpyimg = cv2.imread("plane.jpg")cv2.imshow("OpenCV",img)image = Image.fromarray(cv2.cvtColor(img,cv2.COLOR_BGR2RGB))image.show()cv2.waitKey()

综上,模型检测列代码如下

# 检测模型import cv2from huggingface_hub import hf_hub_downloadfrom transformers import AutoImageProcessor, TableTransformerForObjectDetectionimport torchfrom PIL import Imageimport torchfrom PIL import Imagefrom transformers import DetrFeatureExtractorfrom transformers import AutoImageProcessor, TableTransformerForObjectDetectionfrom huggingface_hub import hf_hub_downloadimport numpy as npimport matplotlib.pyplot as pltimport cv2def dectect_table(file_path): # file_path = hf_hub_download(repo_id="nielsr/example-pdf", repo_type="dataset", filename="example_pdf.png") image = Image.open(file_path).convert("RGB") # transformers.AutoImageProcessor 是一个通用图像处理器 image_processor = AutoImageProcessor.from_pretrained("microsoft/table-transformer-detection") model = TableTransformerForObjectDetection.from_pretrained("microsoft/table-transformer-detection") inputs = image_processor(images=image, return_tensors="pt") outputs = model(**inputs) # convert outputs (bounding boxes and class logits) to COCO API target_sizes = torch.tensor([image.size[::-1]]) results = image_processor.post_process_object_detection(outputs, threshold=0.9, target_sizes=target_sizes)[ 0 ] box_list = [] for score, label, box in zip(results["scores"], results["labels"], results["boxes"]): box = [round(i, 2) for i in box.tolist()] print( f"Detected {model.config.id2label[label.item()]} with confidence " f"{round(score.item(), 3)} at location {box}" ) box_list.append(box) region = image.crop(box) #检测 # region.save('xxx.jpg') #保存 return region#def plot_results(pil_img, scores, labels, boxes): # colors for visualization COLORS = [[0.000, 0.447, 0.741], [0.850, 0.325, 0.098], [0.929, 0.694, 0.125], [0.494, 0.184, 0.556], [0.466, 0.674, 0.188], [0.301, 0.745, 0.933]] plt.figure(figsize=(16, 10)) plt.imshow(pil_img) ax = plt.gca() colors = COLORS * 100 for score, label, (xmin, ymin, xmax, ymax), c in zip(scores.tolist(), labels.tolist(), boxes.tolist(), colors): if label == 1: ax.add_patch(plt.Rectangle((xmin, ymin), xmax - xmin, ymax - ymin, fill=False, color=c, linewidth=3)) # text = f'{model.config.id2label[label]}: {score:0.2f}' text = f'{score:0.2f}' ax.text(xmin, ymin, text, fontsize=15, bbox=dict(facecolor='yellow', alpha=0.5)) plt.axis('off') plt.show()def cv_show(img): ''' 展示图片 @param img: @param name: @return: ''' cv2.namedWindow('name', cv2.WINDOW_KEEPRATIO) # cv2.WINDOW_NORMAL | cv2.WINDOW_KEEPRATIO cv2.imshow('name', img) cv2.waitKey(0) cv2.destroyAllWindows()def dect_col(file_path): ''' 识别列 :param file_path: :return: ''' # example_table= region # width, height = image.size # image.resize((int(width * 0.5), int(height * 0.5))) table = dectect_table(file_path) # 截取左半边 feature_extractor = DetrFeatureExtractor() # file_path = hf_hub_download(repo_id="nielsr/example-pdf", repo_type="dataset", filename="example_table.png") # image = Image.open(file_path).convert("RGB") # image = cv2.imread(file_path) left_table = table.crop((0, 0, table.size[0]//2,table.size[1])) encoding = feature_extractor(left_table, return_tensors="pt") model = TableTransformerForObjectDetection.from_pretrained("microsoft/table-transformer-structure-recognition") with torch.no_grad(): outputs = model(**encoding) target_sizes = [left_table.size[::-1]] results = feature_extractor.post_process_object_detection(outputs, threshold=0.6, target_sizes=target_sizes)[0] plot_results(left_table, results['scores'], results['labels'], results['boxes']) # columns_box_list = [results['boxes'][i].tolist() for i in range(len(results['boxes'])) if results['labels'][i].item()==1] # columns_box_list.sort() # columns_1 = left_table.crop(columns_box_list[0]) # left, upper, right, lower # columns_1.save('columns_1.jpg') #保存 return columns_box_listdect_col(r'xxxx.jpg')
本文链接地址:https://www.jiuchutong.com/zhishi/295358.html 转载请保留说明!

上一篇:07---vue前端实现增删改查(vue.js前端)

下一篇:HTML学生个人网站作业设计:个人主页博客web网页设计制作 (HTML+CSS) (1)(学生个人网页制作html5)

  • iphone13pro怎么调刷新率(iphone13pro怎么调电池百分比)

    iphone13pro怎么调刷新率(iphone13pro怎么调电池百分比)

  • 腾讯会议怎么关闭别人的声音(腾讯会议怎么关闭麦克风)

    腾讯会议怎么关闭别人的声音(腾讯会议怎么关闭麦克风)

  • 微信连不上网是什么情况(微信连不上网是被监控吗)

    微信连不上网是什么情况(微信连不上网是被监控吗)

  • 微信专清里的文件可以删除吗(微信专清里的文件和日期是聊天发送记录吗)

    微信专清里的文件可以删除吗(微信专清里的文件和日期是聊天发送记录吗)

  • 哔哩哔哩免流失败(哔哩哔哩免流没用)

    哔哩哔哩免流失败(哔哩哔哩免流没用)

  • 拼多多为什么助力不成功(拼多多为什么助力还差更多了了,反而)

    拼多多为什么助力不成功(拼多多为什么助力还差更多了了,反而)

  • 电闸跳闸了怎么恢复电(电闸跳闸了怎么开)

    电闸跳闸了怎么恢复电(电闸跳闸了怎么开)

  • 手机ld怎么查(手机ld怎么查定位)

    手机ld怎么查(手机ld怎么查定位)

  • 小米10青春版支持内存卡吗(小米10青春版支持内存卡扩展吗)

    小米10青春版支持内存卡吗(小米10青春版支持内存卡扩展吗)

  • 荣耀v30屏幕尺寸(荣耀v30屏幕尺寸长宽)

    荣耀v30屏幕尺寸(荣耀v30屏幕尺寸长宽)

  • 流量校准失败怎么办(手机卡流量校准失败)

    流量校准失败怎么办(手机卡流量校准失败)

  • 苹果7p后摄像头黑屏怎么回事(苹果7p后摄像头后压什么意思)

    苹果7p后摄像头黑屏怎么回事(苹果7p后摄像头后压什么意思)

  • i58300h压得住1060吗(i58300h压得住2060吗)

    i58300h压得住1060吗(i58300h压得住2060吗)

  • 手机信号hd是什么意思(手机信号hd是什么标志)

    手机信号hd是什么意思(手机信号hd是什么标志)

  • 手机支付宝怎么修改实名认证(手机支付宝怎么坐公交)

    手机支付宝怎么修改实名认证(手机支付宝怎么坐公交)

  • qq音乐app收藏歌曲(qq音乐怎么收藏的歌单)

    qq音乐app收藏歌曲(qq音乐怎么收藏的歌单)

  • iPhone11pro有耳机孔吗(iphone11promax有耳机)

    iPhone11pro有耳机孔吗(iphone11promax有耳机)

  • 人声鼎沸的意思是什么(人声鼎沸的意思是什么(最佳答案))

    人声鼎沸的意思是什么(人声鼎沸的意思是什么(最佳答案))

  • 电池虚电怎么解决(电池虚电怎么解决华为)

    电池虚电怎么解决(电池虚电怎么解决华为)

  • 快手关注对方会知道吗(快手关注对方会显示关注来源吗)

    快手关注对方会知道吗(快手关注对方会显示关注来源吗)

  • 拼多多账单明细怎么查(拼多多账单明细怎么删除)

    拼多多账单明细怎么查(拼多多账单明细怎么删除)

  • 把高级语言写的源程序变为目标程序要经过(把高级语言写的源程序变成目标程序要经过)

    把高级语言写的源程序变为目标程序要经过(把高级语言写的源程序变成目标程序要经过)

  • led显示屏乱码(led显示屏乱码 自动回复正常)

    led显示屏乱码(led显示屏乱码 自动回复正常)

  • 网易云电脑版怎么单曲循环(网易云电脑版怎么退出登录换另一个号)

    网易云电脑版怎么单曲循环(网易云电脑版怎么退出登录换另一个号)

  • 怎么给airpods充电盒充电(怎么给airpods充电盒改名字)

    怎么给airpods充电盒充电(怎么给airpods充电盒改名字)

  • 华为手机通话背景怎么换(华为手机通话背景怎么取消)

    华为手机通话背景怎么换(华为手机通话背景怎么取消)

  • 火山视频如何增加火力(火山视频如何增加粉丝)

    火山视频如何增加火力(火山视频如何增加粉丝)

  • 审计合同需要交税吗
  • 广东税务是什么
  • 减免增值税计入
  • 平台怎么搞
  • 年前一个月工资年后发
  • 对账结算流程
  • 航天金税服务费诈骗
  • 哪些行业不能开具增值税专用发票
  • 知道税额怎么算含税金额
  • 公司账外现金
  • 商业银行贷款账号如何查询
  • 企业纳税成本管理方案
  • 固定资产的原价包括
  • 预付款期末有结余年末如何做账务处理?
  • 企业所得税征收标准2023
  • 账本印花税计税金额或件数怎么申报2023
  • 烟酒发票可以抵扣所得税吗
  • 2016年的发票2019年还能开红字吗
  • 股东借款作为资本金投入
  • 行政单位代管资金怎么做账
  • 协会会费计入什么会计科目二级
  • 企业购入用于捐赠的物品
  • 怎样获取
  • 新版关闭edge地址栏建议
  • win10下载软件被阻止安装怎么办
  • 其他应收款年末余额较大
  • 损失赔偿金要开什么发票
  • 拉姆绍在哪里
  • 手工帐应交税费明细账
  • phpseessid
  • thinkphp django
  • 进项税额转出和不抵扣的区别
  • 其他经营收益怎么算
  • pytorch自动编码器
  • xml 入门
  • 企业实缴各类税金的总额
  • 企业所得税退税申请理由怎么写
  • 房屋出租 交税
  • css代码基础
  • dubbo 实现原理
  • 开票金额应该含增值税吗
  • 盈利性学校收到财政补贴要缴企业所得税吗
  • sql server异常怎么处理
  • 织梦标签理解
  • 不确认递延所得税资产的特殊情况举例
  • 什么指的是土地面积
  • 库存盘盈盘亏说明
  • 银行三证合一是哪三证
  • 对公转账个人垫付怎么写
  • 调整账户有哪几类
  • 建安企业无收入证明模板
  • 主营业务收入转入什么科目
  • 损益类科目如何填写手工总账
  • 应收账款是什么意思
  • MySQL 5.0.96 for Windows x86 32位绿色精简版安装教程
  • sql server 操作
  • sql语句实例大全
  • linux彻底卸载软件
  • solaris ssh offline
  • auepuc.exe是什么软件
  • WINDOWS系统中删除放入回收站的文件占用什么空间
  • ubuntu浏览网页
  • windows xp iis安装
  • win10系统如何更改盘符
  • windows8 defender
  • win7 svchost
  • win8怎么连接宽带账号密码
  • cocos2d-x安装
  • 基于web的学生成绩管理系统毕业论文
  • unity3d颜色
  • node.js的安装方法
  • shell中的括号
  • net命令大全
  • unity fixed update
  • jquery自定义表单
  • ajax支持浏览器back按钮吗
  • div怎么求
  • edittext获取焦点弹出键盘
  • 预缴增值税申报表申报期限
  • 中国税务客服工作时间
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设