如何从pdf中提取表格(图片型pdf)
def getFile(url,name):print("提取pdf")
file_name = name
u = urllib.request.urlopen(url)
block_sz = 8192
with open("D:\\report\\"+file_name, 'wb') as f:
while True:
buffer = u.read(block_sz)
if buffer:
f.write(buffer)
else:
break
print("Sucessful to download" + " " + file_name)
无法提取,请教一下有没有其他可行的方法 本帖最后由 Mike_python小 于 2022-12-22 10:13 编辑
import pdfplumber
import pandas as pd
def read_pdf(read_path, save_path):
pdf_2020 = pdfplumber.open(read_path)
result_df = pd.DataFrame()
for page in pdf_2020.pages:
table = page.extract_table()
print(table)
df_detail = pd.DataFrame(table, columns=table)
result_df = pd.concat(, ignore_index=True)
result_df.dropna(axis=1, how='all', inplace=True)
result_df.columns = ['奖项', '作品编号', '作品名称', '参赛学校', '作者', '指导老师']
result_df.to_excel(excel_writer=save_path, index=False, encoding='utf-8')
read_path = r'2020年中国大学生计算机设计大赛参赛作品获奖名单.pdf'
save_path = r'2020年中国大学生计算机设计大赛参赛作品获奖名单.xlsx'
read_pdf(read_path, save_path)
https://blog.csdn.net/m0_59236127/article/details/122712637这个链接可能会帮到你
如果这个回答对你有帮助,请设置“最佳答案”! 本帖最后由 编程追风梦 于 2022-12-21 15:02 编辑
这里使用camelot提取数据
import camelot
tables = camelot.read_pdf(pdf_filepath, pages='1-end')
for item in tables:
df = item.df
# item.to_csv('test.csv')
# item.to_excel('test.xlsx')
[*]pages使用’1-end’就可以读取pdf文件所有页
[*]这里将每个表格数据转换为pandas DataFrame(df)
[*]也可以直接导出CSV,Excel文件:to_csv,to_excel
但现实中我们的需求往往更复杂实例需求:多个pdf文件,每个pdf可能有多页,要求提取指定列的所有数据,并去重,最终导出excel文件import camelot
import glob
import openpyxl
# 导出excel文件
def write_excel_xlsx(path, sheet_name, value):
index = len(value)
workbook = openpyxl.Workbook()
sheet = workbook.active
sheet.title = sheet_name
for i in range(0, index):
sheet.cell(row=i+1, column=1, value=str(value))
workbook.save(path)
print("xlsx格式表格写入数据成功!")
directory = './*.pdf'
files =
result = []
for pdf_filepath in files:
print(pdf_filepath)
tables = camelot.read_pdf(pdf_filepath, pages='1-end')
for item in tables:
df = item.df
try:
# 这里取第6列数据
itemData = df.to_list()
result = result + itemData
print(itemData)
except Exception:
print('异常')
# 过滤空白和标题数据
result =
# 去重
result = list(set(result))
write_excel_xlsx('./result.xlsx', 'sheet1', result)
[*]使用glob遍历文件夹下所有pdf文件,批量处理
[*]使用camelot提取表格数据为pandas DataFrame
[*]取第6列数据,并过滤掉空白数据和标题数据,同时过滤重复数据
[*]使用openpyxl导出第6列数据到excel文件
转载原文:https://codeantenna.com/a/sIZGHFRXvF
https://blog.csdn.net/m0_59236127/article/details/122712637
如果文章帮助到你的话,给我个最佳答案吧,我缺最佳答案
页:
[1]