9行Python3代码实现批量提取PDF文件的指定内容

   2023-02-09 学习力0
核心提示:目录1、引言2、代码实战2.1 介绍2.2 安装2.3 实例3、总结1、引言小丝:鱼哥, 你有没有什么办法,提取PDF文档的内容。小鱼:这个还问我??小丝:哎呀,这个不是被难住了嘛 。小鱼:有啥难得?提示你一下,小丝:嗯,可以可以。小鱼:去我的博文找,没记错的

1、引言

小丝:鱼哥, 你有没有什么办法,提取PDF文档的内容。

小鱼:这个还问我??

小丝:哎呀,这个不是被难住了嘛 。

小鱼:有啥难得?提示你一下,

小丝:嗯,可以可以。

小鱼:去我的博文找,没记错的话,有两种方法提取pdf的文字。

小丝:好嘞, 我这就去…找找…

小丝:鱼哥,鱼哥~

小鱼:怎么样,你的这个需求,解决了吧。

小丝:没呢,我想批量提取指定PDF文档的内容…

小鱼:批…量…

小丝:对啊,是批量,

小鱼:这…还挺…

小丝:挺费劲吗?

小鱼:挺好的 ,不费劲, 一口气,上7楼…

小丝:打住… 说正事! !

小鱼:好嘞…

想到提取PDF文件的内容,我们第一反应就是pypdf,

因为pypdf这个库我在很多篇文章都介绍过, 还蛮好用的。

但是,今天,我们不使用pypdf,而是使用另一个库,即:pdfminer。

2、代码实战

2.1 介绍

pdfminer我相信很多同学都没听说过,除非,你经常提取/解析PDF文件的内容,否则,你对ta,只能是陌生。

其实,提取PDF文件内容解决方案,截止到现在, 只有pypdf 和pdfminer这两种。
所以, 如果你厌倦了, pypdf,那只能选择pdfminer了。

那什么是pdfminer 呢,或者 pdfminer有什么神奇之处呢?

定义

PDFMiner是用于从PDF文档提取信息的工具;

与其他PDF相关工具不同,它完全专注于获取和分析文本数据;

功能

PDFMiner允许获取页面中文本的确切位置以及其他信息,例如字体或线条;

它包括一个PDF转换器,可以将PDF文件转换为其他文本格式(例如HTML);

2.2 安装

由于pdfminer是python 的第三方库, 所以,需要安装,

老规矩, 直接pip 安装

安装

pip install pdfminer

安装完成:

9行Python3代码实现批量提取PDF文件的指定内容

因为我们需要用到 pdfminer的high_level 方法,所以

这里必须要在安装pdfminer.six模块,否则会报错:

安装

pip install pdfminer.six

安装完成:

9行Python3代码实现批量提取PDF文件的指定内容

其它安装方式,直接看这两篇:

《Python3,选择Python自动安装第三方库,从此跟pip说拜拜!!》

《Python3:我低调的只用一行代码,就导入Python所有库!》

2.3 实例

安装完成,我们就来写上代码,

我们先来捋顺一下思路,主要分3步:

1、遍历pdf文件

注:如果文件夹的文件多个,需要单独提取目标pdf文件,否则都会轮巡匹配,费事费力费资源;

2、提取pdf文档内容

3、根据正则匹配,提取需要的文档信息

我们就根据这个思路,来提取"企业基本情况",代码如下:

代码示例

# -*- coding:utf-8 -*-
# @Time   : 2022-11-30
# @Author : Carl_DJ


from pdfminer import high_level
import re,os

#pdf文件路径
#root:文件夹路径,dirs:文件夹下子目录名,files:文件夹下的文件
for root,dirs,files in os.walk('./data/'):
    #遍历pdf文件
    for f in files:
        file_name = os.path.join(root,f)
        if file_name.endswith('.pdf'):
            #提取整个 pdf 文本信息
            text = high_level.extract_text(file_name)
            #提取 pdf文档中 "企业进本情况:" 后面的信息,利用正则进行匹配
            regex = r'企业基本情况-(.*?)\n'
            qy_base = re.findall(regex,text)
            print(f'输出信息:{qy_base}')

pdf文件

9行Python3代码实现批量提取PDF文件的指定内容

运行结果

9行Python3代码实现批量提取PDF文件的指定内容

3、总结

看到这里,今天的分享,差不多就该结束了。

解析PDF是一件非常耗时和耗内存的工作,因此,pdfminer使用一种称作Lazy Parsing的策略,减少内耗…

小丝:怪不得, 提到批量提取pdf的文档内容, 你会犹豫了…

小鱼:对啊,因为我们的的测试文档内容很少,所以对内存的消耗相对来说没那么验证,当PDF文档的内容很多时, 就不得不使用pdfminer了。

原文地址:https://blog.csdn.net/wuyoudeyuer/article/details/128111719
 
标签: Python PDF 内容
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 如何在Abaqus的python中调用Matlab程序
    目录1. 确定版本信息2. 备份python3. 设置环境变量4. 安装程序5. 调试运行参考资料Abaqus2018操作系统Win10 64位Python版本2.7(路径C:\SIMULIA\CAE\2018\win_b64\tools\SMApy\python2.7)2. 备份python将上述的“python2.7”文件夹复制出来,避免因操作错误
    03-16
  • SICP:复数的直角和极坐标的表示(Python实现)
    SICP:复数的直角和极坐标的表示(Python实现)
    数据抽象屏障是控制复杂性的强有力工具,然而这种类型的数据抽象还不够强大有力。从一个另一个角度看,对于一个数据对象可能存在多种有用的表示方式,且我们希望所设计的系统能够处理多种表示形式。比如,复数就可以表示为两种几乎等价的形式:直角坐标形式(
    03-16
  • [个人发展] 我做了一个可以永远谈论任何事情的女士对话AI(TypeScript,Python)
    [个人发展] 我做了一个可以永远谈论任何事情的
    在个人发展中对话式人工智能服务 Eveki我做了虚构角色1这是一项以人工智能为特色的服务,可以再现并享受自然对话。这一次,作为第一个艾小姐发表了。请先尝试实物。服务概览与人工智能对话基本上只需输入您的信息是。对话是用女士的语言进行的,就像人类一样
    03-08
  • ruby写爬虫 ruby python
    ruby写爬虫 ruby python
    http://www.javaeye.com/topic/545160爬虫性能比较http://www.rubyrailways.com/data-extraction-for-web-20-screen-scraping-in-rubyrails/srcapihttp://huacnlee.com/blog/ruby-scrapi-collect-koubei  2009年4月22日 星期三用ruby写的一个网络爬虫程序前
    03-08
  • sf02_选择排序算法Java Python rust 实现
    Java 实现package common;public class SimpleArithmetic {/** * 选择排序 * 输入整形数组:a[n] 【4、5、3、7】 * 1. 取数组编号为i(i属于[0 , n-2])的数组值 a[i],即第一重循环 * 2. 假定a[i]为数组a[k](k属于[i,n-1])中的最小值a[min],即执行初始化 min =i
    02-09
  • Python vs Ruby: 谁是最好的 web 开发语言?
    Python 和 Ruby 都是目前用来开发 websites、web-based apps 和 web services 的流行编程语言之一。 这两种语言在许多方面有相似之处。它们都是高级的面向对象的编程语言,都是交互式脚本语言、都提供标准库且支持持久化。但是,Python 和 Ruby 的解决方法却
    02-09
  • 详解Python手写数字识别模型的构建与使用
    详解Python手写数字识别模型的构建与使用
    目录一:手写数字模型构建与保存1 加载数据集2 特征数据 标签数据3 训练集 测试集4 数据流图 输入层5 隐藏层6 损失函数7 梯度下降算法8 输出损失值 9 模型 保存与使用10 完整源码分享二:手写数字模型使用与测试一:手写数字模型构建与保存1 加载数据集# 1加
  • Python asyncore socket客户端实现方法详解
    Python asyncore socket客户端实现方法详解
    目录介绍1.定义类并且继承 asyncore.dispatcher2.实现类中的回调代码调用父类方法创建socket对象连接服务器3.创建对象并且执行asyncore.loop进入运行循环服务端示例代码运行结果注意介绍asyncore库是python的一个标准库,提供了以异步的方式写入套接字服务的
  • Python+Sklearn实现异常检测
    目录离群检测 与 新奇检测Sklearn 中支持的方法孤立森林 IsolationForestLocal Outlier FactorOneClassSVMElliptic Envelope离群检测 与 新奇检测很多应用场景都需要能够确定样本是否属于与现有的分布,或者应该被视为不同的分布。离群检测(Outlier detectio
  • Python基础教程之while循环用法讲解 Python中的while循环
    Python基础教程之while循环用法讲解 Python中的
    目录1.while 循环2.无限循环3、while 循环使用 else 语句4、简单语句组附小练习:总结1.while 循环Python 中 while 语句的一般形式:while 判断条件(condition):    执行语句(statements)……执行流程图如下:同样需要注意冒号和缩进。另外,在 Python 中
点击排行