使用TableGeneration生成已标注的表格数据用于表格识别
利用 TableGeneration 生成多样化表格数据
- TableGeneration 简介
- 环境准备
- chrome浏览器(Linux下推荐)
- 火狐浏览器(Mac下推荐)
- 生成表格
- 生成表格
- 参数说明
- 结论
在数据生成和处理领域,表格数据的生成是一个常见需求,尤其是在机器学习和数据分析领域。今天,我们将介绍一个名为 TableGeneration 的工具,它可以帮助我们生成具有多种配置参数的表格数据。这个工具不仅支持生成不同行列数的表格,还可以模拟真实世界中的表格特性,如合并单元格和着色单元格。
TableGeneration 简介
TableGeneration 是一个基于 Python 开发的工具,它利用浏览器渲染技术生成表格图像。这个工具的特点在于其高度的可配置性,用户可以根据需求自定义表格的多种属性。生成的表格可以用于各种场景,如数据分析和机器学习中的数据集构建。
GitHub 页面
环境准备
安装python包
pip3 install -r requirements.txt
目前支持使用chrome浏览器和火狐浏览器,使用方式分别如下
chrome浏览器(Linux下推荐)
- 安装chrome浏览器和中文字体
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
apt-get update && sudo apt-get install libnss3
apt-get install xfonts-wqy
apt install ttf-wqy-zenhei
apt install fonts-wqy-microhei
# refresh fonts
fc-cache -fv
- 安装chrome浏览器驱动 chromedriver
首先在官网下载适合自己系统的驱动文件。然后执行下列命令
unzip chromedriver_linux64.zip
cp chromedriver /usr/local/share/
ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver
ln -s /usr/local/share/chromedriver /usr/bin/chromedriver
- 测试浏览器和chromedriver
使用如下命令测试chromedriver和chrome浏览器是否安装正确
from selenium import webdriveroptions = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
driver = webdriver.Chrome(chrome_options=options)
driver.get('https:www.baidu.com')
print(driver.title)
driver.close()
如果成功,会在终端看见如下输出
百度一下,你就知道
火狐浏览器(Mac下推荐)
- 安装火狐浏览器和中文字体
apt-get -y install firefox
apt-get install xfonts-wqy
apt install ttf-wqy-zenhei
apt install fonts-wqy-microhei
# refresh fonts
fc-cache -fv
- 安装火狐浏览器驱动 geckodriver
首先在官网下载适合自己系统的驱动文件。然后执行下列命令
tar -xf geckodriver-v0.31.0-linux64.tar.gz
cp geckodriver /usr/local/share/
ln -s /usr/local/share/geckodriver /usr/local/bin/geckodriver
ln -s /usr/local/share/geckodriver /usr/bin/geckodriver
- 测试浏览器和geckodriver
使用如下命令测试geckodriver和火狐是否安装正确
from selenium import webdriveroptions = webdriver.FirefoxOptions()
options.add_argument('--headless')
driver = webdriver.Firefox(firefox_options=options)
driver.get('https:www.baidu.com')
print(driver.title)
driver.close()
如果成功,会在终端看见如下输出
百度一下,你就知道
生成表格
生成表格
使用如下命令可生成表格,ch_dict_path和en_dict_path
不指定时,将会使用默认的中英文语料。最终生成的表格图片,表格html文件和PP-Structure格式标注文件会保存在output指定路径下。
# 简单表格
python3 generate_data.py --output output/simple_table --num=1
# 单元格坐标为单元格内文字坐标的表格
python3 generate_data.py --output output/simple_table --num=1 --cell_box_type='text'
# 彩色单元格表格
python3 generate_data.py --output output/color_simple_table --num=1 --color_prob=0.3
# 清单类表格
python3 generate_data.py --output output/qd_table --num=1 --min_row=10 --max_row=80 --min_col=4 --max_col=8 --min_txt_len=2 --max_txt_len=10 --max_span_row_count=3 --max_span_col_count=3 --max_span_value=20 --color_prob=0 --brower_width=1920 --brower_height=5000
# 大单元格表格
python3 generate_data.py --output output/big_cell_table --num=1 --min_row=6 --max_row=10 --min_col=4 --max_col=8 --min_txt_len=2 --max_txt_len=10 --max_span_row_count=3 --max_span_col_count=3 --max_span_value=10 --color_prob=0 --cell_max_width=100 --cell_max_height=100 --brower_width=1920 --brower_height=1920
参数说明
让我们详细了解一下 TableGeneration 的一些关键参数:
--output output/qd_table:指定输出目录。这里我们设置输出目录为output/qd_table。--num=1:指定生成表格的数量。这里我们只生成一个表格。--min_row=10和--max_row=80:设置表格的行数范围。表格将包含 10 到 80 行。--min_col=4和--max_col=8:设置表格的列数范围。表格将包含 4 到 8 列。--min_txt_len=2和--max_txt_len=10:设置单元格中文本长度的范围。文本长度将在 2 到 10 个字符之间。--max_span_row_count=3和--max_span_col_count=3:设置合并单元格的行数和列数范围。合并单元格将最多跨越 3 行和 3 列。--max_span_value=20:设置合并单元格中的最大数值。这里我们设置最大数值为 20。--color_prob=0:设置单元格着色的概率。这里我们设置为 0,即不使用颜色。--browser_width=1920和--browser_height=5000:设置生成表格的浏览器宽度和高度。这里我们分别设置为 1920 像素和 5000 像素。
通过这些参数,我们可以生成具有特定行列数、文本长度、合并单元格特性以及尺寸的表格。
结论
TableGeneration 是一个强大且灵活的工具,可以用于生成各种类型的表格数据。它的可配置性使得用户能够根据特定需求生成表格,从而在数据分析和机器学习项目中模拟真实世界的表格数据。通过简单的命令行操作,我们可以生成具有不同行列数、文本长度、合并单元格和尺寸的表格,为我们的项目提供丰富的数据支持。
群内交流更多技术
130856474 <-- 在这里
相关文章:
使用TableGeneration生成已标注的表格数据用于表格识别
利用 TableGeneration 生成多样化表格数据 TableGeneration 简介环境准备chrome浏览器(Linux下推荐)火狐浏览器(Mac下推荐) 生成表格生成表格 参数说明结论 在数据生成和处理领域,表格数据的生成是一个常见需求,尤其是在机器学习和数据分析领域。今天&am…...
赛目科技三度递表:净利率及资产回报率不断下滑,经营成本越来越高
《港湾商业观察》施子夫 5月29日,北京赛目科技股份有限公司(以下简称,赛目科技)第三次递表港交所,公司拟主板上市,独家保荐机构为光银国际。 公开信息显示,赛目科技此前曾于2022年12月&#x…...
【QT】概述|对象树模型|两种控件模式|信号和槽|lambda
目录 什么是QT 特点 QT程序 main函数 QT按钮 纯代码模式 图形化模式 对象树模型 信号和槽 连接与断开 自动连接 断开连接 信号的发射 lambda表达式 基本语法 捕获列表 Lambda表达式用于信号与槽的连接 例如 什么是QT Qt是一个跨平台的C图形用户界面应用…...
Java中的安全编码实践与防御技巧
Java中的安全编码实践与防御技巧 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨Java中的安全编码实践与防御技巧,这对于开发人员来说…...
linux 常用的命令、文件路径、其他工具或软件包
命令 sudo apt dist-upgrade 解决显示 暂不升级、未被升级dd if/dev/zero of./rootfs.img bs1G count6 制作一个 6G 的空白镜像。bs 是块字节数,count 是 bs 的个数。dd if./rootfs.img of/dev/sdc2 bs512 烧录 rootfs.img 镜像到 /dev/sdc2。bs 是 512 个字节&…...
00 如何根据规律在变化中求发展?
你好,我是周大壮。目前,我已在搜索推荐等算法技术领域从事研发近 10 年,做过诸多流量分发领域的算法技术工作。 如今任 58 同城的算法架构师、技术委员会人工智能分会委员、58 本地服务事业群算法策略部负责人,我主要负责 58 集团…...
UUID和自增ID做主键到底哪个好?
UUID(通用唯一识别码) 优点: 全局唯一性:由不同算法生成,确保全球范围内的唯一性,避免主键冲突。不可预测性:随机生成,难以被猜测,适合保密性应用。分布式应用࿱…...
FW SystemUI Keyguard解析(二)
文章目录 CTS之Keyguard Menu事件处理 CTS之Keyguard Menu事件处理 事件触发点: NotificationShadeWindowViewController.dispatchKeyEvent 设置setInteractionEventHandler回调之后通过NotificationShadeWindowView 触发 调用到return mService.onMenuPressed(); public cla…...
MySQL之备份与恢复(二)
备份与恢复 定义恢复需求 如果一切正常,那么永远也不需要考虑恢复。但是,一旦需要恢复,只有世界上最好的备份系统是没用的,还需要一个强大的恢复系统。 不幸的是,让备份系统平滑工作比构造良好的恢复过程和工具更容易…...
MySQL:保护数据库
保护数据库 1. 用户1.1 创建用户1.2 查看用户1.3 删除用户1.4 修改密码 2. 权限2.1 授予权限2.2 查看权限2.3 撤销权限 之前都是介绍本地数据库而你自己就是数据库的唯一用户,所以不必考虑安全问题。但实际业务中数据库大多放在服务器里,你必须妥善处理好…...
不是大厂云用不起,而是五洛云更有性价比
明月代维的一个客户的大厂云境外云服务器再有几天就到期了,续费提醒那是提前一周准时到来,但是看到客户发来的续费价格截图,我是真的没忍住。这不就是在杀熟吗?就这配置续费竟然如此昂贵?说实话这个客户的服务器代维是…...
C++初学者指南-3.自定义类型(第一部分)-异常
C初学者指南-3.自定义类型(第一部分)-异常 文章目录 C初学者指南-3.自定义类型(第一部分)-异常简介什么是异常?第一个示例用途:报告违反规则的行为异常的替代方案标准库异常处理 问题和保证资源泄露使用 RAII 避免内存泄漏!析构函数:不要让异…...
学会python——用python编写一个电子时钟(python实例十七)
目录 1.认识Python 2.环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3.电子时钟程序 3.1 代码构思 3.2代码实例 3.3运行结果 4.总结 1.认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性…...
elementui中@click短时间内多次触发,@click重复点击,做不允许重复点击处理
click快速点击,发生多次触发 2.代码示例: //html<el-button :loading"submitLoading" type"primary" click"submitForm">确 定</el-button>data() {return {submitLoading:false,}}//方法/** 提交按钮 */sub…...
助力游戏实现应用内运营闭环,融云游戏社交方案升级!
通信能力在所有应用场景都是必备组件,这源于社交属性带给应用的增长神话。 在游戏场景,玩家从少数核心向大众用户泛化扩展的过程,就是游戏深度融合社交能力的过程。 从单机到联机,游戏乐趣的升级 1996 年,游戏界顶流…...
守护创新之魂:源代码防泄漏的终极策略
在信息化快速发展的今天,企业的核心机密数据,尤其是源代码,成为了企业竞争力的关键所在。然而,源代码的泄露风险也随之增加,给企业的安全和发展带来了巨大威胁。在这样的背景下,SDC沙盒作为一种创新的源代码…...
Halcon 基于分水岭的目标分割
一 分水岭 1 分水岭介绍 传统的分水岭分割方法,是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是地质学上的拓扑地貌,图像中每一像素的灰度值表示该点的海拔高度,每一个局部极小值及其周边区域称为集水盆地&…...
PHP 面向对象编程(OOP)入门指南
面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,通过使用对象来设计和组织代码。PHP作为一种广泛使用的服务器端脚本语言,支持面向对象编程。本文将介绍PHP面向对象编程的基本概念和用法࿰…...
Django学习第三天
python manage.py runserver 使用以上的命令启动项目 实现新建用户数据功能 views.py文件代码 from django.shortcuts import render, redirect from app01 import models# Create your views here. def depart_list(request):""" 部门列表 ""&qu…...
Vue3实现点击按钮实现文字变色
1.动态样式实现 1.1核心代码解释: class"power-station-perspective-item-text": 为这个 span 元素添加了一个 CSS 类,以便对其样式进行定义。 click"clickItem(item.id)": 这是一个 Vue 事件绑定。当用户点…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...
OD 算法题 B卷【正整数到Excel编号之间的转换】
文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的:a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...
离线语音识别方案分析
随着人工智能技术的不断发展,语音识别技术也得到了广泛的应用,从智能家居到车载系统,语音识别正在改变我们与设备的交互方式。尤其是离线语音识别,由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力,广…...
