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

使用Anaconda Python3转PDF为CSV后文件不可读,如何处理?

解决PDF转CSV后无法读取的问题

嘿,我一眼就看到你代码里的核心问题了——你把PDF二进制文件对象直接传给pd.DataFrame()了,这完全是错误的用法!pdfFileObj是你打开文件的句柄,不是提取出来的文本内容,用它生成的CSV自然是乱码或者不可读的二进制信息。

问题根源拆解

你现在的代码里,虽然提取了第一页的文本(pageObj.extractText()),但根本没把这段有效文本用来创建DataFrame,反而用了原始的文件对象pdfFileObj,这就导致CSV里存的是文件底层的二进制数据,肯定没法正常读取。

修正方案

我们需要先正确提取PDF中的文本(多页的话要遍历所有页面),把文本整理成结构化数据,再生成DataFrame和CSV。

方案1:通用纯文本PDF转CSV

如果你的PDF是按行排列的纯文本内容,用下面的代码就能生成可读的CSV:

import PyPDF2
import pandas as pd  # 别忘了导入pandas,你之前的代码里漏掉了这个

# 替换成你的PDF文件路径
path = "your_target.pdf"

# 打开并读取PDF
pdfFileObj = open(path, 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)

# 提取所有页面的文本,过滤空行并整理成列表
extracted_lines = []
for page_num in range(pdfReader.numPages):
    page = pdfReader.getPage(page_num)
    page_text = page.extractText()
    # 把每页文本按换行拆分,去掉空白行和首尾空格
    extracted_lines.extend([line.strip() for line in page_text.split('\n') if line.strip()])

# 关闭文件句柄,避免资源占用
pdfFileObj.close()

# 创建DataFrame并指定列名
df = pd.DataFrame(extracted_lines, columns=["text_content"])

# 用UTF-8编码保存CSV,确保跨平台兼容性
df.to_csv('output.csv', index=False, encoding='utf-8')

这段代码会把PDF里所有有效文本行提取出来,生成的CSV可以直接用Excel或文本编辑器正常打开。

方案2:表格类PDF转CSV

如果你的PDF里是表格内容,PyPDF2提取的文本会格式混乱,这时候用tabula-py工具更合适——它能直接识别PDF中的表格结构:

首先安装依赖工具:

pip install tabula-py

然后用下面的代码提取表格:

import tabula

# 提取PDF中所有页面的表格,返回DataFrame列表
table_dfs = tabula.read_pdf(path, pages="all")

# 如果提取到了表格,保存第一个表格为CSV(多表格可循环处理)
if table_dfs:
    table_dfs[0].to_csv('output_table.csv', index=False, encoding='utf-8')

这样生成的CSV会完整保留表格的列结构,直接就能正常读取使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 17:17:59