如何用Camelot提取PDF多表格并保留对应页码?
解决方案
Camelot提取的每个表格对象(Table)自带page属性,可直接获取该表格所在的PDF页码。你只需要修改循环逻辑,同时获取表格的序号和对应页码,再替换文件名中的占位符即可。
修改后的代码如下:
import camelot tables = camelot.read_pdf('2003.pdf', flavor='stream', pages='8,9,10,14,15,18,24...', edge_tol=500, flag_size=True) # 使用enumerate获取表格序号(从1开始)和对应的表格对象 for tab_num, table in enumerate(tables, start=1): # 用table.page获取当前表格的页码,替换文件名中的占位符 # 注意:路径中的反斜杠建议用原始字符串r""避免转义问题,或者改用正斜杠"/" table.to_csv(rf"2003\Report2003tab{tab_num}_page{table.page}.csv")
关键修改点:
- 用
enumerate(tables, start=1)遍历表格,tab_num从1开始计数,对应你原来的page+1; - 通过
table.page直接获取该表格所在的PDF页码,无需手动关联; - 路径使用原始字符串
rf"",避免反斜杠被Python解析为转义字符(比如\R会被识别为特殊字符),也可以将路径中的反斜杠改为正斜杠/,比如"2003/Report2003tab{...}.csv"。
内容的提问来源于stack exchange,提问作者abdullah Haidari
相关产品推荐
相关产品推荐

