中文分词分析之PDF批量转化为文本
来源:互联网 发布:尔雅网络课app 编辑:程序博客网 时间:2024/06/06 09:26
中文分词分析之PDF批量转化为文本
本篇文章主要是介绍批量将PDF文件转化为文本。这是中文分词分析的前奏部分。
Python解析PDF文件需要的模块包是pdfminer,可以通过pip install pdfminer进行安装。
下面主要介绍解析的主要步骤
1、具体需要的模块导入
#!/usr/bin/python#-*- coding: utf-8 -*-import osimport sysfrom pdfminer.converter import PDFPageAggregatorfrom pdfminer.pdfparser import PDFParserfrom pdfminer.pdfdocument import PDFDocumentfrom pdfminer.pdfpage import PDFPagefrom pdfminer.pdfpage import PDFTextExtractionNotAllowedfrom pdfminer.pdfinterp import PDFResourceManagerfrom pdfminer.pdfinterp import PDFPageInterpreterfrom pdfminer.layout import *#from pdfminer.pdfparser.PDFSyntaxError import *import re
2、批量读取文档,并创建批量的写文件(看需求,这里要求每一个pdf文件解析成文本后单独存放一个文件)
s_dir='E:\\program\\pdf\\file'for i in os.listdir(s_dir): if os.path.isfile(os.path.join(s_dir,i)): print i wfile=i.split('.')[0] fp = open(os.path.join(s_dir,i), 'rb') w_file=open('E:\\program\\pdf\\result\\%s.txt'%wfile,'a+')
这里使用了os模块读取目录的函数listdir(),其中i是目录下的文件名称。
3、创建文件解析器
具体的代码含义,都进行了注释
#创建一个PDF文档解析器对象 try: parser = PDFParser(fp)#创建一个PDF文档对象存储文档结构#提供密码初始化,没有就不用传该参数#document = PDFDocument(parser, password) document = PDFDocument(parser)#检查文件是否允许文本提取 if not document.is_extractable: raise PDFTextExtractionNotAllowed#创建一个PDF资源管理器对象来存储共享资源#caching = False不缓存 rsrcmgr = PDFResourceManager(caching = False)# 创建一个PDF设备对象 laparams = LAParams()# 创建一个PDF页面聚合对象 device = PDFPageAggregator(rsrcmgr, laparams=laparams)#创建一个PDF解析器对象 interpreter = PDFPageInterpreter(rsrcmgr, device)#处理文档当中的每个页面# doc.get_pages() 获取page列表#for i, page in enumerate(document.get_pages()):#PDFPage.create_pages(document) 获取page列表的另一种方式 replace=re.compile(r'\s+');# 循环遍历列表,每次处理一个page的内容 for page in PDFPage.create_pages(document): interpreter.process_page(page) # 接受该页面的LTPage对象 layout=device.get_result() # 这里layout是一个LTPage对象 里面存放着 这个page解析出的各种对象 # 一般包括LTTextBox, LTFigure, LTImage, LTTextBoxHorizontal 等等 for x in layout: #如果x是水平文本对象的话 if(isinstance(x,LTTextBoxHorizontal)): text=re.sub(replace,'',x.get_text()) if len(text)!=0: w_file.write(text.encode('utf-8')) #print text print "success" except: print "skip null file!"
4、原始pdf文件列表
5、解析后的结果
总结:
python的模块pdfminer提供对应的解析器来解决pdf文件转化为文本的问题,从解析的结果来看,相对比较准确。
由于初学python,有错误之处还望指正,源码都是经过验证的,希望与大家交流进步,后续会持续更新中文分词的各个模块。
阅读全文
1 0
- 中文分词分析之PDF批量转化为文本
- 文本分析之中文分词
- 文本分析--jieba中文分词
- 富文本html转化为pdf
- 中文分词一席谈之难点分析
- 中文分词一席谈之难点分析
- 调用swftools将中文PDF转化为SWF
- 中文文本挖掘课程笔记之jieba分词(1)
- 中文文本处理之jieba分词笔记(二)
- word转化为PDF
- Word转化为PDF
- HTML转化为PDF
- 用R做中文文本分析--用R进行文本挖掘与分析:分词、画词云
- 文本挖掘--将分词之后的文档转化为结构化的数据
- 中文分词之基本分词
- 中文分词源代码分析
- [ubuntu][Shell]批量将压缩包中的图片转化为pdf文档
- java的office转化为pdf,pdf转化为swf的工具类 在线预览之总结
- hash算法以及解决冲突的方法
- 在Activity之间传递简单数据
- centos7.3单机快速安装openstack
- GC算法实践(一) 内存分配篇
- Qt 图片缩放无锯齿处理
- 中文分词分析之PDF批量转化为文本
- 初学网络
- 最终实现混合app仿淘宝app自动识别淘口令 第一篇:mui混合开发获取原生剪切板内容
- Zynq 7000裸机的lwip 样例程序echo server 实验
- spark convert RDD[Map] to DataFrame
- 根据前序遍历和中序遍历,后序遍历和中序遍历重构二叉树
- QT5每日一学(二)编写QT多窗口程序
- BZOJ 1858: [Scoi2010]序列操作 线段树
- ArcGIS for Javascript API 4.X 实现分屏对比中的地图联动功能的实现