如何使用Python提取PDF中所有表格数据,tabula等工具识别不全如何处理
Python提取PDF表格缺失内容的解决方法
当前代码缺失前几行的原因
你调用tabula时使用了默认的自动表格识别逻辑,该逻辑会将它判定为“非表格内容”的标题类文本直接过滤,你测试的这份年报第3页的财务表格前几行内容刚好符合它的过滤规则,因此没有被纳入提取范围,并不是工具本身不支持提取。
修复方案
1. 调整tabula参数修复问题
关闭默认的自动猜测逻辑,手动指定表格提取范围,同时关闭自动表头推断,示例代码如下:
import tabula import pandas as pd # 坐标顺序为 [上边界, 左边界, 下边界, 右边界],以下为适配该年报第3页的参考值 tables = tabula.read_pdf( filename, pages="3", guess=False, area=[80, 50, 750, 550], columns=[180, 250, 310, 370, 430, 490], output_format="dataframe", pandas_options={'header': None} ) df = tables[0] print(df)
2. 改用pdfplumber提取(更适配无框财务表格)
pdfplumber对无框表格的识别灵活度更高,不需要复杂参数也能拿到完整内容,示例代码如下:
import pdfplumber import pandas as pd with pdfplumber.open(filename) as pdf: page = pdf.pages[2] # 页码从0开始计数,第3页对应索引2 table = page.extract_table(text_y_tolerance=2) df = pd.DataFrame(table) print(df)
是否需要使用OCR
不需要。你使用的PDF是原生可编辑的文本类PDF,直接提取文本的准确率远高于OCR识别结果,只有扫描生成的图片类PDF才需要使用OCR工具辅助提取。
内容的提问来源于stack exchange,提问作者Trokken
相关产品推荐
相关产品推荐

