本发明涉及文档转换和数据处理领域,更具体地说,涉及一种基于JAVA实现由Word文档向LaTeX文档转换的方法。

背景技术:

TeX提供了一套功能强大并且十分灵活的排版语言,它多达900条指令,并且TeX有宏功能,用户可以不断地定义自己适用的新命令来扩展TeX系统的功能。Leslie Lamport开发的LaTeX是当今世界上最流行和使用最为广泛的TeX宏集。Microsoft Office Word作为Office套件的核心程序,提供了许多易于使用的文档创建工具,也是目前市场上占有量最大的文字处理器。Word专用的文件格式Word文件(.docx)成为事实上最通用的文档标准。文档转换是将Word、Pdf、Txt、Ooxml、Odf、Html等文档格式进行转化。例如发明人黒木纯提出的将Ooxml、Odf的文档转换为HTML格式文档的方法、Adobe Acrobat Professional软件实现Word格式和Pdf格式的转换等。Apache POI是一个开放源代码的Java数据库,其主要目标是访问Word的底层文件。JACOB是一个Java-COM中间件,通过这个组件可以在Java应用程序中调用COM组件和Win程序库。利用Apache POI和JACOB可以实现对Microsoft Office Word格式文档的读写功能。

在实现本发明过程中,发明人发现现有文档转换在技术与用户使用方面主要存在以下三类问题:首先,现有的文档转换技术一般是针对少数源格式文档和特定目标的格式文档,转化功能单一,对于用户来说,实际使用价值不高。其次,对于编码方式不同的文档实现转换具有一定的困难性,例如Microsoft Office Word与LaTeX文档之间的转换难题。最后,LaTeX文档由Tex语言的标记语言构成,制成一份完整的LaTeX文档,需要掌握TeX语言的几乎所有记述规则以及代码编写能力,对于非专业人士而言,文档撰写和排版存在较高的困难性和复杂性。

技术实现要素:

本发明要解决的技术问题在于,针对上述缺陷,本发明提供了一种Word文档向LaTeX文档转换的方法及系统。

本发明解决其技术问题所采用的技术方案是:构造一种基于JAVA实现由Word文档向LaTeX文档转换的方法,包括如下步骤:

S1、根据用户提交的Word源文档文件,通过JACOB组件中的Word调用程序模块打开源文档文件;

S2、在打开的源文档文件中,通过JACOB组件对源文档文件中各类数据元素进行初始分析,获取并记录源文档文件中每个数据元素的数据信息;

S3、根据步骤S2记录的数据信息,利用Apache POI组件和JACOB组件,提取源文档文件中的各类数据元素;

S4、将步骤S3提取出的各类数据元素进行信息流处理;其中,每类数据元素分别形成与其相对应的信息流;

S5、将步骤S2记录得到的数据信息与每类数据元素的信息流相结合,在保证源文档文件中各数据元素位置不变的情况下,形成LaTeX目标文档的信息流;

S6、将步骤S5形成的LaTeX目标文档的信息流写入到目标文件,从而将Word源文档文件转换成LaTeX文档。

进一步的,步骤S2中获取并记录的数据信息包括数据元素的类别,以及每个数据元素在源文档中的相对位置;通过JACOB组件分析的数据元素包括文本、图片、表格和公式元素。

进一步的,步骤S2中对源文件中各类数据元素进行初始分析,具体是对源文件中的所有数据元素的存储状态进行判断。

进一步的,步骤S2中通过JACOB组件中的Paragraphs、Item、Text和Table接口,记录各数据元素的类别以及相对位置。

进一步的,步骤S3中在源文档文件中提取各类数据元素包括:

针对文本元素,通过JACOB组件中的get(“Text”)、get(“Font”)和get(“Size”)函数,提取得到源文档中的文本元素;所述文本元素包括文本数据内容、文本类型和文本格式;

针对图片元素,使用Apache POI组件中XWPFDocument接口,提取得到源文档中的图片元素;使用JAVA中自带的FileOutputStream方法,将提取到的图片元素保存为本地文件;

针对表格元素,结合JACOB组件中的getTable函数和ReadTable函数,提取得到源文档中的表格元素;其中,表格的规格由JACOB组件中getTableRowsCount方法以及getTableColumnsCount方法获得;

针对公式元素,结合步骤S2中记录的数据信息,通过JACOB组件中copy方法,以及Toolkit工具类中粘贴板子类函数的getContents函数,提取得到源文档的公式元素;其中,粘贴板通过Toolkit工具类中的Transferable变量获得,并且通过getTransferData方法将数据进行转换;

其中、每提取一类数据元素时,记录其在源文档中的相对位置。

进一步的,所述数据元素包括文本、图片、表格和公式元素,步骤S4中利用朴素贝叶斯算法对提取的文本元素进行分类判定,形成相对应的LaTeX文本元素信息流;步骤S4中基于层叠自动编码器对提取的公式元素进行转换,形成相对应的LaTeX公式元素信息流;步骤S4中其余各类数据元素直接按照相对位置信息,形成相对应的目标文档格式信息流。

进一步的,利用朴素贝叶斯算法对提取的文本元素进行分类判定的步骤包括:

A1、将提取到的n个文本元素通过JIEBA分词算法,转换成n维特征向量X={x1、x2、…、xn};其中,xi为第i维特征向量,i∈n;

A2、将提取到的文本数据分类问题转化为一个二值分类问题,即任意未知文本数据样本d属于类别集合C={C0,C1};其中,C0代表正文文本,C1代表标题文本;

A3、利用朴素贝叶斯算法识别每项文本数据类型,其中包括正文文本,标题文本两类;

A4、计算未知文本样本d属于类别c的概率P为:

其中,取概率最大值作为未知文本样本d的类别,根据文本类别形成对应的LaTeX文本元素。

进一步的,基于层叠自动编码器对提取的公式元素进行转换的步骤包括:

B1、利用层叠自动编码算法将步骤S3中提取的公式元素进行编码;

B2、将步骤B1得到的编码结果,与公式模板库中已有编码数据进行近似匹配;

B3、将匹配度最高的公式模板数据输入到系统公式转换函数模块WordMathToLaTeX中,将源文件中的公式格式进一步转换,形成能够被LaTeX文档识别的编码方式。

进一步的,基于层叠自动编码器对提取的公式元素进行转换的步骤B3中,根据层叠自动编码算法结果x和已知样本的欧几里得距离y,判断匹配程度最高的公式模板的表达式为:

其中,x1、x2、…xn、y1、y2、…yn代表公式编码后每个向量空间的值。

本发明提出的一种基于JAVA实现由Word文档向LaTeX文档转换的系统,采用上述任一项所述Word文档向LaTeX文档转换的方法进行文档转换。

在本发明所述的一种基于JAVA实现由Word文档向LaTeX文档转换的方法及系统中,根据用户提供的原始Word文档,利用机器学习算法,对源文件数据进行智能分析,自动选取最为近似或者匹配度最高的文本元素和公式元素,整合源文件数据整体布局及目标文档特殊编码,形成目标文件数据流及目标文件目录、图片说明、表格说明等辅助信息流,写入到目标文件中,从而实现不同类型文档之间的转换。

实施本发明提出的一种基于JAVA实现由Word文档向LaTeX文档转换的方法及系统,具有以下有益效果:

1、能够降低不同类型文档转换的困难性和复杂性,为广大高校师生、科研人员等提供方便快捷的专业文档转换方式;

2、方便用户将简单的Word版式转换为专业性科技论文的投稿版式,解决了广大科研人员以及高校师生需要学习复杂LaTeX代码以及花费大量时间对论文进行重新编码排版的难题,提高了工作效率,弥补了当今国内由Word文档向LaTeX文档转换的领域空白。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1为Word文档向LaTeX文档转换的流程图;

图2为朴素贝叶斯算法和层叠自动编码器对提取的文本元素和公式元素进行分类的流程图;

图3为Word文档向LaTeX文档转换的表格转换效果图;

图4为Word文档向LaTeX文档转换的图片转换效果图;

图5为Word文档向LaTeX文档转换的公式转换效果;

图6为Word文档向LaTeX文档转换的整体转换效果图。

具体实施方式

为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。

请参考图1,其为Word文档向LaTeX文档转换的流程图;本发明提出的一种基于JAVA实现由Word文档向LaTeX文档转换的方法,具体包括以下步骤:

S1、根据用户提交的Word源文档文件,通过JACOB组件中的Word调用程序模块打开源文档文件。

S2、在打开的源文档文件中,通过JACOB组件对源文档文件中各类数据元素进行初始分析,获取并记录源文档文件中每个数据元素的数据信息;其中获取并记录的数据信息包括数据元素的类别,以及每个数据元素在源文档文件中的相对位置,本实施例中具体通过JACOB组件中的Paragraphs、Item、Text和Table接口,记录各数据元素的类别以及相对位置;其中通过JACOB组件分析的数据元素包括文本、图片、表格和公式元素;其中对源文档文件中各类数据元素进行初始分析,具体是对源文档文件中的所有数据元素的存储状态进行判断。

S3、根据步骤S2记录的数据信息,利用Apache POI组件和JACOB组件,提取源文档文件中的各类数据元素;其中,在源文档文件中提取各类数据元素包括:

针对文本元素,通过JACOB组件中的get(“Text”)、get(“Font”)和get(“Size”)函数,提取得到源文档文件中的文本元素;所述文本元素包括文本数据内容、文本类型和文本格式;

针对图片元素,使用Apache POI组件中XWPFDocument接口,提取得到源文档文件中的图片元素;使用JAVA程序自带的FileOutputStream方法,将提取的图片元素保存为本地文件;

针对表格元素,结合JACOB组件中的getTable函数和ReadTable函数,提取得到源文档中的表格元素;其中,表格的规格由JACOB组件中getTableRowsCount方法以及getTableColumnsCount方法获得;

针对公式元素,结合步骤S2中记录的数据信息,通过JACOB组件中copy方法,以及Toolkit工具类中粘贴板子类函数的getContents函数,提取得到源文档的公式元素;

其中,每提取一类数据元素时,记录其在源文档中的相对位置。

S4、将步骤S3提取出的各类数据元素进行信息流处理;每类数据元素分别形成与其相对应的信息流;其中,针对信息流的处理,具体包括:基于层叠自动编码器对提取的公式元素进行转换,形成相对应的LaTeX公式元素信息流;利用朴素贝叶斯算法对提取的文本元素进行分类判定,形成相对应的LaTeX文本元素信息流;其余各类数据元素直接按照相对位置信息,形成相对应的目标文档格式信息流。

S5、将步骤S2记录得到的数据信息与每类数据元素的信息流相结合,在保证源文档文件中各数据元素位置不变的情况下,形成LaTeX目标文档的信息流;

S6、将步骤S5形成的LaTeX目标文档的信息流写入到目标文件,从而将Word源文档文件转换成LaTeX文档。

请参考图2,其为朴素贝叶斯算法和层叠自动编码器对提取的文本元素和公式元素进行分类的流程图;具体的,利用朴素贝叶斯算法对提取的文本元素进行分类判定的步骤包括:

A1、将提取到的n个文本元素通过JIEBA分词算法,转换成n维特征向量X={x1、x2、…、xn};其中,xi为第i维特征向量,i∈n;

A2、将提取到的文本数据分类问题转化为一个二值分类问题,即任意未知文本数据样本d属于类别集合C={C0,C1};其中,C0代表正文文本,C1代表标题文本;

A3、利用朴素贝叶斯算法识别每项文本数据类型,其中包括正文文本,标题文本两类;

A4、计算未知文本样本d属于类别c的概率P为:

其中,取概率最大值作为未知文本样本d的类别δ,根据类别δ形成与其对应的LaTeX文本元素;

具体的,基于层叠自动编码器对提取的公式元素进行转换的步骤包括:

B1、利用层叠自动编码算法将步骤S3中提取的公式元素进行编码;

B2、将步骤B1得到的编码结果,与公式模板库中已有编码数据进行近似匹配;

B3、将匹配度最高的公式模板输入到系统公式转换函数模块WordMathToLaTeX中,对源文件中的公式格式进一步转换,形成能够被LaTeX文档识别的编码方式。其中,根据层叠自动编码算法结果x和已知样本的欧几里得距离y,判断匹配程度最高的公式模板的表达式为:

其中,x1、x2、…xn、y1、y2、…yn代表公式编码后每个向量空间的值。

通过上述原理,本发明提出的另外一种基于JAVA实现由Word文档向LaTeX文档转换的系统,包括任一项所述Word文档向LaTeX文档转换的方法进行文档转换的功能。

图3为Word文档向LaTeX文档转换的表格转换效果图;图4为Word文档向LaTeX文档转换的图片转换效果图;图5为Word文档向LaTeX文档转换的公式转换效果;图6为Word文档向LaTeX文档转换的整体转换效果图;通过图3-图6,可见本发明提出的一种基于JAVA实现由Word文档向LaTeX文档转换的方法,能够有效的将word文档转变为Latex文档。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

JAVA进行文档转换_基于JAVA实现由Word文档向LaTeX文档转换的方法及系统与流程相关推荐

  1. java整型转换为数组_基于java中byte数组与int类型的转换(两种方法)

    java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形 ...

  2. java怎么写桌面日历_基于java的桌面日历系统的设计与实现毕业设计论文最终版.doc...

    基于java的桌面日历系统的设计与实现毕业设计论文最终版 分类号_______________ 密级________________ UDC _______________ 学号_ ___ 毕业设计( ...

  3. 基于Java的设计开题报告_基于Java的电子邮件的收发系统的设计与实现开题报告...

    基于Java的电子邮件的收发系统的设计与实现开题报告 (8页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 开题报告 基于 Java 的电子 ...

  4. java web聊天室论文_基于Java网页版聊天室的设计与实现毕业论文含开题报告及文献综述(样例3)...

    <基于Java网页版聊天室的设计与实现毕业论文含开题报告及文献综述.doc>由会员分享,可免费在线阅读全文,更多与<基于Java网页版聊天室的设计与实现毕业论文含开题报告及文献综述& ...

  5. java设计建议植物大战僵尸_基于Java的游戏设计之植物大战僵尸

    植物大战僵尸这款游戏相信大家或多或少都玩过,那么大家有没有想过自己尝试着做一下植物大战僵尸的游戏设计呢.本文将基于Java语言为大家展示如何开发出植物大战僵尸游戏的简易版本,主要内容包括规则.对象.功 ...

  6. java图片切割类任务书_基于Java的截图工具(可储存编辑)的设计与实现毕业论文+任务书+翻译及原文+答辩PPT+源码+辅导视频...

    基于Java的截图工具(可储存编辑)的设计与实现 摘要 当今时代是飞速发展的信息时代,人们在对信息的处理中对图像的处理量与日俱增,这一点在文档人员上显得非常突出. 本软件采用Java语言进行模拟qq截 ...

  7. java输入输出图书管理系统设计_基于JAVA的图书管理系统设计(含源文件).doc

    PAGE 本科毕业设计(论文) 题 目:基于Java的图书管理信息系统的设计和实现 院 系: 计 算 机 科 学 系 专 业: 计 算 机 科 学 与 技 术 姓 名: 陈 平 指导教师: 周 亚 凤 ...

  8. java web聊天室论文_基于java网页版聊天室的设计与实现毕业论文含开题报告及文献综述.doc...

    基于java网页版聊天室的设计与实现毕业论文含开题报告及文献综述.doc 还剩 52页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价 ...

  9. java开发成语的过程_基于JAVA的成语词典接口调用代码实例

    基于JAVA的成语词典接口调用代码实例 接口描述:基于JA V A的成语词典接口调用代码实例 接口平台:聚合数据 import java.io.BufferedReader; import java. ...

  10. java象棋游戏用户特点_基于Java Swing的《中国象棋》游戏的设计与实现

    60 开发经验 3基金项目: 江西省自然科学基金资助项目(编号: 0411046); 江西省高性能计算技术重点实验室资助基金项目(No. JXHC20052003) ). 基于 Java Swing ...

最新文章

  1. 区块链相关论文研读3- 关于超级账本Hyperledger Fabric的性能优化
  2. CTFshow 文件包含 web80
  3. 成功解决Exception “unhandled ImportError“cannot import name ‘imresize‘ from ‘imageio‘
  4. C++通过vmware.exe检测虚拟机
  5. ASP.NET Core 3.x - 为什么采用新的 Endpoint Routing 路由系统
  6. Algorithm:十大经典排序算法C++实现及总结
  7. 0-1之间的随机数 C/C++
  8. 调用微信公众号API,实现主动给粉丝发送消息
  9. 【解决方案】视频结构化图像智能分析系统EasyNVR助力KTV视频监控建设
  10. 【个人专用入门级】LAMP一键安装包
  11. discuz分类信息模版PHP,Discuz 社区分类信息模板使用教程
  12. cad图形不见了怎么办_画好的cad图纸文件不见了怎么找回?
  13. 第二届全国高校计算机能力挑战赛-Java程序设计赛
  14. nvm You do not have sufficient privilege to perform this operation.
  15. 打破应试教育,犯错亦是成长
  16. linux 渗透工具_适用于Linux的十大最佳渗透测试工具
  17. 使用Promise.race()实现控制并发
  18. matlab实现logit模型/逻辑回归(详细版)
  19. Scrapy爬取猫眼《复仇者联盟4终局之战》影评
  20. 工作10年,30+转行软件测试,月薪10.5K

热门文章

  1. armadillo: run time error: need lapack
  2. 也论不使用第三个变量交换两个变量的值[C#]
  3. latex 图片_【包学包会】【LaTeX篇】TeXLive+VsCode+TexStudio
  4. MySQL ( Ubuntu16.04 )
  5. 关于iframe或document监听滑动(scroll)失败的问题
  6. An NVIDIA kernel module ‘nvidia-drm‘ appears to already be loaded in your kernel...
  7. linux下巧用tail命令 创建自解压tar文件
  8. win7此更新不适用计算机,win7系统更新提示“此更新不适用于您的计算机”的解决方法...
  9. itext 表格宽度自适应_微信公众号推文中如何自定义添加表格?
  10. 列出访问ftp 文件传输服务器过程,FTP文件传输协议简介及命令描述