如何用Python的tabula库提取PDF中的多个表格?单个表格可正常提取
解决Tabula提取PDF中多个表格的问题
你遇到的问题很常见——默认情况下tabula.read_pdf()只会提取PDF里的第一个表格。要获取所有表格,只需要调整几个关键参数就行,下面是具体的解决方案:
核心方法:提取所有页面的所有表格
通过指定pages='all'和multiple_tables=True两个参数,让Tabula遍历PDF的所有页面并识别每个页面中的多个表格,最终返回一个包含所有表格DataFrame的列表。
示例代码:
from tabula import read_pdf # 提取PDF中所有页面的所有表格 all_tables = read_pdf( r"C:\Users\Himanshu Poddar\Desktop\pdf_file.pdf", pages='all', multiple_tables=True ) # 遍历并查看每个表格 for index, table in enumerate(all_tables): print(f"=== 第 {index+1} 个表格 ===") print(table) print("\n")
进阶技巧
指定特定页面提取
如果你不需要所有页面的表格,可以直接指定页码(支持单个页码、多个页码或范围):# 提取第2页和第4-6页的表格 target_tables = read_pdf( r"C:\Users\Himanshu Poddar\Desktop\pdf_file.pdf", pages='2,4-6', multiple_tables=True )优化表格识别精度
如果某些表格识别不准确,可以根据PDF的类型调整识别模式:- 对于带明确边框的点阵式表格,添加
lattice=True参数 - 对于无明确边框的流式表格,添加
stream=True参数
# 针对点阵式表格优化提取 lattice_tables = read_pdf( r"C:\Users\Himanshu Poddar\Desktop\pdf_file.pdf", pages='all', multiple_tables=True, lattice=True )- 对于带明确边框的点阵式表格,添加
直接访问单个表格
返回的列表中每个元素对应一个表格,你可以通过索引直接定位:# 获取第二个表格 second_table = all_tables[1]
内容的提问来源于stack exchange,提问作者user9375916
相关产品推荐
相关产品推荐

