cdr 表格自动填充文字_【极简Python自动化办公】Python读取PDF文字和表格

【极简Python 自动化办公】专栏是介绍如何利用python办公,减少工作负荷。篇幅精炼,内容易懂,无论是否有编程基础,都非常适合。

在日常的工作中,处理PDF是最平常不过的事情了。今天带来极简Python自动化办公系列之使用Python提取Pdf文字和表格,希望能够在PDF处理上帮到你。

这次我们准备了一个pdf测试文件,内容如下:

51da237830e7b91894ea4225b93c7afa.png

pdf中包括了2页,有文字,图片和表格,覆盖了大部分pdf的场景。

pdfplumber介绍

Pdfplumber是一个可以处理pdf格式信息的库。它可以查找关于每个文本字符、矩阵、和行的详细信息,也可以对表格进行提取并进行可视化调试。

官方repo:https://github.com/jsvine/pdfplumber

安装:pip install pdfplumber

使用入门

import pdfplumber
	
with pdfplumber.open("test.pdf") as pdf:
	first_page = pdf.pages[0] #取第一页
	print(first_page.chars[0])#打印第一页第一个字文字信息

结果:

{'fontname': 'CRSMRF+PingFangTC-Semibold', 'adv': Decimal('1.000'), 'upright': 1, 'x0': Decimal('57.000'), 'y0': Decimal('751.840'), 'x1': Decimal('81.000'), 'y1': Decimal('779.776'), 'width': Decimal('24.000'), 'height': Decimal('27.936'), 'size': Decimal('27.936'), 'object_type': 'char', 'page_number': 1, 'text': '关', 'top': Decimal('62.224'), 'bottom': Decimal('90.160'), 'doctop': Decimal('62.224')}

格式化之后:

ba8b99bd961e6a8304eb9720195b8977.png
{
	    "fontname":"CRSMRF+PingFangTC-Semibold",
	    "adv":"1.000",
	    "upright":1,
	    "x0":"57.000",
	    "y0":"751.840",
	    "x1":"81.000",
	    "y1":"779.776",
	    "width":"24.000",
	    "height":"27.936",
	    "size":"27.936",
	    "object_type":"char",
	    "page_number":1,  #页数
	    "text":"关",  #第一个文字
	    "top":"62.224",
	    "bottom":"90.160",
	    "doctop":"62.224"
}

常用方法

  • extract_text() 用来提页面中的文本,将页面的所有字符对象整理为一个字符串
  • extract_words() 返回的是所有的单词及其相关信息
  • extract_tables() 提取页面的表格

提取文字

#!/usr/bin/env python3

import pdfplumber

with pdfplumber.open("test.pdf") as pdf:
	first_page = pdf.pages[0]
	text = first_page.extract_text() #提取第一页的所有文字
	print(text)

f4336f59ecff9d64e77195c94bb2c0e8.png
关于我们
关于FlyPython
FlyPython是提供⼀站式Python编程学习的组织,我们致⼒于为⽤户提供⾼
效,有趣的学习环境,打造专注于Python的中⽂学习社区。
联系我们
客服&合作: 微信号 flypython
微信公众号:

提取表格

#!/usr/bin/env python3

import pdfplumber
import pandas as pd

with pdfplumber.open("test.pdf") as pdf:
    first_page = pdf.pages[0]
    text = first_page.extract_text()
    print(text)

    second_page = pdf.pages[1] #第二页
    table = second_page.extract_tables()#在第二页提取表格
    for t in table:
        df = pd.DataFrame(t[1:],columns=t[0])
        print(df)

a4c0ca50208a57bb22c82f6072b90ea1.png
分类                 书名
0  Python入门  Python编程:从入门到n实践
1  Python中级          流畅的Python
2
3

总结

pdfplumber的接口还是很容易的,如果只是需要提取文字,几行代码就可以提取到。如果是表格并没有提取出来或者错误的提取了非表格的内容,你需要在提取表格时加入table_settings参数来指定表格的设置。

这次的demo中,图片并没有提取出来,pdf图片的提取会放到下一篇文章,敬请期待。

人生苦短,我用python早下班。如果觉得不错,对你工作中有帮助,可以长按下列二维码关注我们的公众号。

2b7c480311c3a0b940ca8898334cabbc.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值