pdf相关模块介绍与安装 Python提取PDF文字

鳄鱼君

发表文章数:642

Vieu四代商业主题

高扩展、安全、稳定、响应式布局多功能模板。

¥69 现在购买
首页 » Python » pdf相关模块介绍与安装 Python提取PDF文字

pdf相关模块简介与安装

pypdf2模块

它可以读取、写入、分割、合并PDF文件,需要单独安装,不包含在Python标准模块里,官网:https://pythonhosted.org/PyPDF2/

pdfplumber模块

它可以更好地读取PDF文件内容,可以提取PDF中的表格,也是需要单独安装,不包含在Python标准模块里,官网:https://github.com/jsvine/pdfplumber/

发挥你的想象力!节约你的时间!有好多PDF要合并到同一个PDF里?从一堆财报中找到关键的呢些数据?批量加密PDF?把某些页面旋转一下?批量添加水印?……

直接使用pip命令安装PyPDF2和pdfplumber即可,鳄鱼君这里直接在pycharm的setting里面安装的,应该不会出现问题!

pdfplumber提取文字

利用pdfplumber提取文字,使用pdfplumber.open(PDF路径)打开PDF文件,pdf.pages[页数]获取页数,page.extract_text()获取文本内容

import pdfplumber
with pdfplumber.open('1.pdf') as pdf:
   for page in pdf.pages:
       print(page.extract_text())
   # first_page=pdf.pages[0]
   # print(first_page.extract_text())

pdfplumber提取表格

提取简单的表格

import pdfplumber
with pdfplumber.open('1.pdf') as pdf:
   table_page=pdf.pages[0]
   table=table_page.extract_table()
   print(table)

提取多个简单表格

import pdfplumber
with pdfplumber.open('1.pdf') as pdf:
   table_page=pdf.pages[0]
   for table in table_page.extract_tables():
       print(table)

extract_tables()方法接收table_settings参数,该参数是一个字典,可以规定表格的信息,可以查看官方文档,这里不详细介绍!

{
    "vertical_strategy": "lines", 
    "horizontal_strategy": "lines",
    "explicit_vertical_lines": [],
    "explicit_horizontal_lines": [],
    "snap_tolerance": 3,
    "join_tolerance": 3,
    "edge_min_length": 3,
    "min_words_vertical": 3,
    "min_words_horizontal": 1,
    "keep_blank_chars": False,
    "text_tolerance": 3,
    "text_x_tolerance": None,
    "text_y_tolerance": None,
    "intersection_tolerance": 3,
    "intersection_x_tolerance": None,
    "intersection_y_tolerance": None,
}

PDF写入Excel表格

将pdf中提取到的table写入到Excel表格中

from openpyxl import Workbook
workbook=Workbook()
sheet=workbook.active
for row in table:
    sheet.append(row)
workbook.save(filename='./new_book.xlsx')

对于不规整的PD表格,在提取的过程可能会出现空行和单词切分的问题,这里需要进行判断。对于空行,需要判断,非空行的才写入Excel表格,将列表中每个元素都连成一个字符串,如果还是一个空字符串那么就肯定是空行:

new_table=[]
for row in table:
    if not ''.join([str(item) for item in row]) =='':
        sheet.append(row)

合并单词,这里假设Excel表格中的前3列表示PDF中的1列数据,需要将Excel中的前3列合并:

new_row=[]
ner_row.append(''.join([str(item) if item else '' for item in row[:3]]))
new_row=row[3:]
new_table.append(new_row)

将前3列非None的内容合并为一个字符串,然后再添加到列表中。行内条件判断,就是一行代码完成条件判断:

x=5
y=x*2 if x<10 else 20
print(y)

如果x小于10,y值为x*2,否则y值为20,就这么理解!

未经允许不得转载:作者:鳄鱼君, 转载或复制请以 超链接形式 并注明出处 鳄鱼君
原文地址:《pdf相关模块介绍与安装 Python提取PDF文字》 发布于2020-05-17

分享到:
赞(1) 赏杯咖啡

评论 抢沙发

5 + 5 =


文章对你有帮助可赏作者一杯咖啡

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.6主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册