利用Python提取PDF文件中的文本信息
如何利用Python提取PDF文件中的文本信息
日常工作中我们经常会用到pdf格式的文件,大多数情况下是浏览或者编辑pdf信息,但有时候需要提取pdf中的文本,如果是单个文件的话还可以通过复制粘贴来直接将文本信息复制出来,但如果是要提取成本上千个pdf文件中的文本信息,有没有什么比较快捷的方式可以实现自动化提取呢?作为一个python爱好者,答案当然是想办法通过python代码实现pdf文本信息的批量自动化提取,这里介绍以下五个pdf操作库:PyPDF2, Textract, tika, pdfPlumber, pdfMiner,本文主要参考这个博客撰写而成:How to Extract Text from PDF
一、PyPDF2
推荐程度:★★★
pypi官网地址:PyPDF2
安装方法:pip install PyPDF2
工具包简介:
- 可以提取pdf内文档信息(标题、作者、…)
- 可以分割、合并pdf
- 可以对pdf文件进行加密或解密
- …
这个库的优点是安装简便,但是虽然可以准确提取出文件内的文本信息,但会把一行文本内的每个单词打断成多行,甚至把完整的单词也切割开来,识别精度不是很高。
代码示例:
import PyPDF2
fhandle = open(r'D:\examplepdf.pdf', 'rb')
pdfReader = PyPDF2.PdfFileReader(fhandle)
pagehandle = pdfReader.getPage(0)
print(pagehandle.extractText())
二、textract
推荐程度:不推荐
pypi官网地址:textract
安装方法:pip install textract
工具包简介:
- 可以轻松提取提取任何文档中的文字
虽然官方号称可以轻松提取任何文件的文本信息,但经过实测,目前这个库存在严重的bug,在python3.7环境下提取任何pdf文件都会报错。
代码示例:
# some python file
import textract
text = textract.process("path/to/file.extension")
三、Apache Tika
推荐程度:★★
pypi官网地址:tika
安装方法:pip install tika
工具包简介:
- Apache Tika库的Python端口
- 由于tika-python会在后台启动tika rest服务器,系统需安装Java 7+ 版本才能正常使用这个库
这个库最大的问题是需要依赖Java环境使用,配置比较麻烦,并且即使配置好环境,还是有可能没法获得文本解析结果。
代码示例:
from tika import parserfile = "D:\\440000201900BD8P6M.pdf"file_data = parser.from_file(file)text = file_data['content']print(text)
四、pdfPlumber
推荐程度:★★★★★
pypi官网地址:pdfPlumber
安装方法:pip install pdfplumber
工具包简介:
- 可以为pdf文件插入文本字符、矩形和行的详细信息
- 对于非扫描格式pdf解析效果最佳
- 基于pdfminer.six构建
这个库安装简单,不容易出幺蛾子,使用方式也简单明了,pdf文本提取精度非常高,强烈推荐!!!
代码示例:
import pdfplumber
with pdfplumber.open(r'D:\examplepdf.pdf') as pdf:first_page = pdf.pages[0]print(first_page.extract_text())
五、pdfminer
推荐程度:★★★★
pypi官网地址:pdfminer
安装方法:pip install pdfplumber
工具包简介:
- 支持 PDF-1.7
- 可以获取文本的提取位置以及其他布局信息
- 可将pdf转换为其他格式(HTML/XML)
- 支持基本的加密方式(RC4 and AES)
- 支持多种字体类型(Type1, TrueType, Type3, and CID)
官方说明很详细,但是使用起来略微有些复杂,需要仔细看示例代码才好上手,不过文本提取精度也相当不错!
代码示例:
from pdfminer3.layout import LAParams, LTTextBox
from pdfminer3.pdfpage import PDFPage
from pdfminer3.pdfinterp import PDFResourceManager
from pdfminer3.pdfinterp import PDFPageInterpreter
from pdfminer3.converter import PDFPageAggregator
from pdfminer3.converter import TextConverter
import ioresource_manager = PDFResourceManager()
fake_file_handle = io.StringIO()
converter = TextConverter(resource_manager, fake_file_handle, laparams=LAParams())
page_interpreter = PDFPageInterpreter(resource_manager, converter)with open('/path/to/file.pdf', 'rb') as fh:for page in PDFPage.get_pages(fh,caching=True,check_extractable=True):page_interpreter.process_page(page)text = fake_file_handle.getvalue()# close open handles
converter.close()
fake_file_handle.close()print(text)
总结
当前用于解析操作pdf的python包已经有相当之多,本文只是列出了其中比较有代表性的五种,在实际使用中首推pdfPlumber,安装简便,上手也比较容易,其次是pdfminer,虽然学习成本高一点,但pdf操作功能相当齐全。总之,只要能较为熟练的掌握其中一种工具包,在某些需要操作大量pdf的情况下,应该可以极大提升工作效率。
利用Python提取PDF文件中的文本信息相关推荐
- itextsharp 获取文本_利用iTextSharp提取PDF文件中的文本内容
最近测试中需要对比两个PDF文件的内容,当然只是文字没有图表的,但是没有现成的工具可用.于是我的想法是先把PDF转换为Text,然后再对比Text的内容.现在问题的关键变成了如何提取PDF中的文本,在 ...
- 提取PDF文件中的文本信息
转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/43527755 我们从网上下载的PDF文件有的是加密处理过的,无法复制其中的内容, ...
- Python使用pdfminer3k提取PDF文件中的文本
推荐教材: <Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),董付国,清华大学出版社,2020年6月第1次印刷,2021年12月第11次印刷,山东省一流 ...
- Python提取PDF文件中的表格文本保存为Excel文件
"Python小屋"编程比赛正式开始 推荐图书: <Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),董付国,清华大学出版社,2020 ...
- pdf exe如何提取pdf文件_python应用:如何用python提取pdf文件中的文字
从pdf中提取文字,相信很多人都干过这事,怎么在python中实现呢,今天带大家看看. 第一步导入库 import PyPDF2 第二步导入pdf文件 pdf_file =open('dataset/ ...
- python 提取pdf表格_用Python提取pdf文件中的表格数据
本文作者:杨慧琳 本文编辑:周聪聪 技术总编:张学人有问题,不要怕!访问 http://www.wuhanstring.com/uploads/5_aboutus/爬虫俱乐部-用户问题登记表.docx ...
- Python批量提取PDF文件中的文本
首先需要执行命令pip install pdfminer3k来安装处理PDF文件的扩展库. import os import sys import time pdfs = (pdfs for pdfs ...
- python提取pdf文件内容_如何用Python批量提取PDF文本内容?
本文为你展示,如何用Python把许多PDF文件的文本内容批量提取出来,并且整理存储到数据框中,以便于后续的数据分析. 问题 最近,读者们在后台的留言,愈发五花八门了. 写了几篇关于自然语言处理的文章 ...
- python批量提取pdf的数据_Python批量提取PDF文件中文本的脚本
本文实例为大家分享了Python批量提取PDF文件中文本的具体代码,供大家参考,具体内容如下 首先需要执行命令pip install pdfminer3k来安装处理PDF文件的扩展库. import ...
最新文章
- 结束php语句的正确方法是,2011-2012-1-《PHP网页设计》试卷b
- Android自定义Shape
- HTML5实现刮奖效果
- PHP调用新浪API 生成短链接
- Python学习笔记:集成开发环境
- 清除SQLServer日志
- Excel中如何引用 「文件名」、「sheet 页」的名字
- xv6 - simple modern os for education purpose.
- springMVC+hibernate + layui分页
- HW浮动静态路由及负载均衡
- 快速乘 (牛客 电音之王)
- java paint绘图添加组件不能显示_java – 为什么paintComponent没有在面板上绘图?
- 鹏芯U盘(UDK2008)意外断电后修复
- 南阳理工ACM954--N!
- Red Giant 安装及爆炸效果详解
- 【车道线检测论文阅读笔记——经典论文粗读汇总】
- 利用arcmap提取河流中心线
- Unity3D之日常操作-Aspose.Words.dll-U3D读写word_文本内容写入
- 【电子学会】2022年09月图形化一级 -- 猫捉老鼠
- EasyNVS摄像机公网全终端无插件网页摄像机直播管理服务之网页无插件直播服务搭建流程
热门文章
- MySql表情emoji存储‘\xF0\x9F\x98\x82‘ for column ‘msg‘ at row 1 报错解决,亲测效果佳
- 为什么毕业后五年,你们的贫富差距越拉越大
- Android 相机预览 横屏竖屏 -- 显示
- Visual paradigm试用版绘制ER图时如何去水印
- jQuery写法 入口函数
- WSL2 Ubuntu中apt update命令报错,无法解析域名解决方法
- 新松机器人招股说明书_来看看绿的谐波招股书披露的重要信息
- poi HSSFCellStyle HSSFFont 设置加粗,字体,字号等样式
- TestCase和TestSuite详解
- IOS-升级102 全局监听SendEvent