Python3,区区9行代码批量提取PDF文件的指定内容,我被震惊了....

简介: 有了此方法,再也不需要手抄PDF文档了。

1、引言

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

小鱼:这个还问我??

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

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

小屌丝:嗯,可以可以。

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

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

2000.jpg

小屌丝:鱼哥,鱼哥~

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

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

小鱼:批…量…

小屌丝:对啊,是批量,

小鱼:这…还挺…

小屌丝:挺费劲吗?

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

小屌丝:打住… 说正事! !

小鱼:好嘞…


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

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

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

sa.png


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 安装

安装


pipinstallpdfminer


安装完成

image.png


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

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


安装

pipinstallpdfminer.six


安装完成

image.png


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


2.3 实例

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

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


  • 1、遍历pdf文件

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

  • 2、提取pdf文档内容
  • 3、根据正则匹配,提取需要的文档信息

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


代码示例

# -*- coding:utf-8 -*-# @Time   : 2022-12-10# @Author : Carl_DJfrompdfminerimporthigh_levelimportre,os#pdf文件路径#root:文件夹路径,dirs:文件夹下子目录名,files:文件夹下的文件forroot,dirs,filesinos.walk('./data/'):
#遍历pdf文件forfinfiles:
file_name=os.path.join(root,f)
iffile_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文件

image.png

运行结果

61.png


3、总结

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

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

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

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


并且, 关于pdf文档的内容提取,我们能多学习几个技能,就多学习几个技能。


技能多了,路就多了,最后,收入也就多了


我是小鱼


  • CSDN 博客专家;
  • 阿里云社区 专家博主;
  • 51CTO博客 专家博主&TOP红人
  • 51认证讲师;
  • 金牌面试官;


关注我,带你学习更多更有趣的Python知识。


目录
打赏
0
3
1
0
2528
分享
相关文章
解锁文件共享软件背后基于 Python 的二叉搜索树算法密码
文件共享软件在数字化时代扮演着连接全球用户、促进知识与数据交流的重要角色。二叉搜索树作为一种高效的数据结构,通过有序存储和快速检索文件,极大提升了文件共享平台的性能。它依据文件名或时间戳等关键属性排序,支持高效插入、删除和查找操作,显著优化用户体验。本文还展示了用Python实现的简单二叉搜索树代码,帮助理解其工作原理,并展望了该算法在分布式计算和机器学习领域的未来应用前景。
|
13天前
|
使用Python实现multipart/form-data文件接收的http服务器
至此,使用Python实现一个可以接收 'multipart/form-data' 文件的HTTP服务器的步骤就讲解完毕了。希望通过我的讲解,你可以更好地理解其中的逻辑,另外,你也可以尝试在实际项目中运用这方面的知识。
110 69
Python + 腾讯云,多页PDF发票识别一键搞定!
程序员晚枫团队推出了基于Python和腾讯云的多页PDF发票识别功能!通过一行代码即可实现整本PDF发票的高效识别,并直接导出为Excel文件,极大提升工作效率。此次更新修复了仅识别第一页的bug,支持多页PDF完整识别。未来还将拓展更多票据类型、优化速度并加强平台合作。欢迎用户体验并提出建议,共同推动开源项目poocr的成长与进化!
探秘文件共享服务之哈希表助力 Python 算法实现
在数字化时代,文件共享服务不可或缺。哈希表(散列表)通过键值对存储数据,利用哈希函数将键映射到特定位置,极大提升文件上传、下载和搜索效率。例如,在大型文件共享平台中,文件名等信息作为键,物理地址作为值存入哈希表,用户检索时快速定位文件,减少遍历时间。此外,哈希表还用于文件一致性校验,确保传输文件未被篡改。以Python代码示例展示基于哈希表的文件索引实现,模拟文件共享服务的文件索引构建与检索功能。哈希表及其分布式变体如一致性哈希算法,保障文件均匀分布和负载均衡,持续优化文件共享服务性能。
OCRmyPDF:16.5K Star!快速将 PDF 文件转换为可搜索、可复制的文档的命令行工具
OCRmyPDF 是一款开源命令行工具,专为将扫描的 PDF 文件转换为可搜索、可复制的文档。支持多语言、图像优化和多核处理。
426 17
OCRmyPDF:16.5K Star!快速将 PDF 文件转换为可搜索、可复制的文档的命令行工具
【全自动改PDF名】批量OCR识别提取PDF自定义指定区域内容保存到 Excel 以及根据PDF文件内容的标题来批量重命名
学校和教育机构常需处理成绩单、报名表等PDF文件。通过OCR技术,可自动提取学生信息并录入Excel,便于统计分析和存档管理。本文介绍使用阿里云服务实现批量OCR识别、内容提取、重命名及导出表格的完整步骤,包括开通相关服务、编写代码、部署函数计算和设置自动化触发器等。提供Python示例代码和详细操作指南,帮助用户高效处理PDF文件。 链接: - 百度网盘:[链接](https://pan.baidu.com/s/1mWsg7mDZq2pZ8xdKzdn5Hg?pwd=8866) - 腾讯网盘:[链接](https://share.weiyun.com/a77jklXK)
179 5
【图片型PDF】批量识别扫描件PDF指定区域局部位置内容,将识别内容导出Excel表格或批量改名文件,基于阿里云OCR对图片型PDF识别改名案例实现
在医疗和政务等领域,图片型PDF文件(如病历、报告、公文扫描件)的处理需求广泛。通过OCR技术识别这些文件中的文字信息,提取关键内容并保存为表格,极大提高了信息管理和利用效率。本文介绍一款工具——咕嘎批量OCR系统,帮助用户快速处理图片型PDF文件,支持区域识别、内容提取、导出表格及批量改名等功能。下载工具后,按步骤选择处理模式、进行区域采样、批量处理文件,几分钟内即可高效完成数百个文件的处理。
237 8
Zerox:AI驱动的万能OCR工具,精准识别复杂布局并输出Markdown格式,支持PDF、DOCX、图片等多种文件格式
Zerox 是一款开源的本地化高精度OCR工具,基于GPT-4o-mini模型,支持PDF、DOCX、图片等多种格式文件,能够零样本识别复杂布局文档,输出Markdown格式结果。
288 4
Zerox:AI驱动的万能OCR工具,精准识别复杂布局并输出Markdown格式,支持PDF、DOCX、图片等多种文件格式
Python中的Paramiko与FTP文件夹及文件检测技巧
通过使用 Paramiko 和 FTP 库,开发者可以方便地检测远程服务器上的文件和文件夹是否存在。Paramiko 提供了通过 SSH 协议进行远程文件管理的能力,而 `ftplib` 则提供了通过 FTP 协议进行文件传输和管理的功能。通过理解和应用这些工具,您可以更加高效地管理和监控远程服务器上的文件系统。
81 20
如何在Python中高效地读写大型文件?
大家好,我是V哥。上一篇介绍了Python文件读写操作,今天聊聊如何高效处理大型文件。主要方法包括:逐行读取、分块读取、内存映射(mmap)、pandas分块处理CSV、numpy处理二进制文件、itertools迭代处理及linecache逐行读取。这些方法能有效节省内存,提升效率。关注威哥爱编程,学习更多Python技巧。
118 8

热门文章

最新文章