使用pdfplumber提取pdf中的文字

2023-09-18 14:31:45

一、安装 pdfplumber

pdfplumber 是一个 Python 库,必须通过 pip 安装才能在 Python 代码中进行使用。使用以下命令在 Python 中安装 pdfplumber。

pip install pdfplumber

二、用 pdfplumber 打开 PDF 文档

在 Python 中使用 pdfplumber 打开 PDF 文档的方法非常简单。只需要调用 pdfplumber 的 open 方法并传递 PDF 文件的路径。

import pdfplumber
with pdfplumber.open("example.pdf") as pdf:
  # do something with pdf

三、提取文本

使用 pdfplumber 可以很容易地提取文档中的文本内容。对于一个页面,你可以使用 extract_text() 方法来提取页面上的文本。

with pdfplumber.open("example.pdf") as pdf:
  for i, page in enumerate(pdf.pages):
    text = page.extract_text()
    print(f"This is the text on page {i}:")
    print(text)

使用 extract_text() 方法会返回一个字符串,其中包含页面中的所有文本。如果你只想提取页面的一部分文本,可以将提取的区域作为参数传递给 extract_text() 方法。

四、提取表格

如果 PDF 文档中包含表格,则可以使用 pdfplumber 将表格提取为 Pandas DataFrame 对象,并对其进行进一步处理。

首先,我们需要用 extract_tables() 方法来提取所有表格。

with pdfplumber.open("example.pdf") as pdf:
  for i, page in enumerate(pdf.pages):
    tables = page.extract_tables()
    for table in tables:
      df = pd.DataFrame(table[1:], columns=table[0])
      print("This is a table on page ",i)
      print(df.head())

extract_tables() 方法将返回一个列表,其中包含每个表格的列表,每个表格都是一个嵌套列表。在将表格转换为 DataFrame 之前,请确保在第一行包含表头。

五、转换为图像

在某些情况下,你可能需要将 PDF 页面转换为图像格式,例如 PNG 或 JPEG。使用 pdfplumber 可以很容易地实现这一点。

首先,我们需要使用 Page 对象的 render() 方法将页面渲染为图像。

with pdfplumber.open("example.pdf") as pdf:
  for i, page in enumerate(pdf.pages):
    im = page.to_image(resolution=150)
    im.save("page-{}.png".format(i), format="png")

render() 方法将返回一个 PageImage 对象,你可以使用该对象的 save() 方法将图像保存到文件。在 save() 方法中指定文件名和所需的图像格式。

更多推荐

Linux- inode & vnode

什么是inodeinode是UNIX和UNIX-like操作系统中的一个关键概念。它代表了文件系统中文件或目录的元数据。每个文件和目录在文件系统中都有一个与之关联的inode。这个数据结构存储了关于文件的所有信息,除了其名称和实际数据之外。以下是inode中通常包含的信息:文件类型:如常规文件、目录、字符设备、块设备、

java版工程管理系统Spring Cloud+Spring Boot+Mybatis实现工程管理系统源码

工程项目管理软件(工程项目管理系统)对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营,全过程、全方位的对项目进行综合管理工程项目各模块及其功能点清单一、系统管理1、数据字典:实现对数据字典标签的增删改查操作2、编码管理:实现对系统编码的增删改查操作3、用户管理:管理和查看用户角

C++——内存管理

目录C/C++内存分布C++内存管理方式new/delete操作内置类型new和delete操作自定义类型new失败operatornew与operatordelete函数new和delete实现原理内置类型自定义类型定位new常见问题malloc/free和new/delete的区别C/C++内存分布栈又叫堆栈--非

Puppeteer无头浏览器:开启自动化之门,掌握浏览器世界的无限可能

大概还是入门期,我曾用Puppeteer做爬虫工具以此来绕过某网站的防爬机制。近期有需求要做任意链接网页截图,像这种场景非常适合用Puppeteer完成。无头浏览器我已知的还有Selenium。完成截图需求踩的最大的坑不是具体的逻辑代码,而是Docker部署Puppeteer到服务器总是缺少某个包。踩坑过程我想另外写一

如何利用软文推广进行SEO优化(打造优质软文,提升网站排名)

在当今的互联网时代,SEO优化成为了网站推广的关键。而软文推广作为一种有效的推广方式,其优点不仅仅局限于SEO,还可以带来更多的曝光和用户流量。本文将深入探讨如何做好软文推广,从而提升网站排名和流量。了解目标受众群体内容在进行软文推广之前,需要对目标受众群体进行详细的了解。包括年龄、性别、职业、喜好等方面,以便准确把握

什么是ELK

什么是ELKELK并不是一个技术框架的名称,它其实是一个三位一体的技术名词,ELK的每个字母都来自一个技术组件,分别是Elasticsearch(简称ES)、Logstash和Kibana。三个技术组件是独立的,后两个被elastic公司收购,通常配合起来使用。ELK的组成部分Elasticsearch:是一个分布式的

使用Docker+Jenkins+Gitee自动化部署SpringBoot项目

目录搭建基础环境1、使用Docker-Compose搭建基础环境2、搭建项目仓库环境,创建Dockerfile文件(2022-12-15更新)3、配置Jenkins3.1、初始化Jenkins3.2、安装核心插件3.3、全局工具配置3.3.1、配置Git。3.3.2、配置Maven3.3.3、配置JDK3.4、配置Gi

项目:UDP聊天室

UDPUDP(UserDatagramProtocol)是一种无连接、不可靠、面向数据报的传输协议。与TCP相比,UDP更加轻量级,不提供像TCP那样的可靠性和流控制机制,但具备较低的通信延迟和较少的开销。UDP具有以下几个特点:1.无连接性:UDP在通信之前不需要进行握手或建立连接,可以直接向目标主机发送数据报。这使

阿里云服务器部署安装hadoop与elasticsearch踩坑笔记

2023-09-1214:00——2023.09.1320:06目录00、软件版本01、阿里云服务器部署hadoop1.1、修改四个配置文件1.1.1、core-site.xml1.1.2、hdfs-site.xml1.1.3、mapred-site.xml1.1.4、yarn-site.xml1.2、修改系统/etc

基于STM32F407ZET6的环境温湿度监控系统(粤嵌GEC-M4)

注意使用事项:开发板如下由于外部晶振是8M,需要修改setup和stm32f4头文件的晶振值。操作如下:system_stm32f4xx.c的254行#definePLL_M8stm32f4xx.h的127行#defineHSE_VALUE((uint32_t)8000000)/*!<ValueoftheExterna

JAVA成员变量首字母小写,第二个字母大写报错问题(原因:Lombok与Spring冲突)

1、问题现象:JAVA类里定义成员变量使用首字母小写,第二个字母大写@Getter@SetterpublicclassBrandQueryObjectextendsQueryObject{privateStringpName;}结果页面报错,无法找到类型为cn.wolfcode.ssm.query.BrandQuery

热文推荐