青浦工厂网站建设/广告推广赚钱在哪接

青浦工厂网站建设,广告推广赚钱在哪接,企业信息系统规划的含义及任务,windows系统做ppt下载网站在测试工作中,需求文档中的图片(如界面设计图、流程图)往往是测试用例生成的重要参考。然而,手动提取图片并识别内容不仅耗时,还容易出错。本文将通过一个自研小工具,结合 PaddleOCR 和大模型,自…

在测试工作中,需求文档中的图片(如界面设计图、流程图)往往是测试用例生成的重要参考。然而,手动提取图片并识别内容不仅耗时,还容易出错。本文将通过一个自研小工具,结合 PaddleOCR 和大模型,自动从需求文档的指定标题下提取图片,识别图片中的文字,并生成功能测试用例。这一流程能帮助测试工程师大幅提高效率,同时确保用例生成的精准性。支持同时指定文本标题及图片标题。感兴趣的同学点击下面小卡片获取源码相对于前面的版本:

  • 优化了一些报错导致闪退的情形
  • 增加了图片标题输入框
  • 布局调整
  • 增加了行业下拉选择框
    在这里插入图片描述

一、整体解决方案

我们将完成以下功能:

  1. 从 Word 文档中提取图片:通过 python-docx 提取指定标题下的图片。
  2. 图片文字识别:使用 PaddleOCR 对图片中的文字内容进行识别。
  3. 用例生成:将识别到的文字内容传递给大模型(如 OpenAI GPT),自动生成功能测试用例。

整个工具的实现框架如下:

+-------------------------------------------+
|  需求文档加载                              |
|  读取 Word 文档 (docx)                     |
+-------------------------------------------+↓
+-------------------------------------------+
|  图片提取                                   |
|  识别指定标题下的图片                      |
+-------------------------------------------+↓
+-------------------------------------------+
|  图片文字识别                               |
|  使用 PaddleOCR 识别图片中的文字           |
+-------------------------------------------+↓
+-------------------------------------------+
|  用例生成                                   |
|  将识别文字传递给大模型生成测试用例         |
+-------------------------------------------+↓
+-------------------------------------------+
|  输出测试用例                               |
|  将生成的测试用例保存为文档                 |
+-------------------------------------------+

二、工具实现步骤

1. 环境准备

安装以下必要的 Python 库:

pip install python-docx paddleocr paddlepaddle openai
  • python-docx:用于读取 Word 文档。
  • paddleocrpaddlepaddle:用于图片文字识别。
  • openai:与大模型交互生成测试用例。

2. 提取 Word 文档中指定标题下的图片

在需求文档中,图片通常位于某些特定的标题下(如“登录界面设计”)。我们使用 python-docx 遍历文档内容并提取这些图片。

代码示例:


# 提取指定标题下的图片def extract_text_by_title(self, docx_path, title_keywords, table_keywords, pic_keywords):"""提取多个标题下的正文内容:param pic_keywords: 图片路径:param table_keywords: 表格路径:param docx_path: docx 文件路径:param title_keywords: 标题关键词列表:return: 提取的正文内容(按标题分组)"""doc = Document(docx_path)result = {}doc = self.remove_toc(doc)  # 先清理一波目录for title_keyword in title_keywords.split(','):content = []capture = Falsefor paragraph in doc.paragraphs:text = paragraph.text.strip()if text:# 判断是否是标题if title_keyword in text and 'toc' not in paragraph.style.name.lower():capture = Truecontent.append(text)continue# 停止捕获正文内容if capture and re.match(r"^\d+(\.\d+)*\s+.+", text):  # 新标题breakelif "标题" in paragraph.style.name and capture:  # 遇到下一个标题则停止获取break# 捕获正文内容if capture and text:content.append(text)result[title_keyword] = "\n".join(content)for pic_keyword in pic_keywords.split(','):image_paths = self.get_target_pic(docx_path, pic_keyword)print(image_paths)if not image_paths:print("未找到目标标题下的图片")else:print(f"提取到 {len(image_paths)} 张图片:{image_paths}")# OCR 识别print("\n正在进行 OCR 识别...")ocr_results = self.perform_ocr_with_paddle(image_paths)# 输出结果ocr_results_text = ''for image_path, text in ocr_results:# print(f"\n图片路径:{image_path}")# print(f"识别内容:\n{text}")ocr_results_text += text + '--'result['识别内容'] = ocr_results_textreturn result

示例:提取“业务流程”标题下的图片

在这里插入图片描述


3. 使用 PaddleOCR 进行图片文字识别

使用 PaddleOCR 对提取的图片进行文字识别,并输出识别结果。

代码示例:

def perform_ocr_with_paddle(self, images):"""使用 PaddleOCR 对图片进行文字识别。"""results = []# 初始化 PaddleOCRocr = PaddleOCR(use_angle_cls=True, lang="ch")  # 支持方向分类和中英文混合识别for image_path in images:try:img = cv2.imread(image_path)ocr_result = ocr.ocr(img, cls=True)text_lines = [line[1][0] for line in ocr_result[0]]results.append((image_path, "\n".join(text_lines)))except Exception as e:results.append((image_path, f"OCR 识别失败: {e}"))return results

识别结果如图:

在这里插入图片描述

4. 交互大模型生成测试用例

将识别到的文字内容传递给大模型(如 OpenAI GPT),并生成功能测试用例。

代码示例:

    def generate_cases(self, content_param, prompt_param, job_area):# 初始化OpenAI客户端client = OpenAI(# 如果没有配置环境变量,请用百炼API Key替换:api_key="sk-xxx"api_key='sk-xxx',  # todo 此处需更换base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")reasoning_content = ""  # 定义完整思考过程answer_content = ""  # 定义完整回复is_answering = False  # 判断是否结束思考过程并开始回复# 创建聊天完成请求completion = client.chat.completions.create(model="deepseek-r1",  # 此处以 deepseek-r1 为例,可按需更换模型名称messages=[{'role': 'user', 'content': f'所在行业: {job_area if job_area else None};文档内容: {content_param}, 提示词:{prompt_param}'}],stream=True,# 解除以下注释会在最后一个chunk返回Token使用量# stream_options={#     "include_usage": True# })print("\n" + "=" * 20 + "思考过程" + "=" * 20 + "\n")for chunk in completion:# 如果chunk.choices为空,则打印usageif not chunk.choices:print("\nUsage:")print(chunk.usage)else:delta = chunk.choices[0].delta# 打印思考过程if hasattr(delta, 'reasoning_content') and delta.reasoning_content != None:print(delta.reasoning_content, end='', flush=True)reasoning_content += delta.reasoning_contentelse:# 开始回复if delta.content != "" and not is_answering:print("\n" + "=" * 20 + "完整回复" + "=" * 20 + "\n")is_answering = True# 打印回复过程print(delta.content, end='', flush=True)answer_content += delta.contentreturn answer_content

5. 输出测试用例到文档

将生成的JSON格式的测试用例保存为 Excel文档,便于后续查看和管理。

代码示例:

    def json_to_excel(self, json_data, output_file):"""将任意 JSON 数据中的键作为表头,值作为值,转换为 Excel 表格:param json_data: JSON 数据(字符串或字典):param output_file: 输出的 Excel 文件路径"""# 如果输入是 JSON 字符串,将其解析为字典data_list = Noneif isinstance(json_data, str):json_data = json.loads(json_data)# 找到 JSON 数据中的列表部分(假设是字典中的第一个值)if isinstance(json_data, dict):for key, value in json_data.items():if isinstance(value, list):  # 找到第一个值为列表的键data_list = valuebreakelif isinstance(json_data, list):data_list = json_dataelse:raise ValueError("JSON 数据中未找到列表部分!")if data_list:# 将列表部分转换为 DataFramedf = pd.DataFrame(data_list)# 将 DataFrame 导出为 Excel 文件df.to_excel(output_file, index=False)print(f"Excel 文件已成功生成:{output_file}")else:print("Excel 文件生成失败")

三、完整运行流程

  1. 准备环境:安装所需库,并将需求文档(docx 文件)和 PaddleOCR 模型准备好。
  2. 提取图片:运行代码提取目标标题下的所有图片。
  3. 文字识别:使用 PaddleOCR 对图片进行文字识别,提取关键信息。
  4. 生成测试用例:调用大模型,基于提取的文字内容生成功能测试用例。
  5. 保存结果:将生成的测试用例保存到 Word 文档中,便于后续使用。

四、工具的实际应用场景

  1. 自动化用例生成:通过识别需求文档中的图片内容,快速生成对应的测试用例。
  2. 需求验证:结合图片中的文字内容和生成的测试用例,验证需求文档的完整性和准确性。
  3. 团队协作:将生成的测试用例文档分发给团队成员,提高工作效率。

五、小结

通过本文的工具实现,测试工程师可以将需求文档中的图片内容自动化处理,结合 PaddleOCR 和大模型生成高质量的功能测试用例。整个流程完全落地可用,适用于日常的测试用例生成需求,帮助测试工程师从重复性工作中解放出来,更专注于高价值的测试分析工作。

快试试这个工具,将测试效率提升到新高度吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/72665.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Excel(函数篇):COUNTIF与CONUTIFS函数、SUMIF与SUMIFS函数、ROUND函数、MATCH与INDEX函数、混合引用与条件格式

目录 COUNTIF和COUNTIFS函数COUNTIF函数COUNTIFS函数SUMIF和SUMIFS函数SUMIF函数SUMIFS函数SUMIFS函数与控件实现动态年月汇总ROUND、ROUNDUP、ROUNDDOWN函数单元格混合引用条件格式与公式,标记整行数据MATCH和INDEX函数COUNTIF和COUNTIFS函数 COUNTIF函数 统计下“苏州”出现…

上位机数据可视化:使用QtCharts绘制波形图

工程配置 CMake文件 find_package(Qt5 COMPONENTS Charts REQUIRED)target_link_libraries(zhd-desktop PRIVATE Qt5::Charts)包含头文件以及名称空间&#xff08;这个很重要&#xff0c;没有包含名称空间编译器会提示找不到相关的类型&#xff09; #include <QtCharts&g…

CSS - Pseudo-classes(伪类选择器)

目录 一、介绍二、常用种类三、案例实现案例一&#xff1a;a标签使用link/visited/hover/active案例二&#xff1a;表单元素使用focus/disabled案例三、通过其余伪类实现元素灵活选中 一、介绍 CSS 伪类&#xff08;Pseudo-classes&#xff09; 用于定义元素的特定状态或结构位…

Ubuntu22.04虚拟机里安装Yolov8流程

1. 安装pytorch sudo apt install nvidia-cuda-toolkit nvcc --version # 官方适配地址&#xff1a;https://download.pytorch.org/whl/torch/import torch print(torch.__version__) print(torch.cuda.is_available())2. 安装环境 # cuDNN 安装&#xff1a;https://develop…

Spring 声明式事务管理

Spring 编程的方式实现事务管理&#xff0c;这样太过麻烦&#xff0c;需要在每个方法上面加上相应的事务处理操作&#xff0c;声明式事务处理能够很好的解决这个问题&#xff0c;比如通过tx命名空间&#xff0c;这样只需要配置就可以检测到相关的方法&#xff0c;或者是通过tra…

Chat2DB:让数据库管理像聊天一样简单

数据库工具的痛点与破局 在数据爆炸的时代&#xff0c;数据库管理工具已成为企业高效运营的刚需。然而&#xff0c;传统工具如Navicat、DBeaver虽功能强大&#xff0c;却让非技术人员和SQL新手望而却步。复杂的界面、繁琐的手动操作、晦涩的语法规则&#xff0c;成为横亘在数据…

Navicat for Snowflake 震撼首发,激活数据仓库管理全新动能

近日&#xff0c;Navicat 家族迎来了一位全新成员 — Navicat for Snowflake。Snowflake 是一款基于云架构的现代数据仓库解决方案&#xff0c;以其弹性扩展、高性能和易用性著称。这次首发的Navicat for Snowflake 专为简化 Snowflake 数据库管理任务而精心打造。它凭借其直观…

【项目合集】智能语音小车-微信小程序控制

功能需求&#xff1a; 车子检测环境温度、湿度&#xff0c;上报 APP、WEB 端显示实时数据可通过 APP 控制小车前进、左转、右转可通过语音控制小车前进后退车上一个 LED 灯&#xff0c;可通过 WEB、小程序控制在 APP、WEB 上均可注册登录 硬件清单 硬件 功能 备注 ESP32 …

人工智能与人的智能,改变一生的思维模型分享【4】决策树

决策树&#xff08; DECISION TREE&#xff09; 一般由一个决策图和若干可能的结果组成。是一种通过罗列解题的关键步骤以及各步骤发生的条件和结果&#xff0c;由此来创建到达目标的规划。 我们很早就知道有一个方法&#xff0c;叫做当你苦闷、纠结的时候&#xff0c;把你的所…

利用余弦相似度在大量文章中找出抄袭的文章

我前面的2篇文章分别讲了如果利用余弦相似度来判断2篇文章的相似度&#xff0c;来确定文章是否存在抄袭&#xff0c;和余弦相似度的原理&#xff0c;即余弦相似度到底是怎么来判断文章的相似性高低的等等。这一篇再说下&#xff0c;对于文章字数多和大量文章时&#xff0c;如果…

设计模式-对象创建

对象创建 前言1. Factory Method1.1 模式介绍1.2 模式代码1.2.1 问题代码1.2.2 重构代码 1.3 模式类图1.4 要点总结 2. Abstract Factory2.1 模式介绍2.2 模式代码2.2.1 问题代码2.2.2 重构代码 2.3 模式类图2.4 要点总结 3. Prototype3.1 模式介绍3.2 模式代码3.3 模式类图3.4…

SQLAlchemy系列教程:批量插入数据

高效地批量插入数据对于应用程序的性能至关重要。SQLAlchemy为批处理操作提供了几种机制&#xff0c;可以最大限度地减少开销并加快数据库事务时间。在本指南中&#xff0c;我们将探讨如何使用SQLAlchemy执行批量插入&#xff0c;包括从基础技术到高级技术。 搭建环境 在开始之…

openEuler系统迁移 Docker 数据目录到 /home,解决Docker 临时文件占用大问题

根据错误信息 write /var/lib/docker/tmp/...: no space left on device&#xff0c;问题的根源是 根分区&#xff08;/&#xff09;的磁盘空间不足&#xff0c;而非 /home 分区的问题。以下是详细解释和解决方案&#xff1a; 问题原因分析 Docker 临时文件占用根分区空间&…

Matlab 四分之一车辆被动悬架和模糊pid控制对比

1、内容简介 Matlab 183-四分之一车辆被动悬架和模糊pid控制对比 可以交流、咨询、答疑 2、内容说明 略 3.1 车辆多自由度模型建立 对于车辆动力学&#xff0c;一般都是研究其悬架系统&#xff0c;悬架系统由轮胎&#xff0c;轮胎空气&#xff0c;弹簧&#xff0c;减震器和…

LabVIEW旋转设备状态在线监测系统

为了提高大型旋转设备如电机和水泵的监控效率和故障诊断能力&#xff0c;用LabVIEW软件开发了一套实时监测与故障诊断系统。该系统集成了趋势分析、振动数据处理等多项功能&#xff0c;可实时分析电机电流、压力、温度及振动数据&#xff0c;以早期识别和预报故障。 ​ 项目背…

跟网型逆变器小干扰稳定性分析与控制策略优化simulink仿真模型和代码(包含完整仿真报告)

关注&#xff1a;“电击小子程高兴的MATLAB小屋”获取巨额优惠 1.模型简介 本仿真模型基于MATLAB/Simulink&#xff08;版本MATLAB 2016Rb&#xff09;软件。建议采用matlab2016 Rb及以上版本打开。&#xff08;若需要其他版本可联系代为转换&#xff09; 近年来&#xff0c…

基于SpringBoot的“城市公交查询系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“城市公交查询系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统总体结构图 系统首页界面 用户登录界面 公…

框架源码私享笔记(02)Mybatis核心框架原理 | 一条SQL透析核心组件功能特性

最近在思考一个问题&#xff1a;如何能够更好的分享主流框架源码学习笔记&#xff08;主要是源码部分&#xff09;?让有缘刷到的同学既可以有所收获&#xff0c;还能保持对相关技术架构探讨学习热情和兴趣。以及自己也保持较高的分享热情和动力。 今天尝试用一个SQL查询作为引…

windows协议不再续签,华为再无windows可用,将于四月发布鸿蒙PC

大家好&#xff0c;我是国货系创始人张云泽&#xff0c;最近不少小伙伴在后台问&#xff1a;“听说Windows协议要到期了&#xff1f;我的电脑会不会变砖&#xff1f;”还有人说&#xff1a;“华为笔记本以后用不了Windows了&#xff1f;鸿蒙系统能用吗&#xff1f;”今天咱们就…

关于Redis的集群(上)

目录 基本概念 数据分片算法 哈希求余 ​编辑一致性哈希算法 哈希槽分区算法 搭建集群环境 创建目录和配置 编写 docker-compose.yml 启动容器 构建集群 基本概念 广义的集群&#xff0c;只要是多个机器构成了分布式系统&#xff0c;都可以成为是一个“集群”。 但…