位置: 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)

  • 同一个手机号能解封几次(同一个手机号能注册几个抖音号)

    同一个手机号能解封几次(同一个手机号能注册几个抖音号)

  • 微信表情怎么更新(微信表情怎么更新出来)

    微信表情怎么更新(微信表情怎么更新出来)

  • 普通打印机能打印不干胶纸吗(普通打印机能打印菲林纸吗)

    普通打印机能打印不干胶纸吗(普通打印机能打印菲林纸吗)

  • win10一直卡在锁屏界面(win10一直卡在锁屏界面进不了桌面怎么弄)

    win10一直卡在锁屏界面(win10一直卡在锁屏界面进不了桌面怎么弄)

  • word的大纲视图完成什么操作(word的大纲视图可以显示正文吗)

    word的大纲视图完成什么操作(word的大纲视图可以显示正文吗)

  • 电脑摄像头在哪个位置(联想笔记本电脑摄像头在哪)

    电脑摄像头在哪个位置(联想笔记本电脑摄像头在哪)

  • 初始化电脑要多久(初始化电脑要多久一直停在一个数)

    初始化电脑要多久(初始化电脑要多久一直停在一个数)

  • 抖音壁纸怎么保存相册(抖音壁纸怎么保持)

    抖音壁纸怎么保存相册(抖音壁纸怎么保持)

  • 录屏电流声比较大怎么办(录屏声音有噪音)

    录屏电流声比较大怎么办(录屏声音有噪音)

  • mac可以录屏吗(macbook可以录制屏幕吗)

    mac可以录屏吗(macbook可以录制屏幕吗)

  • 爱国者充电宝充不进电(爱国者充电宝充一会就不充了)

    爱国者充电宝充不进电(爱国者充电宝充一会就不充了)

  • 手机进水多久可以充电(手机进水多久可以修好)

    手机进水多久可以充电(手机进水多久可以修好)

  • 苹果手机主题怎么设置成自己喜欢的(苹果手机主题怎么设置)

    苹果手机主题怎么设置成自己喜欢的(苹果手机主题怎么设置)

  • 路由器mimo是什么意思(路由器mumimo是什么)

    路由器mimo是什么意思(路由器mumimo是什么)

  • i59400f配什么主板(i59400f配什么主板可以超频)

    i59400f配什么主板(i59400f配什么主板可以超频)

  • 如何把两张照片合成一张手机(如何把两张照片合成一张)

    如何把两张照片合成一张手机(如何把两张照片合成一张)

  • 快手作品收藏在哪里找(快手收藏的作品去哪儿了)

    快手作品收藏在哪里找(快手收藏的作品去哪儿了)

  • 华为怎么清理隐藏内存(华为怎么清理隐藏垃圾)

    华为怎么清理隐藏内存(华为怎么清理隐藏垃圾)

  • 微信封号16天是永久吗(微信封号16天是怎么回事)

    微信封号16天是永久吗(微信封号16天是怎么回事)

  • 小米8se是不是锂电池(小米8se属于哪一类)

    小米8se是不是锂电池(小米8se属于哪一类)

  • 怎么看显卡的性能档次(怎么看显卡的性能好不好)

    怎么看显卡的性能档次(怎么看显卡的性能好不好)

  • 快手极速版可以发作品吗(快手极速版可以扫码登录吗)

    快手极速版可以发作品吗(快手极速版可以扫码登录吗)

  • 计算机内存中用于存储信息的部件是(电脑在哪看内存条信息)

    计算机内存中用于存储信息的部件是(电脑在哪看内存条信息)

  • 快手管理员功能在哪里(快手管理员能干嘛)

    快手管理员功能在哪里(快手管理员能干嘛)

  • 手机重力感应异常怎么办(手机重力感应异常会怎么样)

    手机重力感应异常怎么办(手机重力感应异常会怎么样)

  • linux查看磁盘空间命令教程(linux查看磁盘空间 命令fdisk)

    linux查看磁盘空间命令教程(linux查看磁盘空间 命令fdisk)

  • 小规模纳税人升级一般纳税人流程
  • 小微企业月开票超15万季度未超45万
  • 收支平衡表excel怎么做
  • 中药材适用税率是多少
  • 合同成本在哪个科目列支
  • 2019小微企业10万免税需要如何办理
  • 季度超了30万年度没超120
  • 出售多余材料会计科目
  • 进口免税店的东西都是正品吗
  • 计提工资和应付职工薪酬怎么不一样
  • 委托加工物资加工费怎么结转
  • 税负率是税率吗
  • 增值税抵扣进项税额交税账务处理
  • 企业所得税退税的会计分录怎么做
  • 小规模季报财务报表只看季度最后一个月的数据可以吗
  • 增值税税负低如何解释
  • 退税上传,申报怎么操作
  • 扣收手续费
  • 旅行社成本票没有收到,怎么挂账
  • 个人所得税的速算扣除数是什么意思
  • 公司给员工发工资用途怎么写
  • 免抵退系统应调整免抵退额吗?
  • 安装设备领用原材料应该用成本还是公允
  • 建筑工程总包分包的内容
  • 管理费用没发票能入账吗
  • 暂估入账的处理
  • 上月计提费用本月怎么做账
  • 工商年报财务数据怎么填
  • 销售返点怎么做分录
  • 腾讯电脑管家病毒库更新
  • win11任务栏失灵
  • osXYosemite怎么更新
  • 2020 php 薪资
  • php面向对象是什么意思
  • PHP:stream_set_blocking()的用法_Stream函数
  • 数据处理教程
  • 置换土地如何做账务处理
  • 资产处置损益计税基础是什么
  • chart.js教程
  • uniapp 信息推送
  • vue+
  • 卢塞恩小镇瑞士
  • php的框架有哪些
  • php支付功能
  • 头歌实践教学平台官网
  • vue3中如何使用vuex
  • 现金流量表期初现金余额怎么计算
  • 机动车价外费用发票如何开具
  • 采购的技术服务费需入库吗
  • java一天速成
  • python清除变量的命令
  • 季度预缴纳税申报表利润总额
  • 商誉的会计核算怎么核算
  • 预计净残值是怎么算出来的
  • 纳税申报怎么做
  • sql扩展
  • 电费发票未到怎么入账
  • 外贸公司是不是什么都做的?
  • 怎样在excel计算
  • 物业门禁卡怎么入账
  • sql比较两个集合
  • sql必知必会第四版
  • rhel安装mysql
  • mySQL中in查询与exists查询的区别小结
  • win8更新一直停着不动
  • win7系统怎么备份文件
  • sdstat.exe - sdstat是什么进程 有什么用
  • win8自启动在哪儿设置
  • win10周年版
  • linux在云计算中的使用
  • if iferror find
  • 抛物线动画演示视频
  • JavaScript浏览器插件制作
  • Javascript字符串奇数位替换
  • 地税官网怎么登录
  • 2020年砂石
  • 烟台税务查询系统网址
  • 环保税截止时间
  • 国税和地税归哪里管
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设