Deepseek API+Python测试用例一键生成与导出-V1

发布于:2025-03-05 ⋅ 阅读:(19) ⋅ 点赞:(0)

在实际使用场景中,可能只需要获取需求文档中的部分内容,例如特定标题的正文部分、特定段落的表格内容,或者指定图片中的内容。为了满足这一需求,可以对文档清理工具进行优化,支持按标题提取内容按章节提取表格和图片,并结合阿里云百炼 DeepSeek-R1 的流式 API 进行对话生成测试用例等功能。而且上个版本的小工具貌似并没有很好的将目录清洗掉,这次也一并优化。

去除目录

此次更新从Word 文档(.docx 文件)中智能化地去除目录,可以使用 Python 的 python-docx 库。以下是一种方法,可以遍历文档中的所有段落,识别并删除目录。

代码示例

from docx import Document

    def remove_toc(self, docx_path):
        """
        去除 Word 文档中的目录
        :param docx_path: docx 文件路径
        """
        doc = Document(docx_path)
        paragraphs_to_remove = []

        # 遍历段落,识别目录
        for paragraph in doc.paragraphs:
            if "TOC" in paragraph.style.name:  # 检查样式名称
                paragraphs_to_remove.append(paragraph)
            elif paragraph.text.strip() and (paragraph.text[0].isdigit() or paragraph.text.startswith("1.")):
                # 检查是否为目录条目
                paragraphs_to_remove.append(paragraph)

        # 删除标记的段落
        for paragraph in paragraphs_to_remove:
            p = paragraph._element
            p.getparent().remove(p)

        # 保存修改后的文档
        file_name = 'modified_' + docx_path.split('\\')[-1]
        new_path = docx_path.split('\\')[0] + os.sep + file_name
        doc.save(new_path)
        return new_path

说明

  1. 识别目录

    • 通过检查段落的样式名称来识别目录。通常,目录的样式名称以 “TOC” 开头(如 “TOC 1”, “TOC 2” 等),可以根据具体文档样式进行调整。
  2. 删除段落

    • 使用 p.getparent().remove(p) 方法来从文档中删除标记的段落。
  3. 保存文档

    • 将修改后的文档保存为新的文件,避免覆盖原始文档。

    在这里插入图片描述

注意事项

  • 确保安装了 python-docx 库,如果没有,可以使用以下命令安装:
    pip install python-docx
    
  • 根据具体文档的样式调整目录识别的逻辑。如果目录使用了不同的样式,可以修改条件以适应实际情况。

提取指定标题下的正文内容

下面给出实现按标题提取正文内容,并说明如何实现和微调以下功能:

  1. 按标题提取正文内容:用户可以通过输入标题关键字(如“4.1 功能描述”),提取指定范围的正文。
  2. 按标题提取图片与表格:支持提取特定章节的图片和表格,并单独存储图片,用于后续处理。
  3. 图片内容识别:利用 OCR 技术识别图片中的文字,并结合阿里云百炼 DeepSeek-R1 的流式 API 进行对话生成测试用例。
  4. 灵活微调:通过修改正则表达式、章节匹配规则和 API 参数,满足用户的个性化需求。
    在这里插入图片描述

功能实现方案

以下是针对需求文档部分内容提取的解决方案以及实现代码。


1. 提取指定标题的正文内容

功能描述

通过用户输入的标题关键字(如“4.1 功能描述”),提取从该标题开始到下一个同级标题之间的正文。

在这里插入图片描述
注:如果不指定,则还是按原逻辑进行清洗展示。
在这里插入图片描述

实现代码
def extract_text_by_title(docx_path, title_keyword):
    """
    根据标题关键字提取正文内容
    :param docx_path: docx 文件路径
    :param title_keyword: 标题关键字(如 "4.1 功能描述")
    :return: 提取的正文内容
    """
    doc = Document(docx_path)
    content = []
    capture = False  # 标记是否开始捕获正文

    for paragraph in doc.paragraphs:
        text = paragraph.text.strip()
        # print(f"当前段落文本: {text}")

        # 匹配标题,判断是否开始捕获
        if title_keyword in text and 'toc' not in paragraph.style.name:
            capture = True
            print("开始捕获正文内容")
            # print(paragraph.style.name)
            continue

        # 如果捕获正文,遇到下一个标题则停止
        if capture:
            # print(paragraph.style.name)
            if re.match(r"^\d+(\.\d+)*\s+.+", text):  # 匹配新的标题
                print("遇到新的标题,停止捕获")
                break
            elif "标题" in paragraph.style.name:  # 遇到下一个标题则停止获取
                print("遇到新的标题,停止捕获")
                break
            if text:  # 只在文本非空时添加
                content.append(text)

    return "\n".join(content)

2. 提取指定标题的图片和表格(待实现)

功能描述

用户可以指定标题关键字(如“4.4.1.1 界面UI图”),提取从该标题开始的图片和表格,并分别存储到文件夹中。


3. 图片内容识别与智能对话生成测试用例(待实现)

功能描述

提取图片后,利用 OCR 技术识别图片中的文字并结合阿里云百炼 DeepSeek-R1 的流式 API 进行对话生成测试用例。


微调手法

1. 按标题提取正文内容

  • 修改标题匹配规则:通过优化正则表达式,兼容不同的标题格式。例如:

    # 支持 "4.1 功能描述" 和 "4.1 - 功能描述"
    re.match(rf"^{re.escape(title_keyword)}(\s+|[-])", text)
    
  • 限制正文范围:如果需要提取多级标题之间的内容,可以调整捕获规则。例如:

    # 仅捕获 4.1 开头的内容
    re.match(r"^4\.1(\.\d+)*\s+.+", text)
    

2. 提取表格和图片

  • 图片格式兼容:支持提取 PNG、JPEG 等不同格式的图片,并统一保存为指定格式。
  • 表格格式优化:将表格内容存储为二维数组(列表嵌套列表),并支持导出为 Excel 文件。

3. 图片内容识别与测试用例生成

  • OCR 语言支持:通过 pytesseract 添加多语言支持。例如:

    pytesseract.image_to_string(image, lang="chi_sim")  # 简体中文
    
  • 增强对话生成逻辑:为流式 API 添加更多上下文信息,提升生成测试用例的准确性。例如:

    payload = {"prompt": f"{prompt}\n上下文:{context}", "content": content}
    

总结

通过本文的优化,实现了针对需求文档的部分内容提取功能:

  1. 按标题提取正文:支持提取特定章节的正文内容。
  2. 按标题提取图片与表格:支持提取特定章节的图片和表格,并分别存储。
  3. 图片内容识别与测试用例生成:结合 OCR 和阿里云百炼 API,实现从图片到测试用例的智能生成。

这些功能可根据实际需求进行微调,满足不同场景下的需求文档清理和测试用例生成。源码已上传云盘,冰冻三尺非一日之寒,每日新增一点点!~欢迎反馈意见


网站公告

今日签到

点亮在社区的每一天
去签到