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

智能文档处理黑科技,拥抱更高效的数字世界

目录

  • 0 写在前面
  • 1 为何要关注智慧文档?
  • 2 图像弯曲矫正
  • 3 手写板反光擦除
  • 4 版面元素检测
  • 5 文档篡改检测
  • 总结

0 写在前面

近期,中国图象图形学学会文档图像分析与识别专业委员会与上海合合信息科技有限公司联合打造了《文档图像智能分析与处理》高峰论坛。论坛特别邀请了来自中科院自动化研究所、北京大学、中科大的学术专家与华为等知名企业的研究者们,围绕文档图像处理及OCR领域的前沿技术展开“头脑风暴”,共同交流文档图像分析与处理的前沿学术进展、在典型行业的规模化应用情况,并探讨未来技术及产业发展趋势。

在这里插入图片描述

很荣幸听了这次论坛,使我对文档智能识别技术有了更加深入的了解,也让我认识到了其中涵盖的技术在实际应用中的巨大潜力和挑战

1 为何要关注智慧文档?

随着信息技术的发展和应用场景的不断扩大,人们需要处理和利用大量的文档信息。而传统的手动处理方法效率低下,无法满足现代生活和工作的需求。文档图像智能分析与处理就是一个重要且极具挑战性的研究问题,智能文档识别技术基于人工智能和机器学习等技术,可以自动识别文档中的各种信息,如文字、图像、表格、条码等,然后将其分类、归档、摘要、提取等处理。

文档图像智能分析与处理技术被广泛应用在人们生活的方方面面,比如银行票据的自动分析处理、快递运单的自动识别、教科书的分析与识别、古籍文稿的分析与理解、数字档案、数字图书馆等等,极大地提高了信息的检索、处理、传播速率。总之,文档图像分析与识别技术的出现和发展极大地方便了人们的生活,也极大地促进了我们的社会向智能化、数字化、信息化发展。

在这里插入图片描述

文档图像智能分析与处理的难点在于文档的多样性和复杂性:文档类型和格式繁多,包括报告、合同、发票、证明、证件等等。不同类型的文档有不同的格式和布局,难以用统一的方法处理。而且智能文档处理受到图像质量、文字字体、文字大小、文字颜色等噪声因素的影响,容易出现误识别。此外,还有图像质量不一、文档获取繁琐等诸多问题。

针对这些问题及其背后的技术,合合信息的丁凯博士进行了深入的探讨和分析,相信对这个领域感兴趣的同学一定有所收获!

在这里插入图片描述

2 图像弯曲矫正

现代神经科学表明,哺乳动物大脑的初级视觉皮层的主要工作就是进行图像的字典表示,因为视觉是人类最重要的感觉——据不完全统计,至少80%以上的外界信息由视觉获得。然而,计算机获取图像的过程相当于用二维平面对三维客观世界进行降维表示,其中降低的维度称为深度,就像我们无法理解四维、五维等高维空间意义,二维平面图像因为维度丢失,导致图像处理的困难。

因为相机硬件不符合理论上透视相机模型针孔无限小的假设,所以真实图像会产生明显的径向失真——场景中的线条在图像中显示为曲线。径向畸变(Radial Distortion)有两种类型:筒体畸变(Barrel Distortion)与枕形失真(Pincushion Distortion)。此外由于相机组装过程中,透镜不能和成像面严格平行,会引入切向畸变(Tangential Distortion),再加上视觉文档图像的拍摄视角一般不垂直于文档平面,产生文档图像的变形和扭曲。例如比较厚重的书籍在展开后其书脊两侧文字区会出现向内弯曲的情况。由此可见,扭曲文档的形变情况要比平面文档要复杂,对其分析和矫正的难度也比平面文档图像要高。

在这里插入图片描述

在高峰论坛上,合合信息介绍了几种技术路线:

  • 基于文本行线拟合和坐标变换方法(2003~2015)
  • 基于文本行线坐标变换的优化方法(2015~2019)
  • 基于偏移场学习的方法(2019~2022)

对于基本拟合、变换或优化等传统方法,存在一些缺陷,例如:在扭曲比较严重的文本区域还可能会定位错误、在复杂的版面或包含有图像的文档中识别精度下降等。

在这里插入图片描述

近年来,合合信息采用的基于偏移场的学习方法大大改善了上述缺陷。那么什么是偏移场呢?广义来说,图像的灰度不均匀性通常称为偏移场。灰度不均匀性的存在会影响图像后续的分析应用,许多图像处理方法都是建立在图像是均匀的基础之上的,这已然成为智能文档处理中的关键环节。

国内外学者对偏移场弯曲矫正也展开了大量的研究。Guillemaud等人提出了参数化的EM算法主要是使用一组多项式基函数的线性组合来模拟偏移场,用以保证偏移场的光滑性。Pham等人提出了RFCM(Robust Fuzzy C-mean)算法,将对偏移场的估计值引入到模糊 C 均值聚类算法(FCM) 模型中,可以对存在偏移场的图像进行聚类分割,随之而来的是繁琐的计算。由此,Ahmed 等人提出了BCFCM算法,可以兼顾对偏移场的矫正和噪声的抑制,但是该算法受图像轮廓不同的影响较大,使得估计出的偏移场不平滑,同时该算法对图像中零梯度问题处理效果很差。Likar等人在偏移场矫正过程中引入了最小信息熵方法,得到了不错的偏移场矫正效果,但是该方法却不能很好的解决寻找曲面最优解的问题。基于此,Salvado等人提出了局部熵最小化策略LEM 取得了较好的改进结果,但是LEM算法对初始化参数的要求较高。

合合信息采用的则是一种端到端结构的偏移场矫正方法,方法主要分为两个阶段:首先使用U-Net架构对输入图像进行分割,获得文本区域的掩模;接着将掩模输入到另一个U-Net网络中,该网络使用自注意力机制(self-attention)残差连接(residual connections)对文档图像进行矫正。

在第一阶段,U-Net网络首先将输入图像进行编码,然后将编码的特征图像进行解码,生成相同大小的输出掩模。在该过程中,U-Net通过跳跃连接(skip connections)和上采样操作保留输入图像的高层次特征,从而获得更加准确的掩模。

在第二阶段,使用了另一个U-Net网络对输入图像进行矫正。该网络首先对输入图像进行特征提取,然后通过自注意力机制加强了特征图像中的相关性,从而更好地捕获了文档图像的全局和局部信息。接着,网络使用残差连接对输入特征和输出特征进行合并,从而得到矫正后的文档图像。

合合信息采用的技术相比于其他方法,能够更好地处理文档图像中的扭曲和旋转等问题,且实现了很好的商业化效果。

3 手写板反光擦除

随着各式各样的数码产品与数字仪器的快速普及,数字图像已经成人们生活
中所接触的最重要的信息载体之一。但是,图像的质量受到各种各样的外部因素的影响,例如反光干扰。用户通常希望通过消除图像中的反射来提取出清晰的背景图像,因此将反射图像和背景图像进行分离的图像去反光任务是计算机视觉领域的活跃研究方向。

图像去反光问题是不适定的,导致基于先验的方法去反光效果非常糟糕。普遍的基于先验的方法或多或少存在这样的问题,在面对实际中的反光图像时,泛化效果比较差。最近,深度卷积网络 (CNN) 在诸如图像识别、图像生成等计算机视觉任务取得了巨大的成功。同样的,在图像去任务上,深度卷积网络的强大表征能力同样表现出了不错的效果。合合信息正是采用基于学习的算法实现手写板反光擦除。

具体来说,这个算法的原理是使用背景提取网络和文字提取网络来分离原始图像中的反光区域和文字区域,然后再将这些区域进行重组以实现图像去反光的效果。如下图所示

在这里插入图片描述

原图像首先使用背景提取网络来检测图像中的背景区域。这可以通过对图像进行像素级别的分割来实现,其中像素被分类为属于背景或前景。在这个过程中,反光区域通常会被识别为前景区域。在训练时,背景提取网络会使用一组标注好的图像作为训练集,通过反向传播算法来更新网络中的权重参数,从而最小化损失函数。在测试时,网络会将输入图像作为网络的输入,经过前向传播计算得到每个像素点属于背景或前景的概率,然后根据概率阈值进行二值化处理,从而得到图像的分割结果。

接下来,算法使用文字提取网络来检测图像中的文字区域。这可以通过使用一些先进的文字识别技术,如OCR来实现。在这个过程中,文字区域通常会被准确地识别出来,并被排除在反光区域之外。最后,算法将背景区域和非文字区域重组成一张新的图像,从而去除反光效果。这个过程通常涉及到一些图像处理技术,如图像融合和修补,以确保新图像的视觉效果与原始图像相似。

真实样例的效果如下,可以看出反光擦除的效果很明显

在这里插入图片描述

4 版面元素检测

文档版面分析即对文档图像按照不同的语义功能及区域类别进行分割和识别,分割出文本区、表格区、公式区、图形区等区域,并判断各区域所属的类别。区域分类是版面分析中的一个重要组成部分,它可以通过机器学习或深度学习的方法来识别出相应的特征区域。例如Bukhari通过对连通域进行分析,提取出一些简单的特征,再根据这些简单的特征产生具有更好表达能力的特征向量,最后由多层感知机将连通域分类,实现对复杂文档不同区域的分类。Konya和Paaß 采取最小生成树的方法,通过大量的文档来提取特征并构造出相应的特征向量,来对分类器进行训练,以完成文档版面分析任务。

在这里插入图片描述

版面元素检测也可以理解为一个图像语义分割问题。目前主流的语义分割方法是采用特征图先缩小后恢复的方法,如 U-Net、DeconvNet等语义分割网络先通过对图像的卷积和池化操作得到低分辨率的特征图,再通过上采样或反卷积将特征图恢复到高分辨率。但是这种方法存在一个缺点就是图像从高分辨率到低分辨率的过程中会损失信息,为了解决这个问题,2019年提出的HRNet(High Resolution Network)可以使图像在一个分支上始终保持高分辨率的同时,并行地对特征图进行下采样产生低分辨特征图,各个分辨
率分别一个分支,然后各个分支不同分辨率特征图之间不断地进行特征融合来产生强大的高分辨率表示,从而使最终得到的特征图具有丰富的上下文信息,进一步提高了网络的分割准确率。

目前,合合信息提供了关于版面检测、还原的系统级解决方案:涉及文字检测识别,版面元素检测识别,图层分离,排版布局等一系列深度学习模型,并需要通过合理的方式糅合各个模块,搭配文档渲染,最终生成可供用户编辑修改的Word/Excel文档,具有非常巨大的应用价值。

在这里插入图片描述

5 文档篡改检测

篡改文本检测(TTD,tampered text detection)作为多媒体信息安全领域的一个新兴研究方向,是指通过对文本图像中纹理特征的分析,捕捉真实文本和篡改文本之间的纹理差异性,以确定文本图像中文字区域的真伪性。常见的应用场景有:谣言检测流水、合同造假识别、欺诈图像识别、学历造假检测、保单PS检测等。

篡改文本检测任务有两个主要挑战。

  • 局部纹理差异性捕捉困难。篡改文本与真实文本仅存在局部纹理差异;
  • 真实和篡改文本检测精度平衡困难。

相较传统的文本检测任务,篡改文本检测任务需要进一步区分篡改和真实文本。由于真实和篡改文本分类难度不一致,训练过程中网络无法平衡两类的学习过程,导致在测试过程中两类检测精度差异较大。上述挑战极大地限制了篡改文本检测方法的性能。因此,如何准确地捕捉局部纹理差异性,同时平衡篡改和真实类别学习难度,是目前篡改文本检测研究的重要方向。

合合信息采用的是现在大火的Transformer结构。Transformer又是什么呢?它是一种用于自然语言处理、计算机视觉或其他序列到序列(sequence-to-sequence)任务的神经网络架构。

Transformer基于注意力机制(Attention Mechanism)构建,其核心思想是在序列中进行全局信息的交互和捕捉,而不是像以往的循环神经网络(RNN)一样在序列中逐个位置处理信息。Transformer通过多个自注意力层(Self-Attention Layer)进行信息的交互和表示,而每个自注意力层包含了注意力机制的三个部分:查询(query)、键(key)和值(value)。现在流行的GPT(Generative Pre-trained Transformer)系列模型正是一种基于Transformer的语言模型。

在这里插入图片描述

图源网络,侵删

具体来说,对于一个输入序列,Transformer将其转换为多个词向量(word embeddings),然后通过自注意力层进行特征提取。在自注意力层中,查询向量通过与所有键向量的相似度计算来计算注意力分数,这些分数用于加权求和值向量,最终得到每个位置的输出向量。然后,这些输出向量被馈送到下一个自注意力层或全连接层进行后续处理。

相比于传统的序列模型,Transformer的优点在于可以并行处理输入序列,从而加速模型的训练和推断。此外,Transformer还能够有效地处理长序列,因为它可以在不受时间限制的情况下一次性处理整个序列,而不需要像RNN那样进行逐个位置的处理。

总结

介绍了这么多黑科技之后,想必大家对智能文档处理领域有了一定了解。合合信息的智能文字识别应用开发宗旨就是为了让世界更高效!合合信息深耕人工智能17年,全球累计用户下载量23亿,享有国内外发明专利113项,在顶级AI竞赛获得15项世界冠军,提供行业智能解决方案30个。合合信息提供了深受全球用户喜爱的效率工具,例如C端的名片全能王、扫描全能王等。相信合合信息在模式识别、深度学习、图像处理、自然语言处理等领域的深耕厚积薄发,用技术方案惠及更多的人。

相关文章:

智能文档处理黑科技,拥抱更高效的数字世界

目录 0 写在前面1 为何要关注智慧文档?2 图像弯曲矫正3 手写板反光擦除4 版面元素检测5 文档篡改检测总结 0 写在前面 近期,中国图象图形学学会文档图像分析与识别专业委员会与上海合合信息科技有限公司联合打造了《文档图像智能分析与处理》高峰论坛。…...

vue ts写法

Vue.js 和 TypeScript 结合使用可以让你的项目更加健壮和易于维护。在 Vue 3 中,你可以使用 Vue.js 的 Composition API 和 TypeScript 一起使用。以下是一个简单的 Vue.js 和 TypeScript 结合使用的例子: 首先,确保你已经安装了 Vue.js 和 T…...

Unity中的PostProcessBuild:深入解析与实用案例

Unity中的PostProcessBuild:深入解析与实用案例 在Unity游戏开发中,我们经常需要在构建完成后对生成的应用程序进行一些额外的处理。这时,我们可以使用Unity提供的PostProcessBuild功能。本文将详细介绍Unity中的PostProcessBuild方法&#…...

SimpleCG绘图函数(4)--绘制圆

在前一篇教程我们利用绘制矩形功能绘制了一个城市,接下来我们讲解另外一个同样重要且基础的图形----圆形。并一起看看该图形能绘制哪些应用呢。 绘制圆形相关函数如下: //圆心坐标(nXCenter,nYCenter),半径为nRatio//绘无填充制圆 void circle( int nXCenter, int …...

打包和优化

私人博客 许小墨のBlog —— 菜鸡博客直通车 系列文章完整版,配图更多,CSDN博文图片需要手动上传,因此文章配图较少,看不懂的可以去菜鸡博客参考一下配图! 系列文章目录 前端系列文章——传送门 后端系列文章——传送…...

linuxOPS基础_Linux文件管理

Linux下文件命名规则 可以使用哪些字符&#xff1f; 理论上除了字符“/”之外&#xff0c;所有的字符都可以使用&#xff0c;但是要注意&#xff0c;在目录名或文件名中&#xff0c;不建议使用某些特殊字符&#xff0c;例如&#xff0c; <、>、&#xff1f;、* 等&…...

C语言——数据在内存中的存储(上)

数据在内存中的存储 1. 数据类型的介绍 之前已经介绍过C语言中的基本数据类型了&#xff0c;主要有&#xff1a; char //字符数据类型short //短整型int //整形long //长整型long long //更长的整形float //单精度浮点数double //双精度浮点数 注意&#xff1a;C语言中是是没…...

LinkedIn 国际版怎么在国内登录?怎么使用领英国际版?

自从去年底国内用户使用LinkedIn就只能跳转到领英职场&#xff0c;而且就只是一个简单的招聘求职平台&#xff0c;没办法搜索添加国外客户&#xff0c;开发客户资源的效率大打折扣。但是国际版领英就不受影响&#xff0c;东哥今天就给各位做外贸的朋友分享如何使用国际版领英。…...

QThread Class

QThread QThread类枚举类型成员函数可重写函数公共槽信号静态成员函数保护函数静态保护函数QThread简单案例1QThread简单案例2 QThread类 标准头文件&#xff1a;#include <QThread> qmake: QT core 继承(父): QObject枚举类型 线程的优先级 enum Priority { IdlePri…...

C语言中的运算符及其优先级详解

引言&#xff1a; 在C语言中&#xff0c;运算符是用于进行各种数学和逻辑运算的符号。了解不同类型的运算符及其优先级对于正确理解和编写C语言代码至关重要。本文将详细介绍C语言中常用的运算符&#xff0c;包括算术运算符、赋值运算符、比较运算符、逻辑运算符等&#xff0c;…...

【C语言】语言篇——数组和字符串

C站的小伙伴们&#xff0c;大家好呀&#x1f61d;&#x1f61d;&#xff01;我最近在阅读学习刘汝佳老师的《算法竞赛入门经典》&#xff0c;今天将整理本书的第三章——数组和字符串的一些习题&#xff0c;本章习题较多&#xff0c;下选取部分习题进行练习总结&#xff0c;在这…...

Js写的二级联动和三级联动

二级联动的实现 第一步 在HTML页面创建两个 select 下拉列表元素&#xff0c;并设置id为 ‘province’和id ‘city’ <!--省份--> <select id"province" onchange"getCity()"></select><!--城市--> <select id"city&qu…...

一文带你了解UI自动化测试框架

PythonSeleniumUnittestDdtHTMLReport分布式数据驱动自动化测试框架结构 1、Business&#xff1a;公共业务模块&#xff0c;如登录模块&#xff0c;可以把登录模块进行封装供调用 ------login_business.py from Page_Object.Common_Page.login_page import Login_Page from H…...

【Linux】守护进程

守护进程&#xff08;Daemon&#xff09;是一种在后台运行的特殊进程。它通常在操作系统启动时启动&#xff0c;并一直运行直至系统关闭。它不与任何终端关联&#xff0c;并且没有标准输入、输出和错误流。它的主要作用是在系统启动后执行一些特定的任务或者提供某些服务&#…...

Vue中组件和插件有什么区别?

Vue中组件和插件有什么区别&#xff1f; 组件是什么 组件就是把图形、非图形的各种逻辑均抽象为一个统一的概念&#xff08;组件&#xff09;来实现开发的模式&#xff0c;在Vue中每一个.vue文件都可以视为一个组件 组件的优势 降低整个系统的耦合度&#xff0c;在保持接口…...

第五章 图像处理

文章目录 前言一、图像金字塔1.高斯金字塔2.拉普拉斯金字塔 二、图像轮廓1. 轮廓提取2. 轮廓绘制3. 轮廓特征4. 轮廓近似5. 轮廓标记 三、模板匹配四、直方图1. 对比度2. 绘制直方图3. 均衡化3.1 理论3.2 代码 4. CLAHE 五、图像傅里叶变换5.1 正弦平面波5.2 二维傅里叶变换5.3…...

算法8.从暴力递归到动态规划1

算法|8.从暴力递归到动态规划1 目前感觉&#xff0c;背包问题和货币数组问题本质相同&#xff0c;货币的与dp相关的三种代码写完了&#xff0c;快复习不完了&#xff0c;背包暂时先不写了&#xff0c;回头再写&#xff0c;补充&#xff0c;再总结&#xff0c;结合那个C大神的文…...

8-JDBC 编程

目录 1.数据库编程的必备条件 PS&#xff1a;程序是怎么操作数据库的&#xff1f; 2.什么是JDBC&#xff1f; 2.1.JDBC定义 2.2.JDBC工作原理 3.JDBC使用 3.1.创建项目并添加MySQL驱动包 3.2.使用代码操作数据库 3.2.1.获得数据源 3.2.2.获得连接 3.2.3.获得执行器 …...

零基础如何学习 Web 安全?

Web安全不仅是互联网的核心&#xff0c;而且还是云计算和移动互联网的最佳载体。对于信息安全从业者而言&#xff0c;Web安全是一个非常重要的研究课题之一。 Web应用是指采用B/S架构、通过HTTP/HTTPS协议提供服务的统称。随着互联网的广泛使用&#xff0c;社交网络、聊天工具…...

【简单实用框架】【AddressablesMgr】【可移植】

☀️博客主页&#xff1a;CSDN博客主页&#x1f4a8;本文由 萌萌的小木屋 原创&#xff0c;首发于 CSDN&#x1f4a2;&#x1f525;学习专栏推荐&#xff1a;面试汇总❗️游戏框架专栏推荐&#xff1a;游戏实用框架专栏⛅️点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd;&#…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...

MySQL 主从同步异常处理

阅读原文&#xff1a;https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主&#xff0c;遇到的这个错误&#xff1a; Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一&#xff0c;通常表示&#xff…...

抽象类和接口(全)

一、抽象类 1.概念&#xff1a;如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象&#xff0c;这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法&#xff0c;包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中&#xff0c;⼀个类如果被 abs…...