百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

通过增强的PDF结构识别彻底改变RAG的效果

myzbx 2025-03-13 18:14 6 浏览

摘要

随着大型语言模型(LLM)的快速发展,检索增强生成(RAG)已成为基于专业知识的问答领域的主导方法。目前各大基础模型公司都已经开放了Embedding和Chat API接口,LangChain等框架也已经集成了RAG流程。看来RAG的关键模型和步骤已经解决了,那么问题来了:专业知识QA体系现在是否已经接近完美?

本文发现,目前的主要方法都依赖于访问高质量文本语料库的前提。然而,由于专业文档主要存储在PDF中,PDF解析的准确性较低,严重影响了基于专业知识的QA的有效性。我们对来自相应现实世界专业文档的数百个问题进行了实证 RAG 实验。结果表明,ChatDOC(chatdoc.com)是一个配备全景和精确 PDF 解析器的 RAG 系统,可以检索更准确和完整的片段,从而获得更好的答案。实证实验表明,ChatDOC 在近 47% 的问题上优于基线,在 38% 的情况下持平,仅在 15% 的情况下落后。它表明我们可以通过增强 PDF 结构识别来彻底改变 RAG。

1 简介

大型语言模型 (LLM) 的训练数据主要来自公开的互联网资源,包括网页、书籍、新闻和对话文本。这意味着LLM主要依赖互联网资源作为培训数据,这些数据庞大、多样且易于访问,支持他们扩大能力。然而,在垂直应用中,专业任务要求LLM利用领域知识,不幸的是,这些知识是私有的,而不是其预训练数据的一部分。

为LLM配备领域知识的一种流行方法是检索增强生成(RAG)。 RAG框架回答问题分四个步骤:用户提出查询,系统从私有知识库中检索相关内容,将其与用户查询结合起来作为上下文,最后要求LLM生成答案。图 1 中通过一个简单的示例对此进行了说明。这个过程反映了遇到问题的典型认知过程,包括查阅相关参考文献并随后得出答案。在此框架中,关键部分是相关信息的准确检索,这对于 RAG 模型的有效性至关重要。

图 1.检索增强生成 (RAG) 的工作流程。

然而,从 PDF 文件中检索的过程充满了挑战。常见问题包括文本提取不准确以及 PDF 文件内表格的行列关系混乱。因此,在RAG之前,我们需要将大文档转换为可检索的内容。转换涉及几个步骤,如图2所示:

图 2.将 PDF 转换为可检索内容的过程。

  • 文档解析和分块。它涉及提取段落、表格和其他内容块,然后将提取的内容分成块以供后续检索。
  • 嵌入。它将文本块转换为实值向量并将其存储在数据库中。

由于每个步骤都可能导致信息丢失,因此复合损失会显着影响 RAG 响应的有效性。

本文主要解决 PDF 解析和分块的质量是否影响 RAG 的结果的问题。我们将探讨与此问题相关的挑战、方法和现实案例研究。它将包括检查该领域的两种方法,即基于规则的方法和基于深度学习的方法,然后通过实例对其功效进行实证评估。

2 PDF 解析和分块

2.1 挑战和方法概述

对于人类来说,阅读任何文档页面的认知过程都是相似的。当我们阅读一页时,字符被我们的视网膜捕获。然后,在我们的大脑中,这些字符被组织成段落、表格和图表,然后被理解或记忆。然而,计算机将信息视为二进制代码。从他们的角度来看,如图 3 所示,文档可以分为两种不同的类型:

图 3.计算机视图中的两种类型的文档。

  • 标记文档:示例包括 Microsoft Word 和 HTML 文档,其中包含

    等特殊标记,用于将文本组织为段落、单元格和表格。
  • 未标记文档:示例包括 PDF,它存储有关每个文档页面上字符、线条和其他内容元素的放置的说明。他们专注于以一种使文档易于人类读者阅读的方式“绘制”这些基本内容元素。它们不存储文档的任何结构信息,例如表格或段落。因此,未标记的文档仅适合人类电子阅读,而无法被机器读取。当尝试将 PDF 中的表格复制到 MS Word 中时,这一点变得很明显,其中表格的原始结构通常会完全丢失。
  • 然而,大型语言模型 (LLM) 在处理序列化文本方面表现出熟练程度。因此,为了使法学硕士能够有效地管理未标记的文档,需要一个能够将分散的字符组织成具有结构的连贯文本的解析器。理想情况下,PDF 解析器应具有以下主要功能:

    • 文档结构识别:它应该熟练地将页面划分为不同类型的内容块,如段落、表格和图表。这保证了划分的文本块是完整且独立的语义单元。
    • 复杂文档布局的稳健性:即使对于具有复杂布局的文档页面(例如多列页面、无边框表格,甚至具有合并单元格的表格),它也应该能够很好地工作。

    目前,PDF解析的方法主要有两类:基于规则的方法和基于深度学习的方法。其中,PyPDF是一种广泛使用的基于规则的解析器,是LangChain中用于PDF解析的标准方法。相反,我们的方法 ChatDOC PDF Parser ( https://pdfparser.io/ ) 是以深度学习模型为基础的。接下来,我们通过介绍方法并深入研究一些现实案例来说明它们之间的区别。

    2.2 基于规则的方法:PyPDF

    我们首先介绍基于 PyPDF 的解析和分块工作流程。首先,PyPDF 将 PDF 中的字符序列化为长序列,而无需文档结构信息。然后,利用一些分割规则,例如LangChain中的“
    RecursiveCharacterTextSplitter”函数,将该序列分割成离散的块。具体来说,该函数根据预定义的分隔符列表(例如换行符“\n”)来划分文档。在此初始分段之后,仅当组合块的长度不大于预定的
    N 个字符限制时,才合并相邻块。在下文中,在没有上下文歧义的情况下,我们使用“PyPDF”来指代使用 PyPDF+
    RecursiveCharacterTextSplitter 进行文档解析和分块的方法。下面将块的最大长度设置为 300 个令牌。接下来我们通过一个案例来观察PyPDF的本质。

    图 4 中的情况 1是文档中的一个页面,其中混合了表格和双栏文本,其边界难以区分。表格中间的行没有水平线,导致难以识别表格中的行。段落既有单栏布局(适用于表格下方的注释),也有双栏布局(适用于页面下部的段落)。



    图 4. PyPDF 在案例 1 上的解析和分块结果(原始文档:[4])。放大查看细节。

    PyPDF的解析和分块结果如图4所示。在“3可视化”部分,我们可以看到PyPDF正确识别了页面的一列和两列布局部分。但PyPDF也存在三个缺点:

    1. 它无法识别段落和表格的边界。它错误地将表格分成两部分,并将第二部分与后续段落合并为一个块。
      PyPDF 似乎擅长检测段落的边界,因为它不会将一个段落分成多个块。但它实际上并没有解析段落的边界。在“2 Chunking Result”部分中,我们可以看到页面中的每个可视文本行都被解析为结果中以“\n”结尾的行,并且段落末尾没有特殊格式。它正确地对段落进行分块,因为我们使用特殊的分隔符“\n”,它将以句点结尾的行视为段落的结尾。然而,这种启发式在很多情况下可能并不成立。
    2. 它无法识别表内的结构。在“2 Chunking Result”部分中,在 chunk1 中,表格的上半部分表示为一系列短语,其中一个单元格可以分为多行(例如单元格“China commerce(1)”),并且一些相邻小区可以排成一行(例如第二行中的第三至第五小区,“services(1)菜鸟云”)。这样,表的结构就完全被破坏了。如果为 RAG 检索此块,LLM 无法从中感知任何有意义的信息。 Chunk 2 的情况类似。而且,表头只存在于 Chunk 1 中,因此 Chunk 2 中表的下部变得毫无意义。
    3. 它无法识别内容的阅读顺序。第 5 块“管理讨论与分析”的最后一行实际上位于页面顶部,但被解析为结果中的最后一句。这是因为 PyPDF 按字符的存储顺序而不是读取顺序来解析文档。当面对复杂的布局时,这可能会导致混乱的结果。

    具有复杂跨页表的另一个案例案例 2 的结果如附录中的图 15 所示。

    2.3 基于深度学习的方法:ChatDOC PDF Parser

    接下来,我们将注意力转向基于深度学习的解析方法,以 ChatDOC PDF 解析器为例。 ChatDOC PDF 解析器 ( https://pdfparser.io/ ) 已在超过一千万个文档页面的语料库上进行了训练。遵循[2]中的方法,它包含一系列复杂的步骤,包括:

    1. OCR用于文本定位和识别;
    2. 物理文件对象检测;
    3. 跨栏、跨页修剪;
    4. 阅读顺序确定;
    5. 表结构识别;
    6. 文档逻辑结构识别。

    读者可以参考[2]了解这些步骤的详细信息。解析后,我们使用段落和表格作为基本块,并合并相邻的块,直到达到令牌限制形成一个块。

    ChatDOC PDF 解析器旨在一致地以 JSON 或 HTML 格式提供解析结果,即使对于具有挑战性的 PDF 文件也是如此。它将文档解析为内容块,其中每个块指的是表格、段落、图表或其他类型。对于表格,它输出每个表格单元格中的文本,并告知哪些单元格被合并到新单元格中。此外,对于具有分层标题的文档,它会输出文档的分层结构。总而言之,解析的结果就像一个组织良好的Word文件。图5显示了扫描复印页面及其解析结果。左侧显示文档和识别的内容块(具有不同颜色的矩形)。右侧显示 JSON 或 HTML 格式的解析结果。读者可以参考[3]查看该解析结果的现场演示。

    图 5.说明 ChatDOC PDF 解析器结果的示例。放大查看细节。

    然后,我们检查图 6 中案例 1 的 ChatDOC PDF Parser 的结果。它成功解决了 PyPDF 的三个缺点。

    图 6. ChatDOC PDF Parser 对案例 1 的解析和分块结果(原始文档:[4])。放大查看细节。

    1. 如“3 可视化”部分所示,它识别混合布局并正确地将整个表设置为单独的块。对于段落,如“2分块结果”部分中的块2所示,同一段落中的文本行合并在一起,使其更易于理解。
    2. 在“2 Chunking Result”部分,在Chunk 1中,我们可以看到表是使用markdown格式表示的,它保留了表的内部结构。此外,ChatDOC PDF 解析器可以识别表格内的合并单元格。由于markdown格式无法表示合并的单元格,因此我们将合并单元格中的整个文本以markdown格式放入到每个原始单元格中。正如您所看到的,在块 1 中,文本“Yearending March 31, 2021”重复了 9 次,这代表与原始 9 个单元格的合并。
    3. 另外,“管理层讨论与分析”和“112阿里巴巴集团控股有限公司”被识别为页眉和页脚,并放置在解析结果的顶部和底部,与阅读顺序一致。

    案例2的另一个复杂且跨页表的案例的结果如附录图16所示。

    3 PDF识别对RAG影响的实验

    回到本文的主题,文档的解析和分块方式是否会影响 RAG 系统提供的答案的质量?为了回答这个问题,我们进行了系统实验来评估其影响。

    3.1 RAG答案质量的定量评估

    3.1.1 设置

    我们比较了表 1 中列出的两种 RAG 系统:

    表 1.两个 RAG 系统的设置:ChatDOC 和 Baseline。

    • ChatDOC:使用 ChatDOC PDF 解析器解析文档并利用结构信息进行分块。
    • Baseline:使用 PyPDF 解析文档并使用 RecursiveCharacterTextSplitter 函数进行分块。

    两个系统的其他组件(例如嵌入、检索和 QA)是相同的。

    3.1.2 数据准备

    在我们的实验中,我们组装了一个密切反映现实世界条件的数据集,其中包含来自各个领域的 188 个文档。具体来说,该合集包括 100 篇学术论文、28 份财务报告以及 60 份其他类别的文件,例如教科书、课件和立法材料。

    然后,我们通过众包收集了 800 个手动生成的问题。经过仔细筛选,我们剔除了低质量题,得到了302道评价题。这些问题分为两类(如表2所示):

    表 2.数据集中的问题分为提取问题和综合分析问题。

    • 提取性问题是那些可以通过直接摘录文档来回答的问题。通常,他们需要精确的答案,因为他们寻求特定的信息。我们发现,在使用LLM进行评估时,它可能无法区分答案之间细微但重要的差异,因此我们依靠人工评估。我们使用 0-10 等级来对结果进行评分。向注释者提供两种方法的检索内容和答案,并同时对两种方法进行评分。我们显示检索到的内容,因为它通常无法在没有文档内容的情况下评估答案,并一起显示两种方法以促进详细比较,特别是在部分正确的结果上。
    • 综合分析问题需要综合多来源、多方面的信息并进行总结。由于答案很长并且需要对给定文档内容进行全面理解,因此我们发现人类评估起来既困难又耗时。因此,我们使用 GPT-4 来评估答案质量,评分范围为 1-10。我们还在一个请求中对两种方法的结果进行评级。但是我们只给出检索到的内容而不给出答案,因为与提取性问题相比,答案很长(因此成本很高),并且更好的检索内容可能意味着更好的答案(因为使用的LLM是相同的)。两种方法的一对结果被评分4次以避免偏差[5],并使用它们的平均值。具体来说,对于同一问题要比较的一对内容(AB ),我们将AB都输入到 GPT-4 中进行两次比较和评分。我们还翻转他们的顺序,将BA喂给GPT-4,并重复请求两次。

    3.1.3 结果

    提取问题的结果

    抽取式问题的结果如表 3 所示。在 86 个抽取式问题中,ChatDOC 在 42 个案例上的表现优于基线,在 36 个案例上表现平平,仅在 8 个案例上低于基线。

    表 3. ChatDOC 与 Baseline 的比较结果。

    评级分数的分布在图7中进一步详细说明。在分布表中,T_ij=k表示有k个问题,ChatDOC的答案被评为i,而Baseline的答案被评为j。 ChatDOC 得分高于基线的情况(ChatDOC 获胜)显示在左下半部分,而基线得分较高的情况则显示在右上角。值得注意的是,大多数明显获胜的样本都位于左下半部分,这表明了 ChatDOC 的优越性。令人印象深刻的是,ChatDOC 在近一半的案例中获得了满分(10 分),总计 40 分。

    图 7.提取问题的评分分布。

    综合分析题结果

    综合分析问题的结果如表3所示。在216个综合分析问题中,ChatDOC在101个案例中表现优于基线,在79个案例中表现平平,仅在36个案例中低于基线。

    在图 8 中,这些问题的分数分布图显示,左下半部分较为集中。这表明 ChatDOC 经常优于基线。值得注意的是,ChatDOC 的大部分检索得分在 8.5 到 9.5 之间,显示出高水平的检索质量。

    图8综合分析题评分分布。

    综上所述,ChatDOC 明显优于 Baseline,这主要归功于其优越的 PDF 解析方法。

    3.2 RAG案例分析

    为了使比较更加直观,我们展示了一些 ChatDOC 展示其优越性的案例。

    3.2.1 案例 A — 在 Tesla 手册中查找具体信息

    案例A涉及查询特斯拉的用户手册,专门针对货运量信息。对于此查询,ChatDOC 和 Baseline 的执行方式有所不同,如图 9 和图 10 所示。这些图显示了检索到的最相关的块以及 LLM 的答案。它们还显示相关块所在的文档页面,并突出显示这些块。在这种情况下,两个模型都定位了表格,但它们提供给 LLM 的文本不同,因此答案不同。具体来说,

    • ChatDOC识别表结构,以Markdown格式解释文本(如“检索的文本块”部分所示),这使得语言模型更容易理解。
    • Baseline错误地将目标表和上面的表合并为一个chunk并且没有表结构。因此,该块中的文本无法理解(如“检索的文本块”部分所示),LLM 只能回答“未明确提及”。

    图 9. ChatDOC 在特斯拉手册中查找信息的结果(原始文档:[6])。

    图 10.在特斯拉手册中查找信息的基线结果(原始文档:[6])。

    这个案例强调了 ChatDOC 解析方法的有效性,特别是在处理表格并以 LLM 友好的格式呈现它们方面。

    3.2.2 案例B——研究论文

    在案例 B 中,用户的查询是针对特定的研究论文。它要求系统识别论文中的“表 8”,并枚举其列出的所有因变量。表的标题和内容对于识别这些变量都是必要的。图 11 和图 12 显示了 ChatDOC 和 Baseline 在这个案例。

    图 11. ChatDOC 在研究论文中定位特定表的结果(原始文档:[7])。

    图 12. Baseline 在研究论文中定位特定表格的结果(原始文档:[7])

    • ChatDOC 有效地检索整个表,包括其标题和内容。这种全面的检索可以准确地响应查询。
    • Baseline 不会检索真正的“Table 8”,而只会检索“Table 7”下方的文本块(因为它包含“Table 8”的文本)。由于基线的分割策略,“表8”的内容和同一页面上的其他内容被组合成一个大块。该块包含不相关内容的混合,具有较低的相似度分数,因此不会出现在检索结果。

    此案例凸显了 ChatDOC 处理复杂文档结构的卓越能力及其对检索特定片段以获得准确响应的影响。

    3.3 局限性讨论

    虽然 ChatDOC 通常表现良好,但在某些情况下其检索质量不如 Baseline。在这些情况下我们观察到两种模式。

    排名和代币限制问题。如果 ChatDOC 首先检索一个大但不相关的表,它会耗尽上下文窗口,从而阻止访问相关信息,如图 13 中的示例所示。这主要是因为嵌入模型没有将相关块排名为顶部结果。这可以通过更好的嵌入模型或更复杂的方式来处理大型表格/段落(例如仅保留 LLM 表格的相关部分)来解决。

    图 13. ChatDOC 遇到排名和令牌限制问题的示例。

    精细分割的缺点。图 14 显示了需要检索整个表及其标题的情况。然而,ChatDOC 错误地将标题识别为常规段落,从而使标题和表格存储在不同的块中。这导致仅检索部分所需信息,即表格的标题和脚注,而不是表格中的关键内容。改进表格标题识别可以解决这些问题。

    图 14. ChatDOC 无法检索相关表的示例(原始文档:[8])。

    4 ChatDOC 中的应用

    我们在 ChatDOC ( chatdoc.com )上应用了增强的 PDF 结构识别框架,这是一个人工智能文件阅读助手,可以帮助总结长文档、解释复杂概念并在几秒钟内找到关键信息。

    在可靠性和准确性方面,它在所有ChatPDF产品中名列前茅。 ChatDOC 的特别之处如下:

    • 掌握表格:只需选择任何表格或文本,然后直接深入了解细节。
    • 多文件对话:同时讨论大量文档,而不必担心每个文档有多少页。
    • 引用支持的回复:所有答案均由从源文档中直接引用的内容支持。
    • 处理多种文件类型:与扫描文件、ePub、HTML 和 docx 格式无缝协作。

    我们仍在努力发布 ChatDOC PDF Parser 的 API。请通过pdfparser.io订阅等待名单。

    5 结论

    在 PDF 解析器的帮助下,大型语言模型 (LLM) 能够生成更准确的响应,该解析器可以有效地从文档中提取结构化信息并将其集成到提示中。此过程提高了输入模型的数据的质量和相关性,从而提高了模型的输出。

    未来我们将比较更多基于深度学习的文档解析方法,以更全面地理解RAG质量与文档解析质量之间的关系。一些初步实验表明,一些开源 PDF 解析方法无法满足高质量 RAG 的标准。

    附录:更多 PDF 解析和分块案例

    图 15 中的案例 2具有一个跨越两页的大型无边框表格。图 15 显示了 PyPDF 的结果。仔细检查发现,表格仅表示为文本序列,这使得它们难以解释和理解。桌子分散成三块。这两个案例的结果表明,基于规则的方法(如 PyPDF)往往会在没有真正理解文档内容结构的情况下剖析文档。结果,表格经常被拆散,段落变得混乱,导致原始文档的表示脱节且令人困惑。

    图 15. PyPDF 在案例 2 上的解析和分块结果(原始文档:[4])。放大查看细节。

    对于 ChatDOC PDF 解析器(如图 16 所示),解析结果明显不同。它不仅保留了文档结构,而且还以保持其固有含义的方式有效地对文档进行了分段。在这种情况下,跨越两页的表格被设置为一个块,其标题位于开头。因此,该块中的信息是独立的。如果为 RAG 检索该块,LLM 可以消化其中的有用信息。

    图 16. ChatDOC PDF 解析器在案例 2 上的解析和分块结果(原始文档:[4])。放大查看细节。

    相关推荐

    Django零基础速成指南:快速打造带用户系统的博客平台

    #python##服务器##API##编程##学习#不是所有教程都值得你花时间!这篇实战指南将用5分钟带你解锁Django核心技能,手把手教你从零搭建一个具备用户注册登录、文章管理功能的完整...

    iOS 17.0 Bootstrap 1.2.9 半越狱来啦!更新两点

    这款Bootstrap半越狱工具终于更新,离上一次更新已相隔很久,现在推出1.2.9版本,主要为内置两点功能进行更新,也是提升半越狱的稳定性。如果你正在使用这款半越狱工具的,建议你更新。注意!...

    iOS 16.x Bootstrap 1.2.3 发布,支持运行清理工具

    本文主要讲Bootstrap半越狱工具更新相关内容。如果你是iOS16.0至16.6.1和17.0系统的,想体验半越狱的果粉,请继续往下看。--知识点科普--Bootstrap...

    SpringBoot整合工作流引擎Acticiti系统,适用于ERP、OA系统

    今日推荐:SpringBoot整合工作流引擎Acticiti的源码推荐理由:1、SpringBoot整合工作流引擎Acticiti系统2、实现了三级权限结构3、持久层使用了mybatis框架4、流程包...

    SpringCloud自定义Bootstrap配置指南

    在SpringCloud中自定义Bootstrap配置需要以下步骤,以确保在应用启动的早期阶段加载自定义配置:1.添加依赖(针对新版本SpringCloud)从SpringCloud2020...

    Python使用Dash开发网页应用(三)(python网页开发教程)

    PlotlyDash开发Web应用示例一个好的网页设计通常都需要编写css甚至js来定制前端内容,例如非常流行的bootstrap框架。我们既然想使用Dash来搭建web应用,很大的一个原因是不熟悉...

    Oxygen XML Editor 27.1 中的新功能

    OxygenXMLEditor27.1版是面向内容作者、开发者、合作者和出版商的行业领先工具包的增量版本。在27.1版本中,AIPositronAssistant得到了增强,包括用于...

    【LLM-多模态】Mini-Gemini:挖掘多模态视觉语言模型的潜力

    一、结论写在前面论文提出了Mini-Gemini,一个精简而强大的多模态VLM框架。Mini-Gemini的本质在于通过战略性框架设计、丰富的数据质量和扩展的功能范围,发掘VLM的潜在能力。其核心是补...

    谐云课堂 | 一文详解分布式改造理论与实战

    01微服务与分布式什么是分布式?首先,我们对上图提到的部分关键词进行讲解。单体,是指一个进程完成全部的后端处理;水平拆分,是同一个后端多环境部署,他们都处理相同的内容,使用反向代理来均衡负载,这种也叫...

    基于Abaqus的手动挡换挡机构可靠性仿真

    手动挡,也称手动变速器,英文全称为Manualtransmission,简称MT,即用手拨动换挡操纵总成才能改变变速器内的齿轮啮合位置,改变传动比,从而达到变速的目的。家用轿车主要采用软轴连接的换挡...

    【pytorch】目标检测:彻底搞懂YOLOv5详解

    YOLOv5是GlennJocher等人研发,它是Ultralytics公司的开源项目。YOLOv5根据参数量分为了n、s、m、l、x五种类型,其参数量依次上升,当然了其效果也是越来越好。从2020...

    超实用!50个非常实用的PS快捷键命令大全分享

    今天,给大家介绍50个非常实用的快捷键命令大全,大家伙都是设计师,关于软件使用那是越快越好啊。一、常用的热键组合1、图层混合模式快捷键:正常(Shift+Option+N),正片叠底(Shif...

    Pohtoshop中深藏不露的小技巧(科目一考试技巧记忆口诀看完必过)

    邢帅教育ps教程为大家总结了一些Pohtoshop中深藏不露的小技巧,可以帮助到大家在设计时减少不必要的麻烦,提高工作效率哦~~~1.设置网格线保持像素完美不在1:1分辨率下也能保持像素完美,可以...

    Ganglia监控安装总结(监控安装工作总结)

    一、ganglia简介:Ganglia是一个跨平台可扩展的,高性能计算系统下的分布式监控系统,如集群和网格。它是基于分层设计,它使用广泛的技术,如XML数据代表,便携数据传输,RRDtool用于数据...

    谁说Adobe XD做不出好看的设计?那是你没搞懂这些功能

    AdobeXD的美化栏具有将设计视图美化的功能,它能使界面设计和原型设计更漂亮、更吸引眼球。美化栏的7个功能包括竖线布局设计、横线布局设计、重复网格、图形大小和位置设置、响应式调整大小、文字美化以及...