说到pdf,那么得刨根问底儿地问问为啥要有这种格式的文件?有word这样格式的文件不够使得嘛?先说个深有体会的事,平常有木有word在不同地方打开格式发生改变的苦恼?然而pdf就没有这种麻烦。
当初Adobe公司设计PDF文件格式主要是要支持跨平台,支持对网络信息的发布。这种格式与平台无关,那就是说PDF文件不管是在Windows,Unix还是在苹果公司的MacOS操作系统中都是通用的。这一特点使它成为在Internet上进行电子文档发行和数字化信息传播的理想文档格式。
那pdf有这么多优点为啥还要转Word?答:pdf不易编辑,不易排版,不易粘贴复制,在工作中要是在pdf里面提取你想要的文字或者图片,那可费事儿,对于文字要不就一个字一个字地比着打,要么就充值某个软件会员,开启开挂模式。对于这两个方法都不想用的小伙伴来说,教你们一个方法,可以有效提取出pdf里面的文字并转为word。
1.解析PDF库pdfminer
说到从pdf中获得想要的信息,那第一步就得解析出pdf里面的东西,这里就用到pdfminer库,它完全专注于获取和分析文本数据。PDFMiner允许人们获取页面中文本的确切位置,以及字体或线条等其他信息。它的好处也是大大的:
完全用Python编写。各种字体类型(Type1,TrueType,Type3和CID)支持。PDF到HTML转换(使用示例转换器Web应用程序)。大纲(TOC)提取。等等好处,接下来在看看它处理pdf的流程是哪样
流程这图看起来太麻烦,简单几句话就是:
PDFParser先从文件中提取数据,然后给PDFDocument类PDFDocument类将传递来数据传给PDF解释器PDFPageInterpreterPDFPageInterpreter去处理页面内容PDFDevice将其转换为我们所需要的内容PDFResourceManager,PDF资源管理器用于保存共享内容例如字体或图片。2.pdf转word实操
pdfminer的流程简单了解了一下,那具体怎么用,来一步步走
1.既然要先用PDFParser先从文件中提取数据,然后给PDFDocument类,那么就需要有PDFParser和PDFDocument两个类,并需要让两者关联起来。
2.接下来创建PDFPageInterpreter,它的参数需要传入PDF资源管理器PDFResourceManager和PDF的设备对象device。
3.解释器创建好后,用解释器调用process_page方法,去解析页面。然后设备对象调用get_result()方法得到这个页面的LIPage对象
4.在LIPage对象中有LTImage图片对象,LTCurve曲线对象,LTFigurefigure对象,LTTextBoxHorizontal文本对象。这里我们只要LTTextBoxHorizontal对象,所以遍历LIPage在里面得到LTTextBoxHorizontal对象,获取里面的文字内容。
5.将得到的文字内容写入到word文件中。
6.来看看效果咋样
要用的PDF(只截取了一部分)生成的word(截取的一部分)可以看到转化的效果还是很不错的,只是格式稍微有点乱。
当处理多个pdf时,可以采用多线程处理。这里pdf转word只提供一个简单的思路,当pdf里面含有图片,图表就需要做另外的处理哦。