# #-*- coding: UTF-8 -*-

# -*- coding:utf-8 -*-

##提取pdf文件中的文字

importtime,os.path,requests,re

time1=time.time()

frompdfminer.pdfinterp importPDFResourceManager, PDFPageInterpreter

frompdfminer.converter importPDFPageAggregator

frompdfminer.layout importLAParams,LTTextBoxHorizontal

frompdfminer.pdfpage importPDFTextExtractionNotAllowed,PDFPage

frompdfminer.pdfparser importPDFParser

frompdfminer.pdfdocument importPDFDocument

classCPdf2TxtManager():

defchangePdfToText(self, filePath):

# 以二进制读模式打开

file = open(path, 'rb')

#用文件对象来创建一个pdf文档分析器

praser = PDFParser(file)

# 创建一个PDF文档对象存储文档结构,提供密码初始化,没有就不用传该参数

doc = PDFDocument(praser, password='')

##检查文件是否允许文本提取

if notdoc.is_extractable:

raisePDFTextExtractionNotAllowed

# 创建PDf 资源管理器 来管理共享资源,#caching = False不缓存

rsrcmgr = PDFResourceManager(caching = False)

# 创建一个PDF设备对象

laparams = LAParams()

# 创建一个PDF页面聚合对象

device = PDFPageAggregator(rsrcmgr, laparams=laparams)

# 创建一个PDF解析器对象

interpreter = PDFPageInterpreter(rsrcmgr, device)

# 获得文档的目录(纲要),文档没有纲要会报错

#PDF文档没有目录时会报:raise PDFNoOutlines pdfminer.pdfdocument.PDFNoOutlines

# print(doc.get_outlines())

# 获取page列表

print(PDFPage.get_pages(doc))

# 循环遍历列表,每次处理一个page的内容

forpage inPDFPage.create_pages(doc):

interpreter.process_page(page)

# 接受该页面的LTPage对象

layout = device.get_result()

# 这里layout是一个LTPage对象 里面存放着 这个page解析出的各种对象

# 一般包括LTTextBox, LTFigure, LTImage, LTTextBoxHorizontal 等等

forx inlayout:

ifhasattr(x, "get_text"):

fileNames = os.path.splitext(filePath)

withopen(fileNames[0] + '.txt','a+') asf:

results = x.get_text()

print(results)

f.write(results + '\n')

# 如果x是水平文本对象的话

# if (isinstance(x, LTTextBoxHorizontal)):

# text = re.sub(replace, '', x.get_text())

# if len(text) != 0:

# print(text)

if__name__ == '__main__':

path = r'd:\tmp\c.pdf'

pdf2TxtManager = CPdf2TxtManager()

pdf2TxtManager.changePdfToText(path)

time2 = time.time()

print('ok,解析pdf结束!')

print('总共耗时:'+ str(time2 - time1) + 's')

# 方法2

# # -*- coding: utf-8 -*-

# from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter

# from pdfminer.converter import TextConverter

# from pdfminer.layout import LAParams

# from pdfminer.pdfpage import PDFPage

# import requests,os,re

# try:#python3

# from io import StringIO

# from urllib.request import urlopen

# except:#python2

# from urllib import urlopen

# from cStringIO import StringIO

#

#

# def convert_pdf_to_txt(path,save_name):

# if debug:

# # 加载内存的方式

# retstr = StringIO()

# fp = StringIO(path)

# else:

# #读取文件的方式

# retstr = open(path, 'rb')

# fp = open(path, 'rb')

# # 创建一个PDF资源管理器对象来存储共享资源,caching = False不缓存

# rsrcmgr = PDFResourceManager(caching=False)

# # 创建一个PDF设备对象

# laparams = LAParams()

# device = TextConverter(rsrcmgr, retstr, codec='utf-8', laparams=laparams)

# # 创建一个PDF解析器对象

# interpreter = PDFPageInterpreter(rsrcmgr, device)

# for page in PDFPage.get_pages(fp, pagenos=set(), maxpages=0, password='',caching=True, check_extractable=True):

# interpreter.process_page(page)

# fp.close()#关闭输入流

# device.close()#关闭输出流

# str = retstr.getvalue()

# retstr.close()

# try:

# with open("%s"%save_name,"w") as f:

# for i in str:

# f.write(i)

# print("%s Writing Succeed!"%save_name)

# except:

# print("Writing Failed!")

#

# if __name__ == '__main__':

# try:

# debug=True

# if debug:

# #这种方式暂时还有问题

# pdf_file = urlopen(url).read() # 也可以换成本地pdf文件,用open rb模式打开

# # pdf_file = requests.get(url).content

# # 加载内存的方式

# convert_pdf_to_txt(pdf_file, "123.txt")

# else:

# #读取文件的方式

# convert_pdf_to_txt('11.pdf',"123.txt")

# except Exception as e:

# import traceback

# ex_msg = '{exception}'.format(exception=traceback.format_exc())

# print(ex_msg)

python 读取pdf 两栏_python 读取pdf相关推荐

  1. chatgpt赋能python:Python如何分成两栏写入Word文档

    Python如何分成两栏写入Word文档 在进行文本排版时,有些时候我们需要将文字分成两栏来排版,这样可以让文章更加美观,易读. 本文将介绍一种使用Python将文本分成两栏写入Word文档的方法.在 ...

  2. python提取pdf发票信息_python读取pdf(发票)

    想读取文件夹*.pdf格式的发票并写入到excel当中,当然也可以写入txt(注释代码有) 详见下面代码,代码开头有参考的几篇文章的地址 一开始用的是pdfplumber,不好用,识别率不高,后来使用 ...

  3. python获取pdf页数_Python读取pdf页面的一部分

    假设您使用的是pdfminer和pypdf2,那么我假设所讨论的PDF文件是生成的PDF而不是扫描的(如您所给出的示例中所示).如果您知道以英寸为单位的列和行的大小,您可以使用^{}(完全公开:我写了 ...

  4. python读取配置文件失败原因_python读取配置文件报keyerror-文件路径不正确导致的错误...

    - 在其他模块使用反射读取配置文件报错,但是在反射模块中读取GetData.check_list又是正确的 反射模块如下: # get_data.py from API_AUTO.p2p_projec ...

  5. python数据处理pdf百度云_Python数据处理 PDF 高清版

    给大家带来的一篇关于Python相关的电子书资源,介绍了关于Python.数据.处理方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小12.0 MB,杰奎琳·凯泽尔编写,目前豆瓣.亚马逊. ...

  6. python合并pdf 加书签_Python生成pdf目录书签的实例方法

    有时候我们用的一些pdf资料是没有目录的,这样找寻我们想到的东西比较麻烦.本篇文章就为大家带来python来生成pdf目录书签的方法. 首先,我们需要下载一个软件FreePic2Pdf,利用它我们可以 ...

  7. python读取ini文件编码格式_Python读取txt(.ini)文件BOM问题

    2018-06-13   11:20:40 在windows上使用open打开utf-8编码的txt文件时开头会有一个多余的字符,它叫BOM,是用来声明编码等信息的,但python会把它当作文本解析 ...

  8. python区域找图命令_python读取图片任意范围区域

    使用python进行图片处理,现在需要读出图片的任意一块区域,并将其转化为一维数组,方便后续卷积操作的使用. 下面使用两种方法进行处理: convert 函数 from PIL import Imag ...

  9. python从txt读取数据并画图_Python读取txt某几列绘图的方法

    晚上帮同学用Python脚本绘图,大概需求是读取一个txt文件的两列分别作为x和y的值,绘图即可,代码如下: #coding:utf-8 import numpy as np import matpl ...

最新文章

  1. tr的display属性出现td的colspan无效问题
  2. 实录分享 | 计算未来轻沙龙:大规模数据存储与挖掘(PPT下载)
  3. 【转】C++中如何区分构造函数与重载operator()得到的仿函数?
  4. 二叉搜索树(BST树)的简单实现
  5. mitmproxy抓包 | Python实时生成接口自动化用例
  6. 计算图是个什么东西?一大堆的函数用法笔记
  7. 3-37Pytorch与torchvision
  8. Android SQL语句实现数据库的增删改查
  9. 一个搜索迷宫出路的程序
  10. 剑指offer面试题[16]-反转链表
  11. 低延时互动直播双十一优惠活动
  12. tp3.2.3 命令模式
  13. Microsoft Visio Pro 2016产品密钥破解完整免费下载
  14. 博弈论(四)——#10246. 「一本通 6.7 练习 3」取石子
  15. 均匀分布的期望和方差的推导_均匀分布的数学期望与方差 常见分布的数学期望和方差...
  16. 福州铁通DNS是多少
  17. Racket编程指南——13 类和对象
  18. CVPR2020论文分方向整理之检测篇_3D目标检测(代码/论文解读/136篇打包下载)
  19. Python基于php+MySQL的英语四六级在线报名平台
  20. 太赞了!微软《dotnet中文手册》火了,完整PDF开放下载!

热门文章

  1. 如何向父母解释什么是爬虫?
  2. 想换行做 5G 的开发者到底该咋办?
  3. 华为三星折叠手机可看不可摸;小米架构再调整;杨幂 AI 换脸视频制作者回应 | 极客头条...
  4. 程序员如何淡定度过 2.14 情人节?
  5. 并发编程应用场景_linux网络编程之select函数的并发限制和poll函数应用举例
  6. mt6735通用recovery_MTK65XX通用线刷刷机工具驱动-MTK65xx刷机工具驱动及教程下载最新免费版-西西软件下载...
  7. oracle执行plus时跳出,oracle – 从shell脚本运行sqlplus时管理错误处理
  8. 信签纸有虚线怎么写_edm邮件营销,专注解决你的开发信难题
  9. python websocket库有什么_常用Python爬虫与Web开发库有哪些?
  10. linux tar压缩权限,LINUX 文件/组/帮助/权限/文件压缩/管道