You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PyPDF将PDF单页转换为DataFrame?WIPO特定PDF第24页转换问题求解

搞定PDF第24页转DataFrame的问题

嘿,我来帮你解决这个麻烦!你用pypdf提取的是无结构的纯文本,想把它转成规整的DataFrame确实费劲——毕竟表格的行列结构在纯文本里完全乱掉了。而tabula就是专门用来提取PDF中表格数据的工具,咱们直接用它来处理,效率高多了。

下面是具体的实现步骤和代码:

1. 先搞定依赖(如果还没弄的话)

tabula依赖Java环境,所以先确保你已经装了Java(OpenJDK或者Oracle的JDK都行,记得配置好环境变量),然后安装tabula-py:

pip install tabula-py

2. 直接用tabula提取第24页的表格

注意哦:tabula的页面编号是从1开始计数的,你要的第24页直接传pages='24'就可以,不用像pypdf那样减1。

基础提取代码

import tabula
import pandas as pd

# 自动识别第24页的所有表格,返回DataFrame列表
dfs = tabula.read_pdf(r"C:\Users\smx\python\wipo_pub_gii_2021.pdf", pages='24', multiple_tables=True)

# 如果页面只有一个表格,直接取第一个元素就行
df = dfs[0]

# 看看提取的结果
print(df.head())

3. 处理可能的格式混乱问题

如果提取后的表格有合并单元格、表头拆分在多行的情况,咱们可以做一些简单的清洗:
比如表头占了两行,合并成一行:

# 把前两行表头合并成一行
df.columns = [' '.join(str(col) for col in col_group).strip() for col_group in df.iloc[:2].values.T]
# 跳过原来的表头行,重置索引
df = df.iloc[2:].reset_index(drop=True)

# 处理空值,把NaN换成空字符串或者你需要的占位符
df = df.fillna('')

4. 保存结果(可选)

要是需要把处理好的DataFrame存成文件:

# 存成CSV
df.to_csv('gii_2021_page24.csv', index=False)
# 存成Excel
df.to_excel('gii_2021_page24.xlsx', index=False)

小技巧

如果tabula识别表格的位置不准,你可以用PDF阅读器的测量工具(比如Adobe Acrobat的测量功能)获取表格的左上角和右下角坐标,然后用area参数指定范围:

# area格式是[顶部坐标, 左侧坐标, 底部坐标, 右侧坐标]
dfs = tabula.read_pdf(r"C:\Users\smx\python\wipo_pub_gii_2021.pdf", pages='24', area=[100, 50, 600, 800], multiple_tables=True)

内容的提问来源于stack exchange,提问作者user032020

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 14:07:28