当前位置: 首页 > news >正文

PubLayNet:文档布局分析领域的大规模数据集

PubLayNet:文档布局分析领域的大规模数据集

1. 数据集概述

PubLayNet(Public Layout Network)是由IBM AUR NLP团队开发的大规模文档图像数据集,旨在推动文档理解与布局分析领域的研究。该数据集通过自动标注技术,对科学文献的版面元素(如文本、标题、表格等)提供高精度的边界框和多边形分割注释,是目前文档布局分析领域规模最大、标注最完善的开放数据集之一


2. 核心特性与数据规模

2.1 数据构成

  • 数据来源:基于PubMed Central Open Access子集的科研论文(商业用途许可),覆盖生物医学、计算机科学等多学科领域
  • 标注类别:5类文档元素(Text/文本、Title/标题、List/列表、Table/表格、Figure/图表)
  • 数据量
    数据集类型图像数量
    训练集333,703张
    验证集11,245张
    测试集11,405张

2.2 技术亮点

  • 标注质量:通过PDF与XML格式匹配自动生成注释,并采用质量控制指标(99%面积覆盖率筛选)确保标注精度
  • 多模态支持:同时提供边界框(Bounding Box)和多边形分割(Polygon Segmentation)两种标注形式

3. 数据构建方法

PubLayNet的构建采用创新的自动化流程:

  1. 格式匹配:将PDF文档的视觉元素与XML结构化内容对齐,利用PDFMiner解析阅读顺序和文本块位置
  2. 模糊匹配算法:通过阈值控制的字符串相似度计算,解决PDF与XML文本的微小差异问题
  3. 质量过滤:排除注释覆盖率低于99%的非标题页,确保数据可靠性

4. 小批量数据可视化脚本

# importing prerequisites
import sys
import requests
import tarfile
import json
import numpy as np
from os import path
from PIL import Image
from PIL import ImageFont, ImageDraw
from glob import glob
from matplotlib import pyplot as plt
# %matplotlib inline
fname = 'examples.tar.gz'
url = 'https://dax-cdn.cdn.appdomain.cloud/dax-publaynet/1.0.0/' + fname
r = requests.get(url)
open(fname , 'wb').write(r.content)# Extracting the dataset
tar = tarfile.open(fname)
tar.extractall()
tar.close()# Verifying the file was extracted properly
data_path = "examples/"
path.exists(data_path)# Define color code
colors = {'title': (255, 0, 0),'text': (0, 255, 0),'figure': (0, 0, 255),'table': (255, 255, 0),'list': (0, 255, 255)}# Function to viz the annotation
def markup(image, annotations):''' Draws the segmentation, bounding box, and label of each annotation'''draw = ImageDraw.Draw(image, 'RGBA')for annotation in annotations:# Draw segmentationdraw.polygon(annotation['segmentation'][0],fill=colors[samples['categories'][annotation['category_id'] - 1]['name']] + (64,))# Draw bboxdraw.rectangle((annotation['bbox'][0],annotation['bbox'][1],annotation['bbox'][0] + annotation['bbox'][2],annotation['bbox'][1] + annotation['bbox'][3]),outline=colors[samples['categories'][annotation['category_id'] - 1]['name']] + (255,),width=2)# Draw labelw, h = draw.textsize(text=samples['categories'][annotation['category_id'] - 1]['name'],font=font)if annotation['bbox'][3] < h:draw.rectangle((annotation['bbox'][0] + annotation['bbox'][2],annotation['bbox'][1],annotation['bbox'][0] + annotation['bbox'][2] + w,annotation['bbox'][1] + h),fill=(64, 64, 64, 255))draw.text((annotation['bbox'][0] + annotation['bbox'][2],annotation['bbox'][1]),text=samples['categories'][annotation['category_id'] - 1]['name'],fill=(255, 255, 255, 255),font=font)else:draw.rectangle((annotation['bbox'][0],annotation['bbox'][1],annotation['bbox'][0] + w,annotation['bbox'][1] + h),fill=(64, 64, 64, 255))draw.text((annotation['bbox'][0],annotation['bbox'][1]),text=samples['categories'][annotation['category_id'] - 1]['name'],fill=(255, 255, 255, 255),font=font)return np.array(image)# Parse the JSON file and read all the images and labels
with open('examples/samples.json', 'r') as fp:samples = json.load(fp)
# Index images
images = {}
for image in samples['images']:images[image['id']] = {'file_name': "examples/" + image['file_name'], 'annotations': []}
for ann in samples['annotations']:images[ann['image_id']]['annotations'].append(ann)
# Visualize annotations
font = ImageFont.truetype("examples/DejaVuSans.ttf", 15)
fig=plt.figure(figsize=(16, 100)) 
for i, (_, image) in enumerate(images.items()):with Image.open(image['file_name']) as img:ax = plt.subplot(int(len(images) / 2), 2, i + 1)ax.imshow(markup(img, image['annotations']))ax.axis('off')
plt.subplots_adjust(hspace=0, wspace=0)
plt.savefig('examples/annotations.png')

5. 获取与使用

  • 下载地址:IBM开发者平台
  • 许可协议:遵循CDLA-Permissive开源协议,允许商业用途
  • 快速体验:提供预训练模型和演示脚本,支持快速部署

参考文献

  1. 推荐开源项目:PubLayNet——文档图像布局标注的利器
  2. PubLayNet数据集文档
  3. PubLayNet官方介绍
  4. PubLayNet技术应用分析
  5. 基于PubLayNet的Transformer模型研究
  6. PubLayNet数据规模说明
  7. 多模态方法在PubLayNet上的应用
  8. CSDN技术博客
  9. PaddleDetection模型库
  10. 数据生成方法详解

相关文章:

PubLayNet:文档布局分析领域的大规模数据集

PubLayNet&#xff1a;文档布局分析领域的大规模数据集 1. 数据集概述 PubLayNet&#xff08;Public Layout Network&#xff09;是由IBM AUR NLP团队开发的大规模文档图像数据集&#xff0c;旨在推动文档理解与布局分析领域的研究。该数据集通过自动标注技术&#xff0c;对科…...

JAVA----方法

好久没发博客了~~~~~重生之我开始补知识 1.What is 方法&#xff08;method&#xff09; 方法是程序中最小的执行单元。 简单来说&#xff0c;就是将一些重复代码打包&#xff0c;要用的时候我们进行调用就好&#xff01; e.g. public static void main&#xff08;String…...

mybatis xml中特殊字符处理

1&#xff0c;CDATA区&#xff1a; 它的全称为character data,以"<![CDATA[ "开始&#xff0c;以" ]]>" 结束&#xff0c;在两者之间嵌入不想被解析程序解析的原始数据&#xff0c;解析器不对CDATA区中的内容进行解析&#xff0c;而是将这些数据原封…...

vue3+dhtmlx 甘特图真是案例

使用vue3 ts dhtmlx 实现项目任务甘特图展示 支持拖拽&#xff0c;选择人员&#xff0c;优先级&#xff0c;开发状态&#xff0c;进度 效果图 完整代码 安装命令&#xff1a;npm i dhtmlx-gantt <template><div style"height: 100%; background-color: white…...

Chrome/Edge浏览器使用多屏完美解决方案,http部署使用https部署的功能

多屏使用场景&#xff1a;例如1屏显示录入操作界面&#xff0c;2屏显示SOP。或者每个屏上显示不同的看板内容等 废话不少说&#xff0c;直接上代码&#xff1a;将下面的代码复制到txt记事本里&#xff0c;保存为html格式即可本地观看效果 <!DOCTYPE html> <html>…...

Linux中进程的属性:状态

一、通用OS进程中的各种状态与相关概念 1.1通用进程中的状态 CPU执行进程代码&#xff0c;不是把进程执行完才开始执行下一个&#xff0c;而是给每个进程预分配一个“时间片”&#xff0c; CPU基于时间片进行轮转调度&#xff08;每个CPU分别进行&#xff09; 其中发涉及到的…...

软件架构师常用的软件工具有哪些

软件架构师的工作离不开多种工具的支撑&#xff0c;主要包括 建模与设计工具、文档与协作平台、代码质量与静态分析工具、性能与监控工具、DevOps 工具链、架构可视化与管理平台 等。其中&#xff0c;建模与设计工具 是架构师最核心的武器&#xff0c;能够帮助其从业务抽象到技…...

rl中,GRPO损失函数详解。

文章目录 **一、GRPO损失函数的设计背景****二、代码逐行解析****三、关键组件详解****1. 对数概率与KL散度计算****2. 优势值与策略梯度****3. 掩码与平均损失****四、训练动态与调参建议**在TRL(Transformer Reinforcement Learning)库中,GRPO(Group Relative Policy Opt…...

奇安信春招面试题

奇安信面试真题&#xff0c;以下是5道具有代表性的经典技术面试题及其解析&#xff0c;覆盖网络安全、渗透测试、安全架构设计等核心领域。 《网安面试指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token1860256701&langzh_CN 5000篇网安资料库https://mp.…...

MineWorld,微软研究院开源的实时交互式世界模型

MineWorld是什么 MineWorld是微软研究院开发并开源的一个基于《我的世界》&#xff08;Minecraft&#xff09;的实时互动世界模型。该模型采用了视觉-动作自回归Transformer架构&#xff0c;将游戏场景和玩家动作转化为离散的token ID&#xff0c;并通过下一个token的预测进行…...

Nginx RTMP配置存储位置

window&#xff1a; 支持本地磁盘和远程网络位置 配置文件如下 worker_processes 1;events {worker_connections 1024; }#RTMP服务 rtmp {server { listen 1935; #监听端口chunk_size 4096; #数据传输块大小application my_live { # 创建rtmp应用hlslive on; # 当路径匹…...

JVM理解(通俗易懂)

虽然网上有很多关于JVM的教程,但是都天花乱坠,很多都是一上来就JVM内存模型、JVM双亲委派等等,(可能我比较菜看不懂)。于是我自己决定写一篇能看懂的文章~如果有看不懂我就自己百度,大家有什么疑问也可以评论区交流~ 欢迎指点我的Error~ JVM概念 JVM大家都知道,就Ja…...

python三维矩阵的维度

matrix_3x3x3 np.array([[[ 8.35, 16.72, 17.46],[16.72, 33.49, 34.97],[17.46, 34.97, 36.51]],[[16.72, 33.49, 34.97],[33.49, 67.09, 70.05],[34.97, 70.05, 73.13]],[[17.46, 34.97, 36.51],[34.97, 70.05, 73.13],[36.51, 73.13, 76.35]] ]) 例如这样的三维矩阵&#…...

HarmonyOS 是 Android 套壳嘛?

文章目录 HarmonyOS 是 Android 套壳吗&#xff1f;技术视角的深度解析一、核心结论二、技术对比&#xff1a;从底层到应用层1. 内核与基础架构2. 应用开发与运行机制3. 生态与应用场景 三、常见误解的澄清误解 1&#xff1a;“HarmonyOS 使用 Android 应用&#xff0c;所以是套…...

【Java面试笔记:基础】10.如何保证集合是线程安全的? ConcurrentHashMap如何实现高效地线程安全?

1. 保证集合线程安全的方式 传统同步容器:如 Hashtable 和 Vector,通过在方法上加 synchronized 关键字实现线程安全,但性能较低。同步包装器:通过 Collections.synchronizedMap 等方法将普通集合包装成线程安全的集合,但仍然使用粗粒度的锁,性能不佳。List<String>…...

【Amazing晶焱科技高速 CAN Bus 传输与 TVS/ESD/EOS 保护,将是车用电子的生死关键无标题】

台北国际车用电子展是亚洲地区重量级的车用电子科技盛会&#xff0c;聚焦于 ADAS、电动车动力系统、智慧座舱、人机界面、车联网等领域。各大车厂与 Tier 1 供应链无不摩拳擦掌&#xff0c;推出最新技术与创新解决方案。 而今年&#xff0c;“智慧座舱” 无疑将成为全场焦点&am…...

电控---DMP库

一、DMP库的本质与核心定位 DMP库是为Invensense&#xff08;现TDK&#xff09;系列传感器&#xff08;如MPU6050、MPU9250等&#xff09;内置的数字运动处理器&#xff08;DMP&#xff09;硬件模块提供的软件接口层。其核心目标是&#xff1a; 抽象硬件操作&#xff1a;将复…...

YOLO数据处理

YOLO&#xff08;You Only Look Once&#xff09;的数据处理流程是为了解决目标检测领域的核心挑战&#xff0c;核心目标是为模型训练和推理提供高效、规范化的数据输入。其设计方法系统性地解决了以下关键问题&#xff0c;并对应发展了成熟的技术方案&#xff1a; 一、解决的问…...

Linux实现网络计数器

1.TcpServer.hpp文件 类TcpServer的私有成员变量有端口号&#xff0c;指向类Socket对象的指针&#xff0c;布尔值表示是否运行&#xff0c;以及回调函数&#xff0c;ioservice_t是表示参数为指向Socket对象的指针和InetAddr对象的函数&#xff0c;TcpServer类的构造函数接收端…...

数据分析:用Excel做周报

目录 1.初始模板 ​编辑 2.填充数据 2.1 日期以及表头 2.2 数据验证 2.3 计算数据填充 2.3.1 灵活计算 2.3.2 单独计算 2.3.3 总计 2.4 数据格式 2.5 周累计 2.6 周环比 2.7 业务进度 3 美化 1.初始模板 2.填充数据 2.1 日期以及表头 结果指标有以下这些&#…...

初阶数据结构--排序算法(全解析!!!)

排序 1. 排序的概念 排序&#xff1a;所谓排序,就是使一串记录&#xff0c;按照其中的某个或某些些关键字的大小&#xff0c;递增或递减的排列起来的操作。 2. 常见的排序算法 3. 实现常见的排序算法 以下排序算法均是以排升序为示例。 3.1 插入排序 基本思想&#xff1a;…...

SpringCloud 微服务复习笔记

文章目录 微服务概述单体架构微服务架构 微服务拆分微服务拆分原则拆分实战第一步&#xff1a;创建一个新工程第二步&#xff1a;创建对应模块第三步&#xff1a;引入依赖第四步&#xff1a;被配置文件拷贝过来第五步&#xff1a;把对应的东西全部拷过来第六步&#xff1a;创建…...

加油站小程序实战教程14会员充值页面搭建

目录 1 原型2 搭建充值金额选择功能3 搭建金额输入4 搭建支付方式5 充值按钮最终的效果 上一篇我们介绍了充值规则的后台功能&#xff0c;有了基础的规则&#xff0c;在会员充值页面就可以显示具体的充值规则。本篇我们介绍一下会员充值的开发过程。 1 原型 充值页面我们是分为…...

内卷的中国智驾,合资品牌如何弯道超车?

作者 |德新 编辑 |王博 上海车展前夕&#xff0c;一汽丰田举办重磅车型bZ5的技术发布会&#xff0c;脱口秀演员庞博透露了这款车型的一大重要特性&#xff0c;其搭载来自Momenta的智能辅助驾驶系统行驶里程已经超过20亿公里。 携手中国科技公司提高车型智能化的属性&#xff…...

【go】go run-gcflags常用参数归纳,go逃逸分析执行语句,go返回局部变量指针是安全的

go官方参考文档&#xff1a; https://pkg.go.dev/cmd/compile 基本语法 go run 命令用来编译并运行Go程序&#xff0c;-gcflags 后面可以跟一系列的编译选项&#xff0c;多个选项之间用空格分隔。基本语法如下&#xff1a; go run -gcflags "<flags>" main.…...

数据库11(触发器)

触发器有三种类型&#xff0c;包括删除触发器&#xff0c;更新触发器&#xff0c;添加触发器 触发器的作用是&#xff1a;当某个表发生某个操作时&#xff0c;自动触发触发器&#xff0c;进行触发器规定的操作 触发器语句 create trigger tname --创建触发器 on aa --创建在表…...

十大物联网平台-物联网十大品牌

物联网十大品牌及平台解析 物联网&#xff08;IoT&#xff09;作为当下极具影响力的技术&#xff0c;正逐步渗透至社会各领域&#xff0c;为人们生活与社会发展带来诸多便利与变革。如今&#xff0c;众多企业投身于物联网行业&#xff0c;致力于推动其发展。以下是对物联网相关…...

心智模式VS系统思考

很多人常说&#xff0c;“改变自己&#xff0c;从改变思维开始。”但事实上&#xff0c;打破一个人的心智模式&#xff0c;远比想象中要困难得多。我们的思维方式、行为习惯&#xff0c;甚至是对世界的认知&#xff0c;往往是多年积累下来的产物。那些曾经的经历、长期的学习与…...

QT 打包安装程序【windeployqt.exe】报错c000007d原因:Conda巨坑

一、命令行执行命令 E:\Project\GNCGC\Bin\Win32\Vc22\RS422地检>E:\SoftWare\Qt\5.14.2\msvc2017\bin\windeployqt.exe CGC170.exe二、安装了Conda的朋友&#xff0c;巨坑 无语&#xff0c;E:\SoftWare\Qt\5.14.2\msvc2017\bin\windeployqt.exe 优先把Conda环境关联的Qt动…...

Vue3祖先后代组件数据双向同步实现方法

在 Vue3 中实现祖先后代组件的双向数据同步&#xff0c;可以通过组合式 API 的 provide/inject 配合响应式数据实现。以下是两种常见实现方案&#xff1a; 方案一&#xff1a;共享响应式对象 方法 html <!-- 祖先组件 --> <script setup> import { ref, provide…...

OpenBayes 一周速览|EasyControl 高效控制 DiT 架构,助力吉卜力风图像一键生成;TripoSG 单图秒变高保真 3D 模型

公共资源速递 10 个教程&#xff1a; * 一键部署 R1-OneVision * UNO&#xff1a;通用定制化图像生成 * TripoSG&#xff1a;单图秒变高保真 3D * 使用 VASP 进行机器学习力场训练 * InfiniteYou 高保真图像生成 Demo * VenusFactory 蛋白质工程设计平台 * Qwen2.5-0mni…...

服务器-conda下载速度慢-国内源

文章目录 前言一、解决问题&#xff1a;使用国内conda镜像下载&#xff08;差&#xff09;二、解决问题&#xff1a;使用pip下载(优)总结 前言 conda频道中有无效频道导致下载失败 一、解决问题&#xff1a;使用国内conda镜像下载&#xff08;差&#xff09; 步骤 1&#xff…...

python的pip download命令-2

当然可以,下面我详细解释一下 pip download 的作用、用法和技术原理。 🧠 一句话总结: pip download 是 pip 提供的一个命令,用来下载 Python 包及其依赖项的安装文件,但不会安装。 🔍 和 pip install 的区别: 命令作用是否安装是否联网典型用途pip install安装指定包…...

【Java设计模式及实践学习-第4章节-结构型模式】

第4章节-结构型模式 笔记记录 1. 适配器模式2. 代理模式3. 装饰器模式4. 桥接模式5. 组合模式6. 外观模式7. 享元模式8. 总结 1. 适配器模式 2. 代理模式 3. 装饰器模式 4. 桥接模式 5. 组合模式 6. 外观模式 7. 享元模式 Java语言中的String字符串就使用了享元模式&…...

python:mido 提取 midi文件中某一音轨的音乐数据

pip install mido 使用 mido库可以方便地处理 MIDI 文件&#xff0c;提取其中音轨的音乐数据。 1.下面的程序会读取指定的 MIDI 文件&#xff0c;并提取指定编号音轨的音乐数据&#xff0c;主要包括音符事件等信息。 编写 mido_extract.py 如下 # -*- coding: utf-8 -*- &…...

将输入帧上下文打包到下一个帧的预测模型中用于视频生成

Paper Title: Packing Input Frame Context in Next-Frame Prediction Models for Video Generation 论文发布于2025年4月17日 Abstract部分 在这篇论文中,FramePack是一种新提出的网络结构,旨在解决视频生成中的两个主要问题:遗忘和漂移。 具体来说,遗忘指的是在生成视…...

第六章:Multi-Backend Configuration

Chapter 6: Multi-Backend Configuration 从交响乐团到变形金刚&#xff1a;如何让代理适应不同环境&#xff1f; 在上一章任务工作流编排&#xff0c;我们学会了如何像指挥家一样协调任务。但就像变形金刚能切换不同形态应对环境变化一样&#xff0c;你的AI代理也需要能灵活切…...

tomcat远程Debug

tomcat远程Debug -- /bin目录下 catalina.bat文件下加一行 SET CATALINA_OPTS-server -Xdebug -Xnoagent -Djava.compilerNONE -Xrunjdwp:transportdt_socket,servery,suspendn,address8088idea端配置如下...

Vue3:component(组件:uniapp版本)

目录 一、基本概述二、基本使用三、插槽 一、基本概述 在项目的开发过程中&#xff0c;页面上井场会出现一些通用的内容&#xff0c;例如头部的导航栏&#xff0c;如果我们每一个页面都去写一遍&#xff0c;那实在是太繁琐了&#xff0c;所以&#xff0c;我们使用组件来解决这…...

rust编程学习(三):8大容器类型

1简介 rust标准库std::collections也提供了像C STL库中的容器&#xff0c;分为4种通用的容器&#xff0c;8种类型&#xff0c;如下表所示。 线性容器类型&#xff1a; 名称简介Vec<T>内存空间连续&#xff0c;可变长度的数组&#xff0c;类似于C中Vector<T>容器…...

前端中阻止事件冒泡的几种方法

在 JavaScript 前端开发中&#xff0c;阻止事件冒泡是处理 DOM 事件时的常见需求。以下是几种阻止事件冒泡的方法&#xff1a; 1. 使用 event.stopPropagation() 这是最常用的阻止事件冒泡的方法。 element.addEventListener(click, function(event) {event.stopPropagation…...

ShenNiusModularity项目源码学习(20:ShenNius.Admin.Mvc项目分析-5)

ShenNiusModularity项目的系统管理模块主要用于配置系统的用户、角色、权限、基础数据等信息&#xff0c;上篇文章中学习的日志列表页面相对独立&#xff0c;而后面几个页面之间存在依赖关系&#xff0c;如角色页面依赖菜单页面定义菜单列表以便配置角色的权限&#xff0c;用户…...

前端js需要连接后端c#的wss服务

背景 前端js需要连接后端wss服务 前端&#xff1a;js 后端&#xff1a;c# - 控制台搭建wss服务器 步骤1 wss需要ssl认证&#xff0c;所以需要个证书&#xff0c;随便找一台linux的服务器&#xff08;windows的话&#xff0c;自己安装下openssl即可&#xff09;&#xff0c;…...

MAGI-1自回归式大规模视频生成

1. 关于 MAGI-1 提出 MAGI-1——一种世界模型&#xff08;world model&#xff09;&#xff0c;通过自回归方式预测一系列视频块&#xff08;chunk&#xff0c;固定长度的连续帧片段&#xff09;来生成视频。 模型被训练为在时间维度上单调递增噪声的条件下对每个块进行去噪&a…...

深入剖析TCP协议(内容一):从OSI与TCP/IP网络模型到三次握手、四次挥手、状态管理、性能优化及Linux内核源码实现的全面技术指南

文章目录 TCP网络模型OSI参考模型TCP/IP五层模型 TCP状态TIME_WAIT 连接过程TCP三次握手TCP四次挥手 TCP优化TCP三次握手优化TCP四次挥手优化TCP数据传输优化 TCP TCP是面向连接的、可靠的、基于字节流的传输层通信协议&#xff1a; 面向连接&#xff1a;一定是一对一才能连接…...

基于deepseek的模型微调

使用 DeepSeek 模型(如 DeepSeek-VL、DeepSeek-Coder、DeepSeek-LLM)进行微调,可以分为几个关键步骤,下面以 DeepSeek-LLM 为例说明,适用于 Q&A、RAG、聊天机器人等方向的应用。 一、准备工作 1. 环境依赖 建议使用 transformers + accelerate 或 LoRA 等轻量微调方…...

node.js 实战——(path模块 知识点学习)

path 模块 提供了操作路径的功能 说明path. resolve拼接规范的绝对路径path. sep获取操作系统的路径分隔符path. parse解析路径并返回对象path. basename获取路径的基础名称path. dirname获取路径的目录名path. extname获得路径的扩展名 resolve 拼接规范的绝对路径 const…...

【k8s】docker、k8s、虚拟机的区别以及使用场景

一、Docker &#xff08;一&#xff09;概念 Docker 是一个开源的应用容器引擎&#xff0c;允许开发者将应用及其依赖打包到一个可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可实现虚拟化。 &#xff08;二&#xff09;隔离性 Docker 的隔离…...

校园外卖服务系统的设计与实现(代码+数据库+LW)

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;外卖信息因为其管理内容繁杂&#xff0c;管理数量繁多导致手工进行处理不能满足广…...

Windows上使用Python 3.10结合Appium-实现APP自动化

一、准备工作 所需条件&#xff1a; Windows 10/11 操作系统 Python 3.10.x&#xff08;建议3.10.9&#xff09; Java JDK 8 或以上&#xff08;建议JDK 8u301&#xff09; Node.js 14.x 或以上&#xff08;建议14.21.3&#xff09; Appium Server 1.22.x 或以上&#xff08;建…...