【读点论文】Orientation-Independent Chinese Text Recognition in Scene Images,竖向文本检测,中文场景中常见的案例

Orientation-Independent Chinese Text Recognition in Scene Images

Abstract

  • 场景文本识别因其广泛的应用而受到广泛的关注。以往的工作更多的是通过引入语言模型或其他辅助网络来处理复杂背景的拉丁文本图像的识别问题。与拉丁文本不同,许多中文垂直文本存在于自然场景中,这给目前最先进的STR方法带来了困难。本文首次尝试通过分离文本图像的内容和方向信息来提取与方向无关的视觉特征,从而对自然场景中的水平文本和垂直文本进行鲁棒性识别。具体来说,我们引入了一个字符图像重建网络(CIRN)来恢复相应的打印字符图像,并解除了内容和方向信息的纠缠。我们在一个场景数据集上进行了中文文本识别的基准测试,结果表明,该方法确实可以通过去除内容和方向信息的纠缠来提高性能。为了进一步验证我们方法的有效性,我们还收集了一个垂直中文文本识别(VCTR)数据集。实验结果表明,在基线模型中引入CIRN后,该方法的VCTR提高了45.63%。
  • 复旦大学李斌老师团队成果列表:Bin Li - Fudan University (aimpressionist.github.io)

Introduction

  • 场景文本识别(STR)由于其广泛的应用,如交通标志识别和文本图像检索,在计算机视觉领域受到了广泛的关注。它旨在将自然图像中的文本转录成数字字符序列。从自然图像中读取文本面临许多困难,例如文本失真、部分遮挡和复杂的背景。与拉丁文本识别不同,中文文本识别面临着更多的挑战。例如常见的垂直文本和复杂的顺序模式(Benchmarking chinese text recognition: Datasets, baselines, and an empirical study)。这些独特的特征使得中文文本识别成为一项具有挑战性的任务。
  • 与拉丁文本相比,由于自然场景中常用的传统对联或招牌,中文文本更容易以垂直方向出现(如下图(b)所示)。相反,由于固有的阅读习惯不同,拉丁文垂直文本很少(如下图(a)所示)。大多数早期方法是专门为拉丁文本识别设计的,并且仅限于水平文本。因此,他们很难处理各种形状的文本实例,如弯曲文本和垂直文本,导致严重影响识别场景图像中的中文文本。
    • 在这里插入图片描述

    • 在街景图像中,大多数英文文本是水平的;相比之下,垂直的中文文本也很常见。

  • 为了处理弯曲文本,一些方法引入了一种纠偏网络来矫正不规则的文本实例或依赖2D注意机制来定位每个字符。此外,研究人员试图引入语言知识和语料库来提高弯曲文本的性能[Read like humans: Autonomous, bidirectional and iterative language modeling for scene text recognition;Towards accurate scene text recognition with semantic reasoning networks]。然而,这些方法对于垂直文本识别仍然效率低下,因为垂直文本的布局与水平或弯曲文本完全不同
  • 一些汉字识别方法试图提高旋转字符模型的鲁棒性,但它们不能直接应用于文本行识别。总的来说,现有的场景文本识别方法在处理垂直中文文本方面仍然存在困难。因此,开发一个网络来学习与文本方向无关的视觉特征对于识别垂直中文文本至关重要。
  • 我们观察到,视觉特征不仅包含决定字符预测的内容信息,还包含文本方向信息。因此,本文试图从视觉特征中分离出内容和方向信息,获得与方向无关的特征,以实现垂直中文文本的准确识别。该方法由自定义ResNet编码器、基于Transformer的解码器和字符图像重建网络组成。通过对 ResNet 进行修改,编码器捕获了更多的细节并保留了更多的视觉特征。字符图像重构网络包含内容信息提取器、方向信息提取器和重构模块。内容信息提取器用于从视觉特征中获取内容信息,方向信息提取器用于提取方向信息。我们解耦水平和旋转垂直字符的内容和方向信息,并交换它们的方向信息来重建相应的打印字符图像。最后,我们使用基于转换器的解码器来捕获字符之间的语义依赖关系,以生成最终的预测。
  • 为了对现有最先进的垂直中文文本识别方法的性能进行基准测试,我们从PosterErase收集了一个垂直中文文本识别(VCTR)数据集[Self-supervised text erasing with controllable image synthesis]。实验结果表明,我们的方法在VCTR上大大优于现有的STR模型。此外,我们在通用中文文本识别数据集上取得了更好的结果。我们的方法代码和VCTR数据集可以在GitHub[github.com]上获得。本文的贡献可以概括为以下几点:
    • 由于垂直文本是影响中文场景文本识别的关键问题,我们收集了垂直中文文本识别(VCTR)数据集来测试垂直中文文本识别的性能。
    • 我们首次尝试用字符图像重建网络从视觉特征中分离出内容和方向信息,消除了文本方向的干扰。
    • 该方法在垂直中文文本识别上显著优于现有方法,并在中文场景文本识别数据集上取得了最新的结果。

Related Work

  • 场景文本识别(STR)一直是计算机视觉领域一个长期研究的课题。该领域的早期工作侧重于利用低级特征,如定向梯度描述符的直方图,连接分量等。随着深度学习的快速发展,STR研究在过去几年中取得了重大进展。根据它们的语言类别,我们将它们分为两类:拉丁文本识别和汉语文本识别。

Latin Text Recognition

  • 拉丁场景文本识别可分为规则文本识别和不规则文本识别两大类。基于CTC损失的序列到序列模型和注意力机制在常规文本识别方面取得了很大进展。然而,这些方法很难处理弯曲或旋转的文本。对于不规则文本,以前的方法倾向于将空间转换模块集成到基于注意力的框架中,以将弯曲的文本图像纠正为水平形式,但预定义的转换空间限制了其泛化能力。基于分割的方法首先检测字符,然后将字符整合到文本预测中。最近提出的一些方法尝试使用语言规则来辅助识别过程,在不规则文本识别上表现出很强的性能。例如,ABINet和VisionLAN 开发了一个将语言信息集成到文本识别中的特定模块。上述方法都是专门为拉丁文本识别而设计的,面对中文文本识别时,由于字母较大,且常见垂直文本,效果不佳。

Chinese Text Recognition

  • 由于汉字内部结构复杂,一些方法[Chinese character recognition with radicalstructured stroke trees;Chinese character recognition with augmented character profile matching]提出了汉字识别方法。DenseRAN 将汉字视为二维结构和部首的组合。STN-DenseRAN 在DenseRAN的基础上,进一步采用整流块对扭曲的字符图像进行处理。HDE 根据汉字的根级构成为每个汉字设计了唯一的嵌入向量。在[Zero-shot chinese character recognition with strokelevel decomposition]中,汉字被分解为五笔的组合,并通过基于匹配的策略将预测的笔画序列转换为特定的汉字。最近,一些著作[Privacy-preserving collaborative chinese text recognition with federated learning]重点研究中文文本识别(CTR)。例如,[Benchmarking chinese text recognition: Datasets, baselines, and an empirical study]的作者提出了CTR的基准,并引入偏旁部首级监督来提高文本识别模型在CTR上的性能。SVTR 提出了一种基于Transformer的框架,利用全局混合和局部混合分别感知字符间和字符内模式。该算法在中文场景数据集上表现良好。然而,这些方法主要集中在汉字或水平文本的识别上,而忽略了常见的垂直文本

Methodology

  • 在本节中,我们首先回顾场景文本识别中常用的编码器-解码器框架。然后,通过编码器对提取的视觉特征所包含的信息进行分析。最后,我们介绍了所提出的体系结构中每个模块的详细信息。

Generic Framework

  • 在过去的几年里,研究人员倾向于采用编码器-解码器框架来解决文本识别任务。通常,采用基于resnet的主干作为编码器提取视觉特征 F。随后,将特征 F 馈送到设计的解码器中,例如基于注意力的解码器和基于 Transformer 的解码器。这两种解码器都由两个模块组成:注意模块和预测模块。在第 t 个时间步,注意模块计算瞥见向量gt如下:

    • g t = ∑ i j α i j t f i j g_t=\sum_{ij}\alpha^t_{ij}f_{ij} gt=ijαijtfij

    • 其中 f i j f_{ij} fij 表示 F 在 (i, j) 处的特征向量, α i j t α^ t_{ij} αijt表示 f i j f_{ij} fij 在第 t 个时间步长的注意权值。最后,将 glimpse 向量gt作为预测模块的输入,以预测相应的字符或结束令牌⟨EOS⟩:

    • y t = s o f t m a x ( W t + b ) y_t=softmax(W_t+b) yt=softmax(Wt+b)

    • 其中,W和b分别表示预测模块的线性变换和偏置。

Visual Features Dissection

  • 现有的方法大多是针对拉丁文本识别设计的,很少考虑垂直文本识别问题。相比之下,垂直的中文文本在自然场景中较为常见,如上图所示。为了同时识别垂直和水平文本,一些研究人员提出将高度大于宽度的图像逆时针旋转90度,然后将其输入识别模型。实验结果表明,该策略确实可以提高垂直文本图像的性能。然而,这种策略会在一定程度上使识别器感到困惑,因为识别器被迫将完全不同的视觉特征(即水平和旋转垂直字符的视觉特征)分类为同一字符。通过实验,我们观察到当训练集中包含一小部分垂直文本图像时,在训练阶段使用该策略会使识别器的性能下降。
  • 基于以上观察,我们推测提取的视觉特征不仅包含内容信息,还包含字符的方向信息。为了验证关于方向信息的猜想,我们计算了两个方向相同的不同文本图像的视觉特征之间的相似度So和两个方向不同但字符相同的文本图像之间的相似度Sc。我们观察到So趋向于大于Sc,这意味着视觉特征确实包含了方向信息。因此,在本文中,我们尝试开发一种字符图像重建网络,将与方向无关的内容信息从视觉特征中分离出来,从而使识别器对垂直文本图像具有更强的鲁棒性

Proposed Method

  • 概述。如上所述,我们观察到提取的视觉特征不仅包含内容信息,这决定了字符的预测,还包含方向信息,这对最终的预测是无用的。因此,我们试图从提取的视觉特征中分离出内容和方向信息。如下图所示,我们以TransOCR 为基准模型,该模型由基于resnet的编码器和基于 Transformer 的解码器组成。在本文中,我们还开发了一个字符图像重建网络(CIRN)。下面,我们将详细介绍我们的方法。

    • 在这里插入图片描述

    • 所提出方法的总体架构。它由一个基于 resnet 的编码器、一个基于 Transformer 的解码器和一个字符图像重建网络组成。水平和垂直文本图像的数据流分别用橙色线和红色线表示。蓝框表示字符图像重构网络;灰框表示基于 Transformer 的解码器。

  • ResNet-based Encoder. 给定输入的文本图像X,使用基于resnet的编码器提取其视觉特征 $F∈\R^{\frac H 8 × \frac W 8 ×C} $ (H和W分别表示输入图像X的高度和宽度)。我们采用ResNet34作为编码器的主体,并对原有ResNet-34中的一些层进行了修改。首先,我们将第一个卷积层的7 × 7核替换为3 × 3核,因为较小的核可以捕获更多的局部细节来识别文本图像。此外,我们去掉了最后一个卷积块,减少了编码器中的参数数量,提高了特征提取的效率。最后,我们移除ResNet-34中第三卷积块的最大池化层,为后续解码器保留更多的视觉特征。虽然最大池化层可以使模型在一定程度上具有旋转不变性,但视觉信息的损失大于旋转不变性的收益

  • Transformer-based Decoder. 如上图所示,基于 Transformer 的解码器由三个模块组成:掩码多头注意模块、多头注意模块和前馈模块。掩蔽多头注意模块,以右移的 GT y ^ r \hat y_r y^r作为输入,用于捕获字符之间的语义依赖。然后,多头注意力模块计算提取的视觉特征 F 和 y ^ r \hat y_r y^r 之间的注意力权重A。最后,将加权特征输入到前馈模块中提取更深的特征,通过线性层生成最终的预测 y。

  • Character Image Reconstruction Network. 为了从 F 中分离出内容信息并避免方向信息的干扰,我们提出了一种字符图像重建网络(CIRN)。具体来说,我们首先通过编码器提取的 F 与基于 Transformer 的解码器提取的注意权值 A 之间的位置乘法来获得文本图像中每个字符的视觉特征 F c F_c Fc。然后, F c F_c Fc 输入到CIRN中,解耦其内容和方向信息

  • 该CIRN包含一个内容信息提取器、一个方向信息提取器和一个重构模块。内容信息提取器仅采用 1×1 的卷积层,没有采用其他复杂的结构。方向信息提取器在1×1卷积层之后还采用了一个全局平均池化层来提取方向信息,因为需要从全局角度获取方向信息。在训练批的采样数据中,有水平和垂直的文本图像。假设水平字符a和旋转垂直字符b的方向和内容信息分别表示为Oa、Ob、Ca和Cb,我们交换它们的方向信息来重建相应的打印字符图像。形式上,可以得到如下四种字符表示:

    • 在这里插入图片描述
  • 其中“Fuse”表示我们将方向信息向量连接到内容信息的每个位置。然后,将四种字符表示输入重构模块,生成相应的打印水平字符图像 H 和旋转垂直字符图像 V。具体来说,重构模块由5层反卷积组成,核大小为5,步长为2

  • 损失函数。引入了四个损失函数来监督所提出的方法:

    • 1)文本预测损失 L t L_t Lt 用于监督输入图像中文本的预测,其计算公式为: L t = C E ( y , y ^ ) L_t=CE(y,\hat y) Lt=CE(y,y^); 式中“CE”为交叉熵损失函数; y ^ \hat y y^ 表示预测文本的 GT。
    • 2)方向分类损失 L o L_o Lo 用于监督字符方向的预测,可视为一个二值分类问题,计算如下: L o = C E ( O , O ^ ) L_o=CE(O,\hat O) Lo=CE(O,O^), 式中,O和 O ^ \hat O O^ 分别表示字符的方向预测和相应的 GT。通过比较输入图像的高度和宽度,可以得到 O ^ \hat O O^
    • 3)内容分类损失 L c L_c Lc L o L_o Lo 类似,计算公式为: L c = C E ( C , C ^ ) L_c=CE(C,\hat C) Lc=CE(C,C^), 式中,C表示通过内容信息进行的字符预测, C ^ \hat C C^ 表示相应的 GT。
    • 4)字符图像重建损失 L r L_r Lr 用于约束水平和旋转垂直字符图像的重建,可表示为: L r = M S E ( H , H ^ ) + M S E ( V , V ^ ) L_r = MSE(H, \hat H) + MSE(V, \hat V ) Lr=MSE(H,H^)+MSE(V,V^), 其中, H ^ \hat H H^ V ^ \hat V V^ 分别表示 H 和 V 对应的Simsun字体的打印字符图像。
  • 因此,本文方法的整体损失函数 L 为上述四种损失函数的加权和:

    • L = L t + α L o + β L c + γ L r L = L_t + αL_o + βL_c + γL_r L=Lt+αLo+βLc+γLr

    • 其中α, β和γ是平衡这四个损失函数的超参数。

Experiments

  • 在本节中,我们首先详细介绍 [Benchmarking chinese text recognition: Datasets, baselines, and an empirical study]中采用的场景数据集和收集到的垂直中文文本识别(VCTR)数据集。然后介绍了常用的评价方法和方法的实现细节。最后,我们给出了消融研究和实验结果。

Datasets

  • 场景数据集。场景数据集由 [Chen等人,2021c] 收集,并衍生自六个现有数据集,包括RCTW ,ReCTS ,LSVT ,ArT 和CTW 。该数据集包含509,164个用于训练的样本,63,645个用于验证,63,646个用于测试。下图显示了该数据集的一些示例。
    • 在这里插入图片描述

    • 场景数据集中水平和垂直文本图像的一些例子。

  • VCTR。为了验证我们的方法在处理垂直文本图像方面的有效性,我们从PosterErase 中收集了垂直中文文本识别(VCTR)数据集,该数据集最初是为场景文本擦除任务提出的。PosterErase包含 58114 个训练样本,148个验证样本和 146 个测试样本。我们只从PosterErase的训练集中收集垂直文本图像,因为它的注释包含裁剪文本区域的方向信息。我们通过以下步骤获得VCTR数据集: 1)过滤掉标注为水平的裁剪文本区域,保留剩余的垂直文本区域; 2)删除那些无法识别的文本区域(一些示例如图(b)所示)。3)标注保留的文本区域。最后,我们收集了5,456个样本进行 VCTR,以验证我们方法的有效性。该数据集的一些示例如图(a)所示。
    • 在这里插入图片描述

    • 左边显示了一些VCTR的例子。只有垂直文本为VCTR保留。在收集VCTR过程中删除的一些无法识别的示例(例如,多行和斜体文本)显示在右侧。

Evaluation Methods

  • 我们遵循[Benchmarking chinese text recognition: Datasets, baselines, and an empirical study]使用四个规则来转换预测和标签:1)将全宽字符转换为半宽字符;2)将繁体字转换为简体字;3)将大写字母转换为小写字母;4)去掉所有空格。在对预测和标签进行转换后,采用两个主流指标来评估我们的方法:准确性(Accuracy, ACC)和归一化编辑距离(Normalized Edit Distance, NED)。ACC 的计算方法如下:

    • A C C = 1 N ∑ i = 1 N I ( y i = y ^ i ) ACC=\frac1N\sum_{i=1}^NI(y_i = \hat y_i) ACC=N1i=1NI(yi=y^i)

    • 式中 y i y_i yi y ^ i \hat y_i y^i 分别表示第 i 变换后的预测和标号; N 为文本图像的数量; I(·) 为指示函数。NED的计算方法如下:

    • N E D = 1 − 1 N ∑ i = 1 N E D ( y i , y ^ i ) / m a x l e n ( y i , y ^ i ) NED=1-\frac1N\sum^N_{i=1}ED(y_i ,\hat y_i)/maxlen(y_i,\hat y_i) NED=1N1i=1NED(yi,y^i)/maxlen(yi,y^i)

    • 其中“ED”和“maxlen”分别表示编辑距离和最大序列长度。

Implementation Details

  • 我们的方法是用 Torch 实现的,所有的实验都是在内存为 11GB 的NVIDIA RTX 2080Ti GPU上进行的。采用AdaDelta 优化器训练我们的模型,初始学习率为1.0,超参数ρ和权衰减分别设置为 0.9 和10−4。批量大小设置为64。为了与之前的方法进行公平的比较,输入的文本图像被调整为 32 × 256。对于垂直文本图像,我们按照逆时针旋转90度。但是,与 [Show, attend and read: A simple and strong baseline for irregular text recognition.] 中将高度大于宽度的样本视为垂直样本的规则不同,我们假设高度大于1.5×宽度的样本为垂直文本图像

Ablation Study

  • 为了从视觉特征中分离出内容和方向信息,我们引入了三个额外的损失函数来监督所提出的CIRN。本节我们对这些关键损失函数和旋转策略进行消融研究,实验结果如下表所示。
    • 在这里插入图片描述

    • 本文方法在场景数据集验证集上的消融研究。这些方法的所有训练设置(例如训练数据)都是相同的。“Rotation”列表示在训练阶段是否采用轮换策略。Lc、Lo和Lr分别表示是否使用内容分类损失、方向分类损失和字符图像重建损失进行监督。

  • 所有方法都在场景数据集的训练集上进行训练。通过实验结果,我们观察到引入旋转策略和两种分类损失(Lc和Lo)分别可以实现1.56%和0.42%的改进。当加入字符图像重建损失Lr时,可以较好地解除字符图像的内容和方向信息的纠缠,达到最佳性能

Experimental Results

  • 在接下来的实验中,我们的方法是在[Benchmarking chinese text recognition: Datasets, baselines, and an empirical study]中场景数据集的训练集上进行训练的。在训练阶段,我们在场景数据集的验证集上评估我们的方法的性能,并保留最优模型在测试集上进行测试。对于所有的实验,在基于 Transformer 的解码器中头的数量被设置为 4。我们选择CRNN 、ASTER 、MORAN 、SAR 、SEED 和TransOCR 进行比较。

  • 超参数的选择。在整体损失函数中,采用三个超参数来平衡引入的四个损失函数。我们通过实验来选择合适的超参数。如下表所示,当 α 和 β 设置为1时,我们的方法获得了相对更好的性能。一个可能的原因是,在我们的方法中,内容和方向信息分类容易优化。不同的是,当 γ 为5时,我们的方法获得了最好的性能,这表明字符图像重建对于解除方向和内容信息的纠缠至关重要

    • 在这里插入图片描述

    • 选择合适的超参数的实验结果。所有结果在场景数据集的验证数据集上进行评估。

  • 场景数据集实验。我们只在场景数据集上进行实验,因为该场景中包含更多的垂直文本图像。实验结果如上上表所示,旋转策略可以在一定程度上缓解垂直文本图像的识别,与基线模型相比,精度提高了1.56%。因此,我们的方法在训练和测试阶段也采用了这种策略。

  • 通过对内容和方向信息的分离,我们的方法的准确率比SOTA模型TransOCR高出5.48%,表明了我们的方法在解决中文文本识别问题上的有效性。我们在下图中可视化了场景数据集的一些识别结果。通过可视化,我们观察到所提出的方法在水平和垂直文本上都表现得更好。此外,与以往的方法相比,本文方法对场景图像中的艺术文本具有更强的鲁棒性,这得益于所提出的CIRN隐式地将字符特征与相应的印刷字符图像特征拉近

    • 在这里插入图片描述

    • 场景数据集上识别结果的对比。为方便起见,垂直文本图像逆时针旋转90度。该方法在水平文本和垂直文本上都表现良好。红色的字符被错误地预测了。

  • VCTR实验。为了进一步验证我们的方法在处理垂直文本图像方面的有效性,我们还在提出的VCTR数据集上进行了实验。由于VCTR数据集仅用于测试,我们的模型也在场景数据集上进行训练。实验结果如下表所示。与以往的方法相比,该方法在VCTR数据集上取得了最好的性能。

    • 在这里插入图片描述

    • 在场景数据集和VCTR测试集上的实验结果。ACC/NED分别采用百分制和十进制。

  • 具体来说,我们的方法比SOTA方法高出45%左右。虽然我们的方法没有对类似于VCTR的训练集进行微调,但仍然取得了令人满意的性能。VCTR的部分识别结果如下图所示。

    • 在这里插入图片描述

    • VCTR识别结果的比较。所示的样品逆时针旋转90度。

Discussions

  • 采用复杂结构进行内容信息提取。在内容信息提取器中,我们采用了简单的 1 × 1 卷积层,而不是更复杂的结构。在本模块中,我们还尝试使用多层 Transformer 编码器将内容信息从视觉特征中分离出来。通过下表所示的实验结果,我们观察到当内容信息提取器中采用更复杂的结构时,我们的方法的性能明显下降,这可能是由于两个原因:1) Transformer 编码器包含的参数更多,而垂直文本图像所占的份额较小。因此,更为复杂的内容信息提取器结构很难与有限的垂直文本样本的训练收敛。2)在内容分类损失 Lc 和字符图像重建损失 Lr 的监督下,可以很容易地从提取的视觉特征中分离出内容信息。

    • 在这里插入图片描述

    • 内容信息提取器中不同结构的比较。“2x”表示两个 Transformer 层堆叠作为内容信息提取器的结构。

  • 重建整个文本图像是不是更好? 在本文中,我们提出重构不同方向的字符图像,从而迫使内容信息提取器产生与方向无关的视觉特征。此外,我们试图重建整个文本图像,以完成解耦。然而,通过实验,我们观察到重建损失不能平稳下降,打印文本图像不能很好地重建。一个可能的原因是重建网络无法意识到每个字符的位置。因此,我们选择重建输入文本图像中每个字符的打印图像。

  • 失败案例。一些失败案例如下图所示。对于高宽比较大的垂直文本图像,我们的方法仍然具有挑战性。此外,我们的方法在处理含有 few-shot 或 zero-shot 字符的文本图像方面也存在一些困难。最后,由于我们只考虑了垂直和水平方向,所以我们的方法在倾斜文本上的性能可以进一步提高。

    • 在这里插入图片描述

    • 我们方法的失败案例。文本图像中的一些 zero-shot 或 few-shot 字符仍然给我们的方法带来困难。

Conclusion

  • 本文提出通过对中文文本的内容和方向信息进行分离,提取与方向无关的中文文本识别特征。具体来说,我们开发了一个字符图像重建网络,用两种解耦信息生成相应的打印字符图像。该方法在中文文本识别的场景数据集上优于以往的方法。为了测试现有方法在垂直文本图像上的性能,我们收集了一个垂直中文文本识别数据集。与现有的方法相比,该方法提高了45%左右。
  • 12
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羞儿

写作是兴趣,打赏看心情

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值