问题背景:

有时候需要用到pdf文件中的信息,但是pdf不易编辑,格式有局限性,需要转成txt这样的格式。

目标:

将给定pdf文件中的文本信息(暂时不考虑表格、图片等)抽取出来,写入txt文件中。

主要工具:

python的pdfminer3k库(pdfminer的python3端口,pdfminer是一个用于从文档中提取信息的工具)

代码:

import importlib
import sys
import timefrom pdfminer.pdfparser import PDFParser, PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LTTextBoxHorizontal, LAParams
from pdfminer.pdfinterp import PDFTextExtractionNotAllowedimportlib.reload(sys)
time1 = time.time()def parse(pdf_path, txt_path):# 解析PDF文本,并保存到TXT文件中fp = open(pdf_path, 'rb')# 用文件对象创建一个PDF文档分析器parser = PDFParser(fp)# 创建一个PDF文档doc = PDFDocument()# 连接分析器,与文档对象parser.set_document(doc)doc.set_parser(parser)# 提供初始化密码,如果没有密码,就创建一个空的字符串doc.initialize()# 检测文档是否提供txt转换,不提供就忽略if not doc.is_extractable:raise PDFTextExtractionNotAllowedelse:# 创建PDF,资源管理器,来共享资源rsrcmgr = PDFResourceManager()# 创建一个PDF设备对象laparams = LAParams()device = PDFPageAggregator(rsrcmgr, laparams=laparams)# 创建一个PDF解释器对象interpreter = PDFPageInterpreter(rsrcmgr, device)# 循环遍历列表,每次处理一个page内容# doc.get_pages() 获取page列表for page in doc.get_pages():interpreter.process_page(page)# 接受该页面的LTPage对象layout = device.get_result()# 这里layout是一个LTPage对象 里面存放着 这个page解析出的各种对象# 一般包括LTTextBox, LTFigure, LTImage, LTTextBoxHorizontal 等等# 想要获取文本就获得对象的text属性,for x in layout:if (isinstance(x, LTTextBoxHorizontal)):with open(txt_path, 'a+', encoding='utf-8') as f:results = x.get_text()print(results)f.write(results + "\n")if __name__ == '__main__':pdf_path = './test.pdf'txt_path = './test.txt'parse(pdf_path, txt_path)time2 = time.time()print("总共消耗时间为:", time2 - time1)

分析:

本例只是实现将pdf转txt,也只是抽取了其中的文本信息,其实可以进一步抽取出表格和图片信息,也可以引入python-docx这个库来实现将pdf转为word文件,希望感兴趣的朋友可以探索一下。

分享一个用python实现将pdf转txt的代码相关推荐

  1. 用python爬小说_今天分享一个用Python来爬取小说的小脚本!(附源码)

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章天气预报数据分析与统计之美 ,作者:❦大头雪糕❦ Python GUI制作小说下载器教学讲 ...

  2. Python零基础学习 | 分享一个使用Python画出太极阴阳八卦图的代码

    大家好,我是王某人. 一.写在前面 前几天在Python技术交流群有个小伙伴分享一个使用Python画出太极阴阳八卦图的代码,这里拿出来给大家分享下,一起学习下. 不过这里他的代码是有点问题的,不过不 ...

  3. python爬取天气预报数据并保存为txt格式_今天分享一个用Python来爬取小说的小脚本!(附源码)...

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章天气预报数据分析与统计之美 ,作者:❦大头雪糕❦ Python GUI制作小说下载器教学讲 ...

  4. 今天分享一个用Python来爬取小说的小脚本!(附源码)

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于大邓和他的Python ,作者:大邓 Python爬取知乎数据案例讲解视频 http ...

  5. 分享一个自学python神器

    很多小伙伴问如何学习Python,哪里可以找到实战的Python项目,有没有爬虫案例等等.今天给大家分享一份我朋友老表整理的Python大全学习资料(文末有获取方式). 老表是一名Python终身学习 ...

  6. 准备分享一个用python写自动抢鞋的程序

    为了提高人气,视关注程度,考虑分享一下之前做的一个自动抢鞋的代码,能够自动登录nike官网,支持多用户登录,实现多线程抢鞋的任务,再打印相应的结果.

  7. 分享一个免费好用的pdf转word工具

    微信搜索小程序"文件百变咖",就可以免费使用啦! 功能多!而且免费!!! 那么问题来了,怎么使用呢? 先微信搜索"文件百变咖",找到对应小程序打开. 如下图所示 ...

  8. python垃圾语言-分享一个用python写的window清理缓存垃圾小程序

    [Python] 纯文本查看 复制代码# coding: utf-8 import os import shutil del_extension = [".tmp", " ...

  9. 分享一个开源的JavaScript统计图表库,40行代码实现专业统计图表

    这可能是史上最简单易用的开源统计图表绘制库了.柱状图,饼状图,点状图等等您能想到的类型全部支持. 这个开源库的官网:http://www.chartjs.org/ 直接看如何只用40行代码就实现专业的 ...

最新文章

  1. linux -L -l区别,linux ls -l 详解[转]
  2. Python之父Guido推荐的命名规范
  3. 全栈必备Linux 基础
  4. linux内核4.0,新闻|Linux内核4.0功能:实时内核补丁,支持PS3
  5. flume 集群datanode节点失败导致hdfs写失败(转)
  6. 微软Visual Studio 2005快捷键文档
  7. 小程序获取头像试试水 02《 程序员变现指南之 微信QQ 小程序 真的零基础开发宝典》
  8. js文章QQ空间分享
  9. Snowflake如日中天是否代表Hadoop已死?大数据体系到底是什么?
  10. ELV局部视图与差分隐私【敏感度到底怎么理解】【下】
  11. APP界面设计的视觉思维!
  12. EF安装和更新数据库
  13. 【图像分割】基于matlab形态学重建和过滤改进FCM算法(FRFCM)图像分割【含Matlab源码 154期】
  14. Golang:后台管理系统Revel搭建教程
  15. Kali Linux教程(1)
  16. 计算机网络技术与应用张基温答案,计算机网络技术与应用教程张基温杜勇刘诗瑾廖伟国董兆军第3章接入技术课件教学.ppt...
  17. Android10+无法获取IMEI、IOS10+关闭广告跟踪IDFA解决方法
  18. 标准差分母是n和n-1的区别(有偏估计与无偏估计)
  19. Android URL scheme跳转失败(源码实现排查思路知识拓展)
  20. java gc 有钱人_小猿圈java之GC垃圾回收机制

热门文章

  1. windows系统关闭共享文件的三种方式
  2. 充电管理BQ25619使用
  3. 巧压 Qiaozip 一键卸载批处理程序
  4. itunes store切换账户_超详细获得免费iTunes Store帐户教程
  5. 使用Grunt实现资源自动化同步
  6. 部队体能训练计时系统
  7. 论文查重会涉及专利和文献吗?
  8. 关于智慧城市的中对智慧的理解
  9. Websocket:看完让你彻底搞懂Websocket原理 即时消息通讯
  10. airpod蓝牙耳机音量大解决办法_airpods怎么调节音量 这个方法很简单