一种基于机器识别的word文档转换方法、装置及存储介质转让专利

申请号 : CN202310639865.1

文献号 : CN116340263B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈德勇李元海

申请人 : 北京无忧创想信息技术有限公司

摘要 :

本发明公开了一种基于机器识别的word文档转换方法、装置及存储介质,本发明在进行文档转换时,对格式转换后的文档进行了样式修正处理,如此,可保留原word文档中的文本样式;同时,利用机器识别技术,来对样式修正后的各个文本段落进行代码种类识别,以基于各个文本段落的代码种类,来进行编程语言标识;由此,本发明在文档转换时,可保留原文本中的文本样式,且能够准确识别出文档中的代码块文本,以及所属的编程语言,由此,使得用户不用重复的复制粘贴、重新编写代码以及重新设置文本样式,可实现各类技术文章的快速发布,适用于在文档转换领域的广泛应用与推广。

权利要求 :

1.一种基于机器识别的word文档转换方法,其特征在于,包括:

获取目标word文档,并将所述目标word文档转换为html文档;

对所述html文档进行样式修正处理,得到样式修正后的html文档;

对所述样式修正后的html文档内的字符串进行段落划分处理,得到预转换文档;

从所述预转换文档中的各个文本段落中,筛选出代码文本段落,并将所述代码文本段落输入至代码识别模型中进行代码种类识别处理,得到所述代码文本段落对应的代码种类;

基于所述代码文本段落对应的代码种类,对所述预转换文档中的代码文本段落进行编程语言标识处理,以在编程语言标识处理完成后,得到所述目标word文档对应的html转换文档;

对所述html文档进行样式修正处理,得到样式修正后的html文档,包括:对所述html文档进行标签过滤处理,以滤除所述html文档中的无用标签,得到预处理后的html文档;

对所述预处理后的html文档中的各个标签进行标签替换处理,以在标签替换处理后,得到标签替换文档,其中,所述标签替换文档中各个标签的名称以及属性,与所述目标word文档中各个标签的名称以及属性相同;

对所述标签替换文档中的各个第一指定标签进行从属归类处理,以将所述标签替换文档中具有同一从属关系的第一指定标签构建为有序列表或无序列表,并在从属归类处理后,得到标签从属归类文档;

从所述标签从属归类文档中筛选出第二指定标签,并将所述第二指定标签对应的标签内容上传至云管理平台,以得到所述第二指定标签对应标签内容的访问地址,其中,所述第二指定标签包括图片标签;

将所述第二指定标签中的SRC内容替换为所述第二指定标签对应标签内容的访问地址,以在SRC内容替换完毕后,得到所述样式修正后的html文档。

2.根据权利要求1所述的方法,其特征在于,对所述预处理后的html文档中的各个标签进行标签替换处理,以在标签替换处理后,得到标签替换文档,包括:从所述预处理后的html文档中筛选出第一目标标签和第二目标标签,其中,所述第一目标标签包括p标签,所述第二目标标签包括font标签、ins标签、i标签以及del标签;

将所述第一目标标签的name属性内容更改为第一标签名;以及

将所述第二目标标签的name属性内容更改为第二标签名,并在所述第二目标标签中添加标签标识字符,以在标签标识字符添加完毕后,得到所述标签替换文档。

3.根据权利要求1所述的方法,其特征在于,对所述标签替换文档中的各个第一指定标签进行从属归类处理,以将所述标签替换文档中具有同一从属关系的第一指定标签构建为有序列表或无序列表,并在从属归类处理后,得到标签从属归类文档,包括:对于所述标签替换文档中的各个第一指定标签,获取各个第一指定标签的样式属性,其中,任一第一指定标签的样式属性包括该任一第一指定标签的所属序列、所属序列的层级以及所属序列的层级的顺序;

基于各个第一指定标签的样式属性,对各个第一指定标签进行从属划分处理,以将属于同一序列以及同一层级的第一指定标签划分为一类,得到若干标签类;

对于若干标签类中的任一标签类,按照所述任一标签类中各个第一指定标签对应所属序列的层级的顺序,对所述任一标签类中的各个第一指定标签进行排序,得到排序标签类,并在将所有标签类中的各个标签均排序完毕后,得到若干排序标签类;

对各个排序标签类进行样式识别,得到各个排序标签类所属的列表样式,其中,所述列表样式包括有序列表和无序列表;

基于各个排序标签类所属的列表样式,为各个排序标签类添加样式标识标签,以在样式标识标签添加完毕后,构建出若干有序列表和无序列表,并在有序列表和无序列表构建完成后,得到所述标签从属归类文档。

4.根据权利要求1所述的方法,其特征在于,从所述预转换文档中的各个文本段落中,筛选出代码文本段落,包括:对于所述预转换文档中的任一文本段落,判断所述任一文本段落的起始位置处的字符是否为预设种类字符,其中,所述预设种类字符包括英文字符;

若是,则判断所述任一文本段落中是否包含有预设关键字符;

若是,则获取所述预设关键字符在所述任一文本段落中所处的位置;

判断所述预设关键字符在所述任一文本段落中所处的位置是否为预设位置;

若是,则判定所述任一文本段落为代码文本段落。

5.根据权利要求1所述的方法,其特征在于,所述方法还包括:

获取数据集,其中,所述数据集包括不同编程语言对应的代码样本;

对所述数据集中的各个代码样本进行数据预处理,得到预处理后的数据集;

对所述预处理后的数据集进行特征提取处理,得到每个代码样本对应的特征向量,并利用各个代码样本对应的特征向量,组成特征数据集;

将所述特征数据集划分为训练集和测试集,并以所述训练集中的每个特征向量为输入,训练集中每个特征向量对应代码样本的代码种类为输出,训练随机森林分类器,以在训练完成后,得到初始代码识别模型;

利用所述测试集,对所述初始代码识别模型进行模型测试,并在测试过程中,调整所述初始代码识别模型的模型参数,以在模型参数调整完毕后,得到所述代码识别模型。

6.根据权利要求5所述的方法,其特征在于,对所述预处理后的数据集进行特征提取处理,得到每个代码样本对应的特征向量,包括:对于所述预处理后的数据集中的任一代码样本,统计所述任一代码样本中关键字符和保留字符的出现频率,得到所述任一代码样本的词汇特征;

统计所述任一代码样本中的第三目标字符或目标组合字符串的出现频率,得到所述任一代码样本的字符分布特征;

对所述任一代码样本进行语法结构分析处理,得到所述任一代码样本的语法结构特征;

将所述任一代码样本中连续出现多次的字符作为连续字符,并统计各个连续字符的出现频率,以作为所述任一代码样本的N‑gram 特征;

利用所述任一代码样本的词汇特征、字符分布特征、语法结构特征以及N‑gram 特征,组成所述任一代码样本的特征向量。

7.一种基于机器识别的word文档转换装置,其特征在于,包括:

文档格式转换单元,用于获取目标word文档,并将所述目标word文档转换为html文档;

样式修正单元,用于对所述html文档进行样式修正处理,得到样式修正后的html文档;

样式修正单元,还用于对所述样式修正后的html文档内的字符串进行段落划分处理,得到预转换文档;

代码识别单元,用于从所述预转换文档中的各个文本段落中,筛选出代码文本段落,并将所述代码文本段落输入至代码识别模型中进行代码种类识别处理,得到所述代码文本段落对应的代码种类;

代码识别单元,还用于基于所述代码文本段落对应的代码种类,对所述预转换文档中的代码文本段落进行编程语言标识处理,以在编程语言标识处理完成后,得到所述目标word文档对应的html转换文档;

对所述html文档进行样式修正处理,得到样式修正后的html文档,包括:对所述html文档进行标签过滤处理,以滤除所述html文档中的无用标签,得到预处理后的html文档;

对所述预处理后的html文档中的各个标签进行标签替换处理,以在标签替换处理后,得到标签替换文档,其中,所述标签替换文档中各个标签的名称以及属性,与所述目标word文档中各个标签的名称以及属性相同;

对所述标签替换文档中的各个第一指定标签进行从属归类处理,以将所述标签替换文档中具有同一从属关系的第一指定标签构建为有序列表或无序列表,并在从属归类处理后,得到标签从属归类文档;

从所述标签从属归类文档中筛选出第二指定标签,并将所述第二指定标签对应的标签内容上传至云管理平台,以得到所述第二指定标签对应标签内容的访问地址,其中,所述第二指定标签包括图片标签;

将所述第二指定标签中的SRC内容替换为所述第二指定标签对应标签内容的访问地址,以在SRC内容替换完毕后,得到所述样式修正后的html文档。

8.一种基于机器识别的word文档转换装置,其特征在于,包括:依次通信相连的存储器、处理器和收发器,其中,所述存储器用于存储计算机程序,所述收发器用于收发消息,所述处理器用于读取所述计算机程序,执行如权利要求1~6任意一项所述的基于机器识别的word文档转换方法。

9.一种存储介质,其特征在于,所述存储介质上存储有指令,当所述指令在计算机上运行时,执行如权利要求1~6任意一项所述的基于机器识别的word文档转换方法。

说明书 :

一种基于机器识别的word文档转换方法、装置及存储介质

技术领域

[0001] 本发明属于数据处理技术领域,具体涉及一种基于机器识别的word文档转换方法、装置及存储介质。

背景技术

[0002] 二十一世纪以来,随着互联网的快速发展,技术论坛、博客、社区等应用也逐渐流行起来,前述应用为人们提供了沟通交流的平台,促进了不同人群之间的相互学习;同时,为保证人们在前述应用上的快速发文,各类特色编辑器也随之出现;但是,现有的编辑器却不能很好的支持或者是不支持本地word文档的快速导入发文,其存在以下不足:
[0003] 目前市面上的编辑器仅仅能够转换基本的段落、表格、图片等格式,而且转换出来时,文本样式会大幅度丢失,只能保证内容完整,而不能保证文本样式完整;同时,Word文档中存在代码块时,导入时无法识别,会变为普通文本;基于此,如何提供一种能够将已有的word文档,快速、高还原度地转换成发布文档的转换方法,已成为一个亟待解决的问题。

发明内容

[0004] 本发明的目的是提供一种基于机器识别的word文档转换方法、装置及存储介质,用以解决现有技术在进行word文档转换时无法保证文本样式完整,以及无法识别代码块的问题。
[0005] 为了实现上述目的,本发明采用以下技术方案:
[0006] 第一方面,提供了一种基于机器识别的word文档转换方法,包括:
[0007] 获取目标word文档,并将所述目标word文档转换为html文档;
[0008] 对所述html文档进行样式修正处理,得到样式修正后的html文档;
[0009] 对所述样式修正后的html文档内的字符串进行段落划分处理,得到预转换文档;
[0010] 从所述预转换文档中的各个文本段落中,筛选出代码文本段落,并将所述代码文本段落输入至代码识别模型中进行代码种类识别处理,得到所述代码文本段落对应的代码种类;
[0011] 基于所述代码文本段落对应的代码种类,对所述预转换文档中的代码文本段落进行编程语言标识处理,以在编程语言标识处理完成后,得到所述目标word文档对应的html转换文档。
[0012] 基于上述公开的内容,本发明在进行文档转换时,先进行格式转换,也就是将目标word文档转换为html文档,前述操作能够使转换后的文档被现有的编辑器所识别,从而减少用户发布时重新编辑的时间成本;接着,本发明对html文档进行样式修正处理,以保证转换后的文档中的样式与原文档中的文本样式相同;在完成样式修正后,则可进行代码块的识别,以便使转换后的文档能够得到原文档中的代码块;其中,在具体实施时,本发明先对样式修正后的html文档内的字符串进行段落划分处理,得到若干文本段落,而后,再识别出属于代码块的文本段落,以便将属于代码块的文本段落输入至代码识别模型中进行代码种类识别处理,得到各个代码文本段落所属的代码种类;最后,利用识别出的代码种类,对各个代码文本段落进行编程语言标识处理,即可完成对目标word文档的转换,得到发布文档(即html转换文档)。
[0013] 通过上述设计,本发明在进行文档转换时,对格式转换后的文档进行了样式修正处理,如此,可保留原word文档中的文本样式;同时,利用机器识别技术,来对样式修正后的各个文本段落进行代码种类识别,以基于各个文本段落的代码种类,来进行编程语言标识;由此,本发明在文档转换时,可保留原文本中的文本样式,且能够准确识别出文档中的代码块文本,以及所属的编程语言,由此,使得用户不用重复的复制粘贴、重新编写代码以及重新设置文本样式,可实现各类技术文章的快速发布,适用于在文档转换领域的广泛应用与推广。
[0014] 在一个可能的设计中,对所述html文档进行样式修正处理,得到样式修正后的html文档,包括:
[0015] 对所述html文档进行标签过滤处理,以滤除所述html文档中的无用标签,得到预处理后的html文档;
[0016] 对所述预处理后的html文档中的各个标签进行标签替换处理,以在标签替换处理后,得到标签替换文档,其中,所述标签替换文档中各个标签的名称以及属性,与所述目标word文档中各个标签的名称以及属性相同;
[0017] 对所述标签替换文档中的各个第一指定标签进行从属归类处理,以将所述标签替换文档中具有同一从属关系的第一指定标签构建为有序列表或无序列表,并在从属归类处理后,得到标签从属归类文档;
[0018] 从所述标签从属归类文档中筛选出第二指定标签,并将所述第二指定标签对应的标签内容上传至云管理平台,以得到所述第二指定标签对应标签内容的访问地址,其中,所述第二指定标签包括图片标签;
[0019] 将所述第二指定标签中的SRC内容替换为所述第二指定标签对应标签内容的访问地址,以在SRC内容替换完毕后,得到所述样式修正后的html文档。
[0020] 在一个可能的设计中,对所述预处理后的html文档中的各个标签进行标签替换处理,以在标签替换处理后,得到标签替换文档,包括:
[0021] 从所述预处理后的html文档中筛选出第一目标标签和第二目标标签,其中,所述第一目标标签包括p标签,所述第二目标标签包括font标签、ins标签、i标签以及del标签;
[0022] 将所述第一目标标签的name属性内容更改为第一标签名;以及
[0023] 将所述第二目标标签的name属性内容更改为第二标签名,并在所述第二目标标签中添加标签标识字符,以在标签标识字符添加完毕后,得到所述标签替换文档。
[0024] 在一个可能的设计中,对所述标签替换文档中的各个第一指定标签进行从属归类处理,以将所述标签替换文档中具有同一从属关系的第一指定标签构建为有序列表或无序列表,并在从属归类处理后,得到标签从属归类文档,包括:
[0025] 对于所述标签替换文档中的各个第一指定标签,获取各个第一指定标签的样式属性,其中,任一第一指定标签的样式属性包括该任一第一指定标签的所属序列、所属序列的层级以及所属序列的层级的顺序;
[0026] 基于各个第一指定标签的样式属性,对各个第一指定标签进行从属划分处理,以将属于同一序列以及同一层级的第一指定标签划分为一类,得到若干标签类;
[0027] 对于若干标签类中的任一标签类,按照所述任一标签类中各个第一指定标签对应所属序列的层级的顺序,对所述任一标签类中的各个第一指定标签进行排序,得到排序标签类,并在将所有标签类中的各个标签均排序完毕后,得到若干排序标签类;
[0028] 对各个排序标签类进行样式识别,得到各个排序标签类所属的列表样式,其中,所述列表样式包括有序列表和无序列表;
[0029] 基于各个排序标签类所属的列表样式,为各个排序标签类添加样式标识标签,以在样式标识标签添加完毕后,构建出若干有序列表和无序列表,并在有序列表和无序列表构建完成后,得到所述标签从属归类文档。
[0030] 在一个可能的设计中,从所述预转换文档中的各个文本段落中,筛选出代码文本段落,包括:
[0031] 对于所述预转换文档中的任一文本段落,判断所述任一文本段落的起始位置处的字符是否为预设种类字符,其中,所述预设种类字符包括英文字符;
[0032] 若是,则判断所述任一文本段落中是否包含有预设关键字符;
[0033] 若是,则获取所述预设关键字符在所述任一文本段落中所处的位置;
[0034] 判断所述预设关键字符在所述任一文本段落中所处的位置是否为预设位置;
[0035] 若是,则判定所述任一文本段落为代码文本段落。
[0036] 在一个可能的设计中,所述方法还包括:
[0037] 获取数据集,其中,所述数据集包括不同编程语言对应的代码样本;
[0038] 对所述数据集中的各个代码样本进行数据预处理,得到预处理后的数据集;
[0039] 对所述预处理后的数据集进行特征提取处理,得到每个代码样本对应的特征向量,并利用各个代码样本对应的特征向量,组成特征数据集;
[0040] 将所述特征数据集划分为训练集和测试集,并以所述训练集中的每个特征向量为输入,训练集中每个特征向量对应代码样本的代码种类为输出,训练随机森林分类器,以在训练完成后,得到初始代码识别模型;
[0041] 利用所述测试集,对所述初始代码识别模型进行模型测试,并在测试过程中,调整所述初始代码识别模型的模型参数,以在模型参数调整完毕后,得到所述代码识别模型。
[0042] 在一个可能的设计中,对所述预处理后的数据集进行特征提取处理,得到每个代码样本对应的特征向量,包括:
[0043] 对于所述预处理后的数据集中的任一代码样本,统计所述任一代码样本中关键字符和保留字符的出现频率,得到所述任一代码样本的词汇特征;
[0044] 统计所述任一代码样本中的第三目标字符或目标组合字符串的出现频率,得到所述任一代码样本的字符分布特征;
[0045] 对所述任一代码样本进行语法结构分析处理,得到所述任一代码样本的语法结构特征;
[0046] 将所述任一代码样本中连续出现多次的字符作为连续字符,并统计各个连续字符的出现频率,以作为所述任一代码样本的N‑gram 特征;
[0047] 利用所述任一代码样本的词汇特征、字符分布特征、语法结构特征以及N‑gram 特征,组成所述任一代码样本的特征向量。
[0048] 第二方面,提供了一种基于机器识别的word文档转换装置,包括:
[0049] 文档格式转换单元,用于获取目标word文档,并将所述目标word文档转换为html文档;
[0050] 样式修正单元,用于对所述html文档进行样式修正处理,得到样式修正后的html文档;
[0051] 样式修正单元,还用于对所述样式修正后的html文档内的字符串进行段落划分处理,得到预转换文档;
[0052] 代码识别单元,用于从所述预转换文档中的各个文本段落中,筛选出代码文本段落,并将所述代码文本段落输入至代码识别模型中进行代码种类识别处理,得到所述代码文本段落对应的代码种类;
[0053] 代码识别单元,还用于基于所述代码文本段落对应的代码种类,对所述预转换文档中的代码文本段落进行编程语言标识处理,以在编程语言标识处理完成后,得到所述目标word文档对应的html转换文档。
[0054] 第三方面,提供了另一种基于机器识别的word文档转换装置,以装置为电子设备为例,包括依次通信相连的存储器、处理器和收发器,其中,所述存储器用于存储计算机程序,所述收发器用于收发消息,所述处理器用于读取所述计算机程序,执行如第一方面或第一方面中任意一种可能设计的所述基于机器识别的word文档转换方法。
[0055] 第四方面,提供了一种存储介质,存储介质上存储有指令,当所述指令在计算机上运行时,执行如第一方面或第一方面中任意一种可能设计的所述基于机器识别的word文档转换方法。
[0056] 第五方面,提供了一种包含指令的计算机程序产品,当指令在计算机上运行时,使计算机执行如第一方面或第一方面中任意一种可能设计的所述基于机器识别的word文档转换方法。
[0057] 有益效果:
[0058] (1)本发明在进行文档转换时,对格式转换后的文档进行了样式修正处理,如此,可保留原word文档中的文本样式;同时,利用机器识别技术,来对样式修正后的各个文本段落进行代码种类识别,以基于各个文本段落的代码种类,来进行编程语言标识;由此,本发明在文档转换时,可保留原文本中的文本样式,且能够准确识别出文档中的代码块文本,以及所属的编程语言,由此,使得用户不用重复的复制粘贴、重新编写代码以及重新设置文本样式,可实现各类技术文章的快速发布,适用于在文档转换领域的广泛应用与推广。

附图说明

[0059] 图1为本发明实施例提供的基于机器识别的word文档转换方法的步骤流程示意图;
[0060] 图2为本发明实施例提供的基于机器识别的word文档转换装置的结构示意图;
[0061] 图3为本发明实施例提供的电子设备的结构示意图。

具体实施方式

[0062] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将结合附图和实施例或现有技术的描述对本发明作简单地介绍,显而易见地,下面关于附图结构的描述仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在此需要说明的是,对于这些实施例方式的说明用于帮助理解本发明,但并不构成对本发明的限定。
[0063] 应当理解,尽管本文可能使用术语第一、第二等等来描述各种单元,但是这些单元不应当受到这些术语的限制。这些术语仅用于区分一个单元和另一个单元。例如可以将第一单元称作第二单元,并且类似地可以将第二单元称作第一单元,同时不脱离本发明的示例实施例的范围。
[0064] 应当理解,对于本文中可能出现的术语“和/或”,其仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,单独存在B,同时存在A和B三种情况;对于本文中可能出现的术语“/和”,其是描述另一种关联对象关系,表示可以存在两种关系,例如,A/和B,可以表示:单独存在A,单独存在A和B两种情况;另外,对于本文中可能出现的字符“/”,一般表示前后关联对象是一种“或”关系。
[0065] 实施例:
[0066] 参见图1所示,本实施例所提供的基于机器识别的word文档转换方法,能够保留原word文档中的文本样式,且还可准确识别出文档中的代码块文本,以及所属的编程语言,由此,使得用户不用重复的复制粘贴,重新编写代码,以及重新设置样式,可实现各类技术文章的快速发布,适用于在word文档转换领域的大规模应用与推广;在本实施例中,举例本方法可以但不限于在文档转换端侧运行,可选的,文档转换端可以但不限于为个人电脑(personal computer,PC)、平板电脑或智能手机,可以理解的,前述执行主体并不构成对本申请实施例的限定,相应的,本方法的运行步骤可以但不限于如下述步骤S1~S5所示。
[0067] S1. 获取目标word文档,并将所述目标word文档转换为html文档;在本实施例中,举例可以但不限于借助python(一种计算机编程语言工具)的win32组件、wps工具或office工具来对word文档进行格式转换,得到html文档;其中,以python的win32组件为例,来具体阐述前述格式转换过程:(1)调用win32组件中的DispatchEx组件打开word应用;(2)调用win32组件中的Documents.Open命令,打开目标word文档;(3)调用SaveAs接口将目标word文档另存为html文件,得到html文档。
[0068] 由此将前述目标word文档转换为html文档后,可使转换后的文档能够被现有的编辑器所识别,从而在进行文档发布时,无需再次编辑,进而减少了用户发布时重新编辑的时间成本。
[0069] 在完成目标word文档的格式转换后,则可进行样式修正处理,以使转换后的文档,能够保留原word文档中的文本样式,其中,样式修正处理过程可以但不限于如下述步骤S2所示。
[0070] S2. 对所述html文档进行样式修正处理,得到样式修正后的html文档;在具体应用时,样式修正处理主要包括html文档中无用标签的滤除处理、标签替换处理、标签归类处理以及图片标签的访问处理,其中,前述标签处理过程可以但不限于如下述步骤S21~S25所示。
[0071] S21. 对所述html文档进行标签过滤处理,以滤除所述html文档中的无用标签,得到预处理后的html文档;在本实施例中,举例html文档中的各个字符串对应有一标签,且无用标签可以但不限于包括有注释、空行、空格、空标签、重复连续标签、批注、无用样式和隐藏的标签等,同时,举例可使用无用标签库(该无用标签库预先存储至文档转换端,且包含有若干无用样本标签),并结合正则表达式,来对html文档中的各个标签进行过滤处理,从而在无用标签滤除后,得到预处理后的html文档。
[0072] 在完成无用标签的过滤后,则可进行标签替换处理,其中,标签替换处理过程可以但不限于如下述步骤S22所示。
[0073] S22. 对所述预处理后的html文档中的各个标签进行标签替换处理,以在标签替换处理后,得到标签替换文档,其中,所述标签替换文档中各个标签的名称以及属性,与所述目标word文档中各个标签的名称以及属性相同;在具体应用中,进行标签替换的原因为:word文档转换出来的html代码中不存在有原word文档中的各个标签(如序列标签等),因此,需要对html文档中的标签进行替换,从而使转换后的html文档中具有与原文档相同的标签;可选的,前述标签替换处理过程可以但不限于如下述步骤S22a~S22c所示。
[0074] S22a. 从所述预处理后的html文档中筛选出第一目标标签和第二目标标签,其中,所述第一目标标签包括p标签,所述第二目标标签包括font标签、ins标签、i标签以及del标签;在具体实施时,可以但不限于通过代码来进行标签的区分,如可以但不限于使用bs库(其是解析、遍历、维护“标签树”的功能库)查找预处理后的html文档中各个标签的style样式,其中,若标签中的style样式中带‘mso‑list:’,则判定该标签为p标签(也就是识别出需要转换为li标签的p标签);同理,第二目标标签的识别过程,与前述第一目标标签的识别过程相同,于此不再赘述。
[0075] 在从预处理后的html文档中筛选出第一和第二目标标签后,则可进行标签的替换,其中,在本实施例中,标签替换主要是指标签名的替换,如此,即可使转换后的html文档中具有与原文档相同标签名的同时,保证各个标签的属性无变化;可选的,标签名的替换过程如下述步骤S22b和步骤S22c所示。
[0076] S22a. 将所述第一目标标签的name属性内容更改为第一标签名;在具体应用时,举例第一标签名可以但不限于为“Li”,也就是将预处理后的html文档中的p标签,替换为序列标签Li,如此,只是替换了标签名,而没有对属性做出任何删减操作,能够为后续标签的从属归类处理保留重要数据;同理,对于第二目标标签的替换处理也是如此,如下述步骤S22c所示。
[0077] S22c. 将所述第二目标标签的name属性内容更改为第二标签名,并在所述第二目标标签中添加标签标识字符,以在标签标识字符添加完毕后,得到所述标签替换文档;在本实施例中,第二标签名可以但不限于为“span”,同时,标签标识字符可以但不限于采用class值来表示,且可根据第二目标标签的种类而具体设置;如第二目标标签为del标签,那么可设置其对应的标签标识字符为’del’字符串,以便用于标识这个span标签是删除标签;同时,还可设置前述第一目标标签和第二目标标签的css样式,从而确定各个第一和第二目标标签对应字符串的样式(如对齐,大小,高度,宽度,颜色,布局,圆角等),当然,其余各个第二目标标签的标签标识字符的添加原理与前述举例相同,于此不再赘述。
[0078] 由此通过前述步骤S22a~S22c,即可使转换后的html文档中具有与原文档相同标签名的同时,保证各个标签的属性无变化,从而与原word文档中的标签相对应。
[0079] 在完成预处理后的html文档中各个标签的替换处理后,即可对替换后的标签,来进行从属归类处理,其中,从属归类处理可以但不限于如下述步骤S23所示。
[0080] S23. 对所述标签替换文档中的各个第一指定标签进行从属归类处理,以将所述标签替换文档中具有同一从属关系的第一指定标签构建为有序列表或无序列表,并在从属归类处理后,得到标签从属归类文档;在本实施例中,举例第一指定标签可以但不限于为前述第一目标标签,也就是序列标签,其中,前述从属归类处理的具体过程可以但不限于如下述步骤S23a~S23e所示。
[0081] S23a. 对于所述标签替换文档中的各个第一指定标签,获取各个第一指定标签的样式属性,其中,任一第一指定标签的样式属性包括该任一第一指定标签的所属序列、所属序列的层级以及所属序列的层级的顺序;在本实施例中,第一指定标签(即序列标签)的style样式(其属性中的一种)中标记了对应的从属关系,因此,可直接读取各个第一指定标签对应的style样式属性,来得到各个第一指定标签的所属序列、所属序列的层级以及所属序列的层级的顺序;如,任一第一指定标签对应的style样式属性中包含了mso‑list:l1 level1 lfo11,那么,该任一第一指定标签的所述序列则为11,层级为leve11,序列的层级的顺序为lfo11;当然,其余各个第一指定标签的样式属性所包含的内容与前述举例相同,于此不再赘述。
[0082] 在得到各个第一指定标签的样式属性后,即可根据各自的样式属性,来进行从属划分处理,其中,各个第一指定标签的从属关系的划分过程可以但不限于如下述步骤S23b~S23e所示。
[0083] S23b. 基于各个第一指定标签的样式属性,对各个第一指定标签进行从属划分处理,以将属于同一序列以及同一层级的第一指定标签划分为一类,得到若干标签类;在本实施例中,在前述举例的基础上进行阐述,也就是将序列为11,以及层级为leve11的第一指定标签划分为一类;当然,其余各个第一指定标签的划分也是如此,于此不再赘述。
[0084] 在依据样式属性,对各个第一指定标签进行从属划分处理后,即可进行有序列表或无序列表的构建,如下述步骤S23c~S23e所示。
[0085] S23c. 对于若干标签类中的任一标签类,按照所述任一标签类中各个第一指定标签对应所属序列的层级的顺序,对所述任一标签类中的各个第一指定标签进行排序,得到排序标签类,并在将所有标签类中的各个标签均排序完毕后,得到若干排序标签类;在具体应用时,以一个实例来阐述前述步骤S23c,假设任一标签类包含有三个第一指定标签,分别为A、B和C,其中,第一指定标签A对应所属序列的层级的顺序为2fo11,第一指定标签B对应所属序列的层级的顺序为1fo11,第一指定标签C对应所属序列的层级的顺序为3fo11,那么,该任一标签类对应的排序标签类则为:第一指定标签B、A和C;当然,其余各个标签类中各个第一指定标签的排序过程与前述举例相同,于此不再赘述。
[0086] 在完成各个标签类中各个第一指定标签的排序后,即可确定出各个排序标签类所属的列表样式,以便根据列表样式,来进行有序列表或无序列表的构建,如下述步骤S23d和S23e所示。
[0087] S23d. 对各个排序标签类进行样式识别,得到各个排序标签类所属的列表样式,其中,所述列表样式包括有序列表和无序列表;在本实施例中,对于任一排序标签类,可以但不限于读取该任一排序标签类中的任一第一指定标签的样式标识字符(也是记载在style样式属性中),然后根据样式标识字符,来确定出该任一排序标签类所属的列表样式,其中,样式标识字符可以但不限于为:font‑family:Wingdings,如此,即可基于该样式标识字符来区分任一排序标签类属于有序列表还是无序列表。
[0088] 在得到各个排序标签类的所属列表样式后,即可进行样式标识,以便在样式标识后,得到有序列表和无序列表,其中,标识过程如下述步骤S23e所示。
[0089] S23e. 基于各个排序标签类所属的列表样式,为各个排序标签类添加样式标识标签,以在样式标识标签添加完毕后,构建出若干有序列表和无序列表,并在有序列表和无序列表构建完成后,得到所述标签从属归类文档;在本实施例中,可以但不限于使用ol标签或ul标签,来作为样式标识标签,并将该样式标识标签加在排序标签类中各个序列标签(即Li标签)的最外层,从而将该样式标识标签作为父标签,以形成一个完整的有序列表或无序列表,在具体应用时,假设任一排序标签类进行样式标识标签后,得到的为无序列表,其具体为:
,其中,该无序列表内中间的标签则为前述任一排序标签类中各个第一指定标签的序列标签,而最外围的ul标签则为任一排序标签类的样式标识标签;当然,有序列表的构建过程与前述举例相同,于此不再赘述。
[0090] 由此通过前述步骤S23a~S23e,即可完成标签替换文档中的各个序列标签的从属归类处理,以便利用属于同一序列且同一层级的序列标签构建出有序列表或无序列表,从而使用有序列表和无序列表,来对文档中的字符串起到提纲和格式排序的作用。
[0091] 在得到标签从属归类文档后,还需要对标签从属归类文档中的图片标签进行处理,以保证转换后的文档中能够显示图像,其中,图片标签的处理过程可以但不限于如下述步骤S24所示。
[0092] S24. 从所述标签从属归类文档中筛选出第二指定标签,并将所述第二指定标签对应的标签内容上传至云管理平台,以得到所述第二指定标签对应标签内容的访问地址,其中,所述第二指定标签包括图片标签;在本实施例中,由于word转成html以后,图片是以img标签引用本地地址实现的,如果html输出到其他地方使用,图片是无法展示的,如此,则需要将html中所有有效的img标签(img标签则表示图片标签,且有效表示SRC内容不为空)通过OSS或者其它图片云服务上传到云管理平台,而后,使用能够访问云管理平台的地址,来替换img标签中的SRC内容,即可完成图片标签的处理;更进一步的,SRC内容替换过程可以但不限于如下述步骤S25所示。
[0093] S25. 将所述第二指定标签中的SRC内容替换为所述第二指定标签对应标签内容的访问地址,以在SRC内容替换完毕后,得到所述样式修正后的html文档;在具体应用时,相当于将原SRC内容替换为公网或者系统局域网能访问的cdn地址,而后,即可得到样式修正后的html文档。
[0094] 由此通过前述步骤S21~S25,即可完成html文档中文本样式的修正,从而使转换后的文档保留与原word文档相同的文本样式,进而避免了用户重新设置文本样式的弊端。
[0095] 在完成html文档中文本样式的修正后,则可进行样式修正后的html文档内代码块的识别,在本实施例中,是先进行字符串的分段,然后再对文本段落进行代码块的识别,最后,再对属于代码块的文本段落进行代码种类的识别,其中,前述字符串的分段过程可以但不限于如下述步骤S3所示。
[0096] S3. 对所述样式修正后的html文档内的字符串进行段落划分处理,得到预转换文档;在本实施例中,可以但不限于使用标点符号、缩进和换行、语义关联、段落长度以及语法结构来对字符串进行段落划分处理:其中,利用标点符号进行初步切分的过程为:在英文中,可以使用句号、问号、感叹号等标点符号分隔句子,在中文中,可以使用句号、问号、感叹号以及分号等标点符号切分句子,且句子之间的分隔符可以作为切分段落的依据;对于缩进和换行,则是当检测到连续的换行符或者一定数量的空格时,可以将文本切分为不同段落;同理,基于语义关联进行分段则是:在切分段落时,要保持段落内的句子具有一定的语义关联性,且每个段落应该围绕一个主题或观点展开,而如果发现切分后的段落在语义上并不连贯,可以对切分位置进行调整;在具体应用时,前述分段手段为段落划分的常用技术,其原理不再赘述。
[0097] 在完成样式修正后的html文档内的字符串的段落划分后,即可对得到的各个文本段落进行代码块的识别,其中,识别过程如下述步骤S4所示。
[0098] S4. 从所述预转换文档中的各个文本段落中,筛选出代码文本段落,并将所述代码文本段落输入至代码识别模型中进行代码种类识别处理,得到所述代码文本段落对应的代码种类;在具体实施时,可以但不限于根据文本段落的起始位置的字符、文本段落的关键字符以及关键字符的位置,来判断文本段落是否为代码文本段落,其中,识别过程如下述步骤S41~S45所示。
[0099] S41. 对于所述预转换文档中的任一文本段落,判断所述任一文本段落的起始位置处的字符是否为预设种类字符,其中,所述预设种类字符包括英文字符;在本实施例中,相当于判断该任一文本段落的首位字符是否为英文字符,若是,则需要进行下一步的判断,即执行下述步骤S42,否则,则判定该任一文本段落为非代码文本段落。
[0100] S42. 若是,则判断所述任一文本段落中是否包含有预设关键字符;在本实施例中,举例文档转换端内设置有关键词集,其中,关键词集包括不同编程语言对应的预设关键字符,因此,只需根据关键词集,来对任一文本段落进行字符对比,即可确定出其是否包含有预设关键字符,若包含,则需要进行下一步的判断(即执行下述步骤S43),反之,则判定该任一文本段落为非代码文本段落。
[0101] S43. 若是,则获取所述预设关键字符在所述任一文本段落中所处的位置。
[0102] S44. 判断所述预设关键字符在所述任一文本段落中所处的位置是否为预设位置。
[0103] S45. 若是,则判定所述任一文本段落为代码文本段落;在本实施例中,若所述预设关键字符处于预设位置,则认定该任一文本段落为代码文本段落,反之,则认定为非代码文本段落。
[0104] 由此通过前述步骤S41~S45,即可从预转换文档中的各个文本段落中,筛选出属于代码块的文本段落,而后,还需要识别出各个属于代码块的文本段落对应的代码种类,以便后续进行编程语言的标识,从而使转换后的文档包含有原文档中的代码块,而无需用户重新编写。
[0105] 具体的,本实施例采用机器识别技术来进行代码块的种类识别,其中,下述公开前述代码识别模型的其中一种训练过程,可以但不限于如下述S01~S05所示。
[0106] S01. 获取数据集,其中,所述数据集包括不同编程语言对应的代码样本;在本实施例中,不同编程语言对应的代码样本可以但不限于从 GitHub、Gitee 等代码托管平台上爬取得到。
[0107] 而在得到数据集后,则需要进行数据预处理,以更好的进行特征提取,其中,数据预处理过程可以但不限于如下述步骤S02所示。
[0108] S02. 对所述数据集中的各个代码样本进行数据预处理,得到预处理后的数据集;在本实施例中,数据预处理过程可以但不限于包括:(1)删除注释:注释通常与编程语言本身的特征无关,因此,可以将它们从代码样本中删除,具体的,可以使用正则表达式匹配并删除多行和单行注释;(2)删除空白字符:空白字符(如空格、制表符、换行符等)可能会干扰特征提取过程,因此,在预处理阶段,可以删除这些空白字符,或将它们替换为统一的空格;
(3)将代码样本转换为小写;其中,将代码样本中的所有字符转换为小写,可以消除大小写引起的差异,并简化后续的词汇特征提取;(4)标准化缩进:由于不同的编程语言和项目可能采用不同的缩进风格,因此,可以将所有缩进标准化为统一的空格数,以便更好地分析语法结构;(5)删除数字和特殊符号:由于数字和特殊符号在不同编程语言中可能具有相似的分布,所以,需要在预处理阶段将它们从代码样本中删除,从而减少噪声,突出编程语言的关键特征;另外,前述数据预处理过程可以但不限于采用Python 工具,并结合正则表达式、字符串处理函数等工具来实现。
[0109] 在完成数据集的预处理后,则可进行特征提取处理,以便后续用特征向量来进行模型的训练,其中,特征提取过程可以但不限于如下述步骤S03所示。
[0110] S03. 对所述预处理后的数据集进行特征提取处理,得到每个代码样本对应的特征向量,并利用各个代码样本对应的特征向量,组成特征数据集;在本实施例中,任一代码样本的特征向量,可以但不限于包括该任一代码样本的词汇特征、字符分布特征和语法结构特征等,其中,以任一代码样本为例,来阐述特征提取过程,可以但不限于如下述步骤S03a~S03e所示。
[0111] S03a. 对于所述预处理后的数据集中的任一代码样本,统计所述任一代码样本中关键字符和保留字符的出现频率,得到所述任一代码样本的词汇特征;在本实施例中,不同编程语言中关键字符和保留字符的分布有显著差异,因此,可以作为识别编程语言的重要特征,同时,举例可根据编程语言不同,设定不同的关键字符,如编程语言为 Python ,关键字符可以但不限于包括def, class, import等,又如,编程语言为Java ,关键字符可以但不限于包括public, class, extends等;同时,保留字符也是如此,其不再赘述。
[0112] 在完成前述任一代码样本的词汇特征的统计后,则可进行字符分布特征的提取,其提取过程如下述步骤S03b所示。
[0113] S03b. 统计所述任一代码样本中的第三目标字符或目标组合字符串的出现频率,得到所述任一代码样本的字符分布特征;在本实施例中,不同编程语言的字符分布往往有所不同,因此,也可以作为区分编程语言的特征,同时,举例第三目标字符可以但不限于包括大括号、圆括号、分号等符号,当然,前述第三目标字符和目标组合字符串也可根据编程语言,来进行具体设定,在此不再一一罗列。
[0114] 而在完成该任一代码样本的字符分布特征的提取后,还需进行语法结构分析,其中,语法结构分析过程可以但不限于如下述步骤S03c所示。
[0115] S03c. 对所述任一代码样本进行语法结构分析处理,得到所述任一代码样本的语法结构特征;在具体应用时,不同编程语言具有不同的语法规则,因此,可以通过分析语法结构来区分编程语言。其中,可分析该任一代码样本中的缩进和括号匹配等,来得到语法结构特征。
[0116] 同理,在得到语法结构特征后,为进一步的提高体征丰富度,还设置有N‑gram 特征提取过程,如下述步骤S03d所示。
[0117] S03d. 将所述任一代码样本中连续出现多次的字符作为连续字符,并统计各个连续字符的出现频率,以作为所述任一代码样本的N‑gram 特征;在具体实施时,N‑gram 特征可以捕捉到编程语言中的局部模式,其有助于区分不同编程语言;如此,相当于是统计该任一代码样本中同一字符连续出现多次的频率,从而将其作为N‑gram 特征。
[0118] 在经过前述步骤S03a~S03d的特征提取处理后,即可使用前述提取出的特征,来组成该任一代码样本的特征向量,如下述步骤S03e所示。
[0119] S03e. 利用所述任一代码样本的词汇特征、字符分布特征、语法结构特征以及N‑gram 特征,组成所述任一代码样本的特征向量;在本实施例中,可以将前述特征构建出行向量,从而得到特征向量;当然,可也构建为列向量,在此不作具体限定。
[0120] 由此通过前述步骤S03a~S03e,即可得到每个代码样本对应的特征向量,而后,即可利用特征向量,来进行随机森林分类器的训练,从而在训练结束后,得到代码识别模型。
[0121] S04. 将所述特征数据集划分为训练集和测试集,并以所述训练集中的每个特征向量为输入,训练集中每个特征向量对应代码样本的代码种类为输出,训练随机森林分类器,以在训练完成后,得到初始代码识别模型;在本实施例中,随机森林是一种集成学习算法,其是通过构建多个决策树并结合它们的输出结果进行预测,该方法具有较高的准确性和鲁棒性。
[0122] 同时,在本实施例中,可使用训练集的特征向量和编程语言标签训练随机森林模型;另外,,可以使用80%的数据作为训练集,20%的数据作为测试集,从而在训练过程中评估模型的性能,避免模型过拟合,其中,模型调整过程如下述步骤S05所示。
[0123] S05. 利用所述测试集,对所述初始代码识别模型进行模型测试,并在测试过程中,调整所述初始代码识别模型的模型参数,以在模型参数调整完毕后,得到所述代码识别模型;在具体实施时,可通过计算模型在测试集上的准确率、召回率、F1分数等指标,来了解模型在未知数据上的泛化能力,同时,可根据前述指标,来调整模型参数,同时,也可采用增加训练数据或改进特征提取方法等措施,来提高模型性能。
[0124] 由此通过前述步骤S01~S05,即可完成随机森林分类器的训练,得到代码识别模型,其中,本实施例可以但不限于将训练好的模型可以保存到文件,以便在实际应用中进行编程语言识别;如在 Python 中,可以使用 joblib 或 pickle 库将模型保存为文件,然后,在需要识别编程语言的场景中加载模型,从而来实现代码种类的识别。
[0125] 更进一步的,各个代码文本段落在进行代码识别时,也需要先进行特征提取,得到各个代码文本段落对应的特征向量,而后,再将各个代码文本段落对应的特征向量输入至代码识别模型中,即可得到各个代码文本段落对应的代码种类。
[0126] 在得到各个代码文本段落的代码种类后,则可进行代码块的编程语言标识处理,其中,标识处理过程如下述步骤S5所示。
[0127] S5. 基于所述代码文本段落对应的代码种类,对所述预转换文档中的代码文本段落进行编程语言标识处理,以在编程语言标识处理完成后,得到所述目标word文档对应的html转换文档;在本实施例中,编程语言标识处理可以但不限于为高亮显示,也可注释相应的编程语言名称,同时,也可按照代码种类,来进行代码文本段落的格式调整;由此通过前述操作,即可完成html文档中代码块的识别和编程语言的标识,从而使html转换文档保留原文档中的代码块。
[0128] 由此通过前述步骤S1~S5所详细描述的基于机器识别的word文档转换装置,本发明能够保留原word文档中的文本样式,且还可准确识别出文档中的代码块文本,以及所属的编程语言,由此,使得用户不用重复的复制粘贴,重新编写代码,以及重新设置样式,可实现各类技术文章的快速发布,适用于在word文档转换领域的大规模应用与推广。
[0129] 如图2所示,本实施例第二方面提供了一种实现实施例第一方面中所述的基于机器识别的word文档转换方法的硬件装置,包括:
[0130] 文档格式转换单元,用于获取目标word文档,并将所述目标word文档转换为html文档。
[0131] 样式修正单元,用于对所述html文档进行样式修正处理,得到样式修正后的html文档。
[0132] 样式修正单元,还用于对所述样式修正后的html文档内的字符串进行段落划分处理,得到预转换文档。
[0133] 代码识别单元,用于从所述预转换文档中的各个文本段落中,筛选出代码文本段落,并将所述代码文本段落输入至代码识别模型中进行代码种类识别处理,得到所述代码文本段落对应的代码种类。
[0134] 代码识别单元,还用于基于所述代码文本段落对应的代码种类,对所述预转换文档中的代码文本段落进行编程语言标识处理,以在编程语言标识处理完成后,得到所述目标word文档对应的html转换文档。
[0135] 本实施例提供的装置的工作过程、工作细节和技术效果,可以参见实施例第二方面,于此不再赘述。
[0136] 如图3所示,本实施例第三方面提供了另一种基于机器识别的word文档转换装置,以装置为电子设备为例,包括:依次通信相连的存储器、处理器和收发器,其中,所述存储器用于存储计算机程序,所述收发器用于收发消息,所述处理器用于读取所述计算机程序,执行如实施例第一方面所述的基于机器识别的word文档转换方法。
[0137] 具体举例的,所述存储器可以但不限于包括随机存取存储器(random access memory,RAM)、只读存储器(Read Only Memory ,ROM)、闪存(Flash Memory)、先进先出存储器(First Input First Output,FIFO)和/或先进后出存储器(First In Last Out,FILO)等等;具体地,处理器可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现,同时,处理器也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central Processing Unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。
[0138] 在一些实施例中,处理器可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制,例如,所述处理器可以不限于采用型号为STM32F105系列的微处理器、精简指令集计算机(reduced instruction set computer,RISC)微处理器、X86等架构处理器或集成嵌入式神经网络处理器(neural‑network processing units,NPU)的处理器;所述收发器可以但不限于为无线保真(WIFI)无线收发器、蓝牙无线收发器、通用分组无线服务技术(General Packet Radio Service,GPRS)无线收发器、紫蜂协议(基于IEEE802.15.4标准的低功耗局域网协议,ZigBee)无线收发器、3G收发器、4G收发器和/或5G收发器等。此外,所述装置还可以但不限于包括有电源模块、显示屏和其它必要的部件。
[0139] 本实施例提供的电子设备的工作过程、工作细节和技术效果,可以参见实施例第一方面,于此不再赘述。
[0140] 本实施例第四方面提供了一种存储包含有实施例第一方面所述的基于机器识别的word文档转换方法的指令的存储介质,即所述存储介质上存储有指令,当所述指令在计算机上运行时,执行如实施例第一方面所述的基于机器识别的word文档转换方法。
[0141] 其中,所述存储介质是指存储数据的载体,可以但不限于包括软盘、光盘、硬盘、闪存、优盘和/或记忆棒(Memory Stick)等,所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。
[0142] 本实施例提供的存储介质的工作过程、工作细节和技术效果,可以参见实施例第一方面,于此不再赘述。
[0143] 本实施例第五方面提供了一种包含指令的计算机程序产品,当所述指令在计算机上运行时,使所述计算机执行如实施例第一方面所述的基于机器识别的word文档转换方法,其中,所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。
[0144] 最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。