python解析pdf中文乱码_解析PDF文件以及解决编码问题
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 os
path=''
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文本档分析器:PDFParser
parser=PDFParser(fn)
#创建一个PDF文档:PDFDocumeng
doc=PDFDocument()
#链接分析器与文档
parser.set_document(doc)
doc.set_parser(parser)
#提供出事话的密码,如果没有密码,输入空字符串
doc.initialize('')
#检测文档是否提供txt转换,不提供就直接忽略
if not doc.is_extractable:
print('PDFTextExtractionNotAllowed')
else:
#创建PDF资源管理器:PDFResourceManager
resource=PDFResourceManager()
#创建一个PDF参数分析器:;AParams
laparams=LAParams()
#创建聚合器,用于读取文档的对象:PDFPageAggregator
device=PDFPageAggregator(resource,laparams=laparams)
#创建解释器,对文档编码,解释成python能够识别的格式:PDFPageInterpreter
interpreter=PDFPageInterpreter(resource,device)
#doc.get_pages()是获取page列表的一个方法
num_page,num_image,num_Text=0,0,0
for 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+=1
print(type(out.get_text()))
pdf_str+=out.get_text().strip()
if isinstance(out,LTImage):
num_image+=1
print(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
着说明编码问题已经解决了,现在需要的解码。同样的在上面的链接找到图片中相应解码包,这里需要的就是
再以同样的方法保存到同样的位置就可以了。然后就完美的输出文本了。
python解析pdf中文乱码_解析PDF文件以及解决编码问题相关推荐
- python 折线图中文乱码_彻底解决 Python画图中文乱码问题--Pyplotz组件
1 源起 自从开始学习Python,就非常喜欢用来画图.一直没有需求画要中文显示信息的图,所以没有配置Python中文的环境.由于昨天就需要画几十个形式相同,只是数据不同的图,并且需要显示中文信息.如 ...
- python画图显示中文乱码_解决Python pandas plot输出图形中显示中文乱码问题
解决方式一: import matplotlib #1. 获取matplotlibrc文件所在路径 matplotlib.matplotlib_fname() #Out[3]: u'd:\\Anaco ...
- java txt中文乱码,JAVA读取TXT文件 可解决中文乱码问题
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.I ...
- python解析pdf中文乱码_使用Python第三方库pdfminer提取PDF内容,并解决中文编码不支持的问题...
这两天刚好完成一个提取人行简版征信报告PDF所有数据的小项目,中间踩了很多坑,尤其是对于汉字编码问题度娘也不太灵.为了方便后人,在这里记录下在这个过程中我遇到的问题以及我的解决方法. 我用的是mac系 ...
- 处理中文乱码_为什么PDF转换成Word后是乱码?这种PDF要怎么转换?
你是否也遇到过将PDF转换成Word后,却只是一堆乱码?为什么会出现这种情况呢?要如何解决PDF转Word却是乱码的这个问题呢? 首先我们来分析下PDF转换Word后为什么会出现乱码,其实归根究底都是 ...
- python中字符串中文乱码_[python] 中文乱码问题
乱码产生的原因 乱码产生的根本原因是字节流转换字符前后不一致导致.只要掌握了这个核心,就能解决乱码问题.python2中使用了一些"trick"(没有区分字符和字节流),所以理解起 ...
- java pdf中文乱码_java转pdf(html转为pdf),解决中文乱码,标签不规范等问题
第一步,下载jar包以及建对应的文件夹.注意pd4ml的jar要选择pro版本.然后建一个pd4fonts.properties 里面对应的字体. SimSun = simsun.ttf 前面为变量名 ...
- java pdf中文乱码_java生成pdf以及解决中文中文乱码问题
itext版本:5.4.0 其中extrajars中有支持中文的itext-asian.jar. 像工程中导入itextpdf-5.4.0以及itext-asian.jar即可支持中文. 示例代码如下 ...
- 高德数据化可视平台数据上传后中文乱码解决方案之一---保证文件为UTF-8编码
遇到的问题 在数据预览界面发现中文列出现了乱码,如下图红框所示.重新上传多次后依旧乱码 分析 打开上传数据常见问题界面,发现上传要求里写着需保证为UTF-8编码,我查看我上传源文件编码格式,发现的确不 ...
最新文章
- 你想知道的关于JavaScript作用域的一切(译)
- 34/100. Top K Frequent Elements
- java spark yarn_《Spark官方文档》在YARN上运行Spark
- citrix web Interface5.3 访问WEB网站时,下载本地客户端
- 在linux中关于组的命令,linux 用户和组管理相关的命令
- jwt和传统session的区别?
- 在IBM AIX p750小机上为Oracle扩展逻辑卷-视频分享
- 初秋最佳运动蓝牙耳机推荐,100-500这几款防水蓝牙耳机可以试试
- MYSQL实现排序分组取第一条sql
- 短信验证码(SMS verification)是什么
- 台式计算机如何扫描文件,打印机怎么扫描,教您打印机怎么扫描文件
- Gentoo 教程:编译器选择
- mysql数据库断开连接_mysql 数据库断开连接
- 新IT引领新经济 新华三惠州云博会展现“云”魅力
- 谈谈 2020 年程序员收入报告
- 【调剂】中科院上海微系统与信息技术研究所2022年接收调剂生的通知
- unity游戏开发知识检测
- WIndow强制删除文件或文件夹
- JXplorer 的简单使用
- python邮件发送和正则表达式(1)