Python提取PDF内容的方法(文本、图像、线条等)


Posted in Python onSeptember 25, 2019

1.安装PDFminer3k

使用pip 命令安装

pip install pdfminer3k

2.编写测试

你可以在这里获得官方参考:PDFMiner

如果你不喜欢看英文的官方文档,这里的翻译也许对你有帮助:中文PDFMiner文档

下面的程序,我拓展了官方给出的例子,你可以通过这个例子统计出来你的pdf文件一共包含哪些内容,比如文本框,曲线,图片等

#!/usr/bin/python
# -*- coding: utf-8 -*-

__author__ = 'yooongchun'

import sys
import importlib
importlib.reload(sys)

from pdfminer.pdfparser import PDFParser,PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import *
from pdfminer.pdfinterp import PDFTextExtractionNotAllowed

'''
解析pdf文件,获取文件中包含的各种对象
'''


# 解析pdf文件函数
def parse(pdf_path):
  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 PDFTextExtractionNotAllowed
  else:
    # 创建PDf 资源管理器 来管理共享资源
    rsrcmgr = PDFResourceManager()
    # 创建一个PDF设备对象
    laparams = LAParams()
    device = PDFPageAggregator(rsrcmgr, laparams=laparams)
    # 创建一个PDF解释器对象
    interpreter = PDFPageInterpreter(rsrcmgr, device)

    # 用来计数页面,图片,曲线,figure,水平文本框等对象的数量
    num_page, num_image, num_curve, num_figure, num_TextBoxHorizontal = 0, 0, 0, 0, 0

    # 循环遍历列表,每次处理一个page的内容
    for page in doc.get_pages(): # doc.get_pages() 获取page列表
      num_page += 1 # 页面增一
      interpreter.process_page(page)
      # 接受该页面的LTPage对象
      layout = device.get_result()
      for x in layout:
        if isinstance(x,LTImage): # 图片对象
          num_image += 1
        if isinstance(x,LTCurve): # 曲线对象
          num_curve += 1
        if isinstance(x,LTFigure): # figure对象
          num_figure += 1
        if isinstance(x, LTTextBoxHorizontal): # 获取文本内容
          num_TextBoxHorizontal += 1 # 水平文本框对象增一
          # 保存文本内容
          with open(r'test.txt', 'a') as f:
            results = x.get_text()
            f.write(results + '\n')
    print('对象数量:\n','页面数:%s\n'%num_page,'图片数:%s\n'%num_image,'曲线数:%s\n'%num_curve,'水平文本框:%s\n'
       %num_TextBoxHorizontal)


if __name__ == '__main__':
  pdf_path = r'C:\Users\fanyu\Desktop\pdf\test.pdf'
  parse(pdf_path)

其实在上面的layout 对象中有更多的内容可提取,这个自己按需来写就好,然后对曲线,文本框等对象,都会有位置属性,可直接获取,自己debug 查看以下对象属性获取即可。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现博客文章爬虫示例
Feb 26 Python
python制作爬虫并将抓取结果保存到excel中
Apr 06 Python
python版本的读写锁操作方法
Apr 25 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
Apr 18 Python
利用Python库Scapy解析pcap文件的方法
Jul 23 Python
python实现修改固定模式的字符串内容操作示例
Dec 30 Python
基于torch.where和布尔索引的速度比较
Jan 02 Python
python3连接mysql获取ansible动态inventory脚本
Jan 19 Python
python识别验证码图片实例详解
Feb 17 Python
sublime3之内网安装python插件Anaconda的流程
Nov 10 Python
pytorch损失反向传播后梯度为none的问题
May 12 Python
pandas数值排序的实现实例
Jul 25 Python
python使用 request 发送表单数据操作示例
Sep 25 #Python
Python实现PyPDF2处理PDF文件的方法示例
Sep 25 #Python
python mqtt 客户端的实现代码实例
Sep 25 #Python
python实现的登录与提交表单数据功能示例
Sep 25 #Python
python 利用pyttsx3文字转语音过程详解
Sep 25 #Python
python retrying模块的使用方法详解
Sep 25 #Python
Python 实现一个手机号码获取妹子名字的功能
Sep 25 #Python
You might like
thinkphp中memcache的用法实例
2014/11/29 PHP
PHP制作百度词典查词采集器
2015/01/29 PHP
Javascript-Mozilla和IE中的一个函数直接量的问题分析
2007/08/12 Javascript
jQuery 第二课 操作包装集元素代码
2010/03/14 Javascript
jQuery函数的等价原生函数代码示例
2013/05/27 Javascript
js获取图片宽高的方法
2015/11/25 Javascript
基于jquery实现简单的分页控件
2016/03/17 Javascript
JavaScript使用forEach()与jQuery使用each遍历数组时return false 的区别
2016/08/26 Javascript
Angularjs 制作购物车功能实例代码
2016/09/14 Javascript
用js实现简单算法的实例代码
2016/09/24 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
2016/11/30 Javascript
AngularJS ng-repeat指令及Ajax的应用实例分析
2017/07/06 Javascript
基于JavaScript实现无限加载瀑布流
2017/07/21 Javascript
bootstrap datetimepicker控件位置异常的解决方法
2017/11/23 Javascript
详解Webpack loader 之 file-loader
2018/11/07 Javascript
详解用JS添加和删除class类名
2019/03/25 Javascript
Vue批量图片显示时遇到的路径被解析问题
2019/03/28 Javascript
用Python编写一个简单的俄罗斯方块游戏的教程
2015/04/03 Python
python实现类的静态变量用法实例
2015/05/08 Python
python基于BeautifulSoup实现抓取网页指定内容的方法
2015/07/09 Python
详解在Python程序中解析并修改XML内容的方法
2015/11/16 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
2019/09/16 Python
python等差数列求和公式前 100 项的和实例
2020/02/25 Python
HTML5对比HTML4的主要改变和改进总结
2016/05/27 HTML / CSS
理肤泉美国官网:La Roche-Posay
2018/01/17 全球购物
美国女士时尚珠宝及配饰购物网站:Icing
2018/07/02 全球购物
SAZAC的动物连体衣和动物睡衣:Kigurumi Shop
2020/03/14 全球购物
4s店机修工岗位职责
2013/12/20 职场文书
销售主管竞聘书
2014/03/31 职场文书
贷款担保申请书
2014/05/20 职场文书
2014年化工厂工作总结
2014/11/25 职场文书
员工升职自荐信
2015/03/27 职场文书
原料仓管员岗位职责
2015/04/01 职场文书
学校少先队工作总结
2015/08/12 职场文书
导游词之苏州寒山寺
2019/12/05 职场文书
星际争霸 Light vs Action 一场把教主看到鬼畜的比赛
2022/04/01 星际争霸