1、解析pdf文件

最近需要将pdf中文本提取出来,于是就了解了一下pdfminer
首先安装:pip3 install pdfminer3k
之后就是用pdfminer解析,不多说,直接上代码,这些代码都是参考各位前辈

from pdfminer.pdfparser import PDFParser,PDFDocument
from pdfminer.pdfinterp import PDFResourceManager,PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LTTextBoxHorizontal,LAParams,LTImage
import ospath=''
def pdf_to_word(folder,password):#获取指定目录下的所有文件files=os.listdir(folder)pdfFiles=[f for f in files if f.endswith('.pdf')]#获取pdf类型的文件,放到一个列表中for pdfFile in pdfFiles:print(pdfFile)#将目录和文件合并成一个路径 os.path.join('root','test','runoob.txt')  ##root/test/runoob.txt# pdfPath=os.path.join(folder,pdfFile)#设置将要转换后存放word文件的路径# wdPath=pdfPath#判断是否已经存在对应的文件,如果不存在就加入到存放的路径中去# if wdPath[-4:]!='.docx':#     wdPath=wdPath+'.docx'fn=open(path+"/{}".format(pdfFile),'rb')#创建一个PDF文本档分析器:PDFParserparser=PDFParser(fn)#创建一个PDF文档:PDFDocumengdoc=PDFDocument()#链接分析器与文档parser.set_document(doc)doc.set_parser(parser)#提供出事话的密码,如果没有密码,输入空字符串doc.initialize('')#检测文档是否提供txt转换,不提供就直接忽略if not doc.is_extractable:print('PDFTextExtractionNotAllowed')else:#创建PDF资源管理器:PDFResourceManagerresource=PDFResourceManager()#创建一个PDF参数分析器:;AParamslaparams=LAParams()#创建聚合器,用于读取文档的对象:PDFPageAggregatordevice=PDFPageAggregator(resource,laparams=laparams)#创建解释器,对文档编码,解释成python能够识别的格式:PDFPageInterpreterinterpreter=PDFPageInterpreter(resource,device)#doc.get_pages()是获取page列表的一个方法num_page,num_image,num_Text=0,0,0for page in doc.get_pages():pdf_str=''#利用解释器的peocess_page()方法解析单独页数interpreter.process_page(page)layout=device.get_result()for out in layout:if isinstance(out,LTTextBoxHorizontal):num_Text+=1print(type(out.get_text()))pdf_str+=out.get_text().strip()if isinstance(out,LTImage):num_image+=1print(pdf_str)# with open(wdPath,'a',encoding='utf-8') as f:#     f.write(out.get_text()+'\n')
if __name__=='__main__':pdf_to_word(path,'')

2、解决编码问题

如果首次这样运行的话,会输出两行文字:
WARNING:root:GBK2K-H
WARNING:root:GBK2K-v
我的平台是ubuntu
我这边是在路径下放了两个pdf文件,一个pdf中是文本,另一个是Image
所以就继续找原因,后面发现是编码问题。
pdfminer3k不能解析特殊字体,需要下载相应的字体包来解决
字体包下载链接:https://github.com/euske/pdfminer/pull/71/commits/2103e5875ef04cfaf424b25d2fd0dc9535a90714#diff-11a7e5c9b1cb16f0ae7d0276f643956d
这里有很多的字体包,看看你的警告是属于哪种字体,就下载相应的字体包。
下载完成之后,不要解压直接放在 pdfminer/cmap文件夹下
pdfminer/cmap文件夹:我的这个是通过pip安装的,找到自己的python包,进去找到里面的相关文件夹就可以了。
再次运行。发现不报刚刚的警告了。但是有了新的问题

然后下面就会以有一堆的cid:xxx
着说明编码问题已经解决了,现在需要的解码。同样的在上面的链接找到图片中相应解码包,这里需要的就是

再以同样的方法保存到同样的位置就可以了。然后就完美的输出文本了。

解析PDF文件以及解决编码问题相关推荐

  1. python解析pdf中文乱码_解析PDF文件以及解决编码问题

    1.解析pdf文件 最近需要将pdf中文本提取出来,于是就了解了一下pdfminer 首先安装:pip3 install pdfminer3k 之后就是用pdfminer解析,不多说,直接上代码,这些 ...

  2. python处理pdf实例_python使用pdfminer解析pdf文件的方法示例

    最近要做个从 pdf 文件中抽取文本内容的工具,大概查了一下 python 里可以使用 pdfminer 来实现.下面就看看怎样使用吧. PDFMiner是一个可以从PDF文档中提取信息的工具.与其他 ...

  3. Android系统打不开,安卓手机打不开pdf文件怎么解决?

    原标题:安卓手机打不开pdf文件怎么解决? Office应该大部分人都认识,普通办公人群基本每天都会使用到.我们在手机上经常会遇到这样一种情况!对方发过来一个格式为PDF的文件,但是手机上不管使用哪一 ...

  4. python 读取pdf cid_python使用pdfminer解析pdf文件的方法示例

    最近要做个从 pdf 文件中抽取文本内容的工具,大概查了一下 python 里可以使用 pdfminer 来实现.下面就看看怎样使用吧. PDFMiner是一个可以从PDF文档中提取信息的工具.与其他 ...

  5. python如何解析PDF文件

    python如何解析PDF文件 python中读取pdf的方法:使用python第三方库pdfminerk3k 1.使用pdfminer库 pdfminer是一个主流的分析pdf的库.如果是pytho ...

  6. Python编程--使用PyPDF解析PDF文件中的元数据

    Python编程–使用PyPDF解析PDF文件中的元数据 元数据 作为一种文件里非常明显可见的对象,元数据可以存在于文档.电子表格.图片.音频和视频文件中.创建这些文件的应用程序可能会把文档的作者.创 ...

  7. JAVA解析pdf文件

    自己记录一下,方便下次用,判断文件是否为pdf类型,并且解析文件内容 1.需要依赖的包 <dependency><groupId>org.apache.pdfbox</g ...

  8. PDF文件转换为Base64编码

    在线base64转pdf:格式转换 包名: import java.io.BufferedInputStream; import java.io.BufferedOutputStream; impor ...

  9. [299]python实现批量解析PDF文件提取内容并写入到Excel中

    摘要:最近需要将一批PDF文件中的某些数据整理到Excel中,因为文件数量接近20w+,手动更新几乎不现实,于是就提取关键词和内容动手写了个Python小工具,以实现自动完成上述目标. 要求: 读取P ...

最新文章

  1. 无贡献、无创新、无思路,ML领域准博士求助:论文到底要怎么创新?
  2. 微软OCR两层优化提升自然场景下的文字识别精度(模式识别新研究)
  3. Classical Inheritance in JavaScript
  4. opengl加载显示3D模型ase类型文件
  5. SQL注入(SQL Injection)
  6. python定时任务是异步的吗_定时任务、异步任务
  7. 在类内定义成员函数、在类外定义成员函数、计算长方体的体积【C++面向对象编程类的使用经典案例】
  8. Linux之进程通信20160720
  9. Clean Code 笔记
  10. 【贪心 和 DP + 卖股票】LeetCode 122. Best Time to Buy and Sell Stock II
  11. python源码保护之cython
  12. cpu win10 安装yolo_Win10 超详细 0基础 搭建YOLOV5教程【环境搭建篇】
  13. SHP(shapefile)文件
  14. mac java开发如何_Macbook适合Java开发吗?
  15. 【求职】关于简历制作的心得
  16. Windows7双系统卸载Ubuntu
  17. 安卓手机如何投屏到电视上_手机如何投屏到电视上?小屏秒变大屏,追剧更享受!...
  18. 全加器高进位和低进位的理解
  19. 学习没有动力的解决方法
  20. 三分法解决假币问题(JAVA)

热门文章

  1. pytorch 加速_微软通过DeepSpeed加速PyTorch
  2. TPU编程竞赛系列|算能赛道冠军SO-FAST团队获第十届CCF BDCI总决赛特等奖!
  3. mysql发生系统错误 1067 查看服务日志Aborting
  4. 渲染单色_单色设计红色
  5. pageable设置size_Spring的Pageable分页剖析
  6. UE4 nDisplay 使用Switchboard投屏失败原因
  7. 计算节点nova服务启动失败
  8. 单片机双字节数乘法运算实验_基于单片机指纹电子密码锁——硬件设计2
  9. 小学生寒假作息时间表及心田花开语文学习规划方案
  10. fractal 分形维数 盒子维 纹理特征