python使用pdfplumber读取PDF文本及其位置

python使用pdfplumber读取PDF文本及其位置

pdfplumber入门

可以参照官方的教程学习https://github.com/jsvine/pdfplumber

这里也推荐一个使用入门介绍的很清楚的博客https://blog.csdn.net/weixin_48629601/article/details/107224376,把官网的教程翻译解释的很清晰。

文本及其位置的读取代码

pdf读取示例

image-20210810155449737

比如我想获得图中**能量**在pdf中的位置,推荐使用jupyter notebook去写,可以可视化调节。

import pdfplumber
# 读取pdf并选择对应的页数
pdf = pdfplumber.open('t.pdf')
page = pdf.pages[4]
# 提取文本并可视化
words = page.extract_words()
im = page.to_image()
im.draw_rects(words)

通过可视化能看出提取效果

下载

page.extract_words()提取的信息是字典列表,会包含文本,位置等信息

print(words[0])

使用print输出可以得到所有的信息,x0,x1, top, bottom就是所需的位置信息

{‘text’: ‘信息载体’, ‘x0’: Decimal(‘221.741’), ‘x1’: Decimal(‘398.141’), ‘top’: Decimal(‘44.336’), ‘bottom’: Decimal(‘88.376’), ‘upright’: True, ‘direction’: 1}

所以如果需要提取某个文本的位置可以使用下面的代码:

# 先查看所有的文本
print(page.extract_text())
再查找需要的文本
for word in words:
    if '能量' in word['text']:
        print(word)

运行结果如下:

信息载体 电磁辐射
E=hf=hc/λ
波长
能量
c 为光速
h为普朗克常数
{‘text’: ‘能量\uf06c’, ‘x0’: Decimal(‘85.914’), ‘x1’: Decimal(‘147.480’), ‘top’: Decimal(‘460.084’), ‘bottom’: Decimal(‘484.414’), ‘upright’: True, ‘direction’: 1}

  • 6
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值