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

批量爬取多页PDF表格导出Excel时camelot、tabula失效解决方案咨询

PDF表格批量提取失败解决方案

首先先排查目标PDF的类型,再对应选择适配方案:

情况1:目标为扫描件/图像型PDF

camelot、tabula仅支持原生可编辑文本PDF,无法识别图像中的表格内容,需先做OCR预处理:

  • 可使用pytesseract+pdf2image先将PDF每页转为文本,再用正则或表格结构匹配规则提取表格
  • 也可直接使用layoutparser文档解析库,调用预训练的表格检测模型直接提取图像PDF中的表格内容

情况2:目标为原生可编辑PDF但结构复杂

优先使用pdfplumber库,它对复杂布局、无明确边界线的表格适配性远高于camelot、tabula,可直接参考如下批量提取代码:

import pdfplumber
import pandas as pd
import os

# 配置路径
BASE_PATH = os.path.dirname(os.path.abspath(__file__))
PDF_FOLDER = os.path.join(BASE_PATH, "替换为你的PDF文件夹路径")
OUTPUT_PATH = os.path.join(BASE_PATH, "表格提取结果.xlsx")

all_extracted_tables = []

# 遍历所有PDF
for file_name in os.listdir(PDF_FOLDER):
    if not file_name.lower().endswith(".pdf"):
        continue
    pdf_full_path = os.path.join(PDF_FOLDER, file_name)
    with pdfplumber.open(pdf_full_path) as pdf:
        # 遍历PDF每一页
        for page_idx, page in enumerate(pdf.pages, start=1):
            # 可根据实际表格格式调整提取参数
            tables = page.extract_tables(table_settings={
                "vertical_strategy": "text", # 按文本位置判断垂直分割线
                "horizontal_strategy": "text", # 按文本位置判断水平分割线
                "intersection_x_tolerance": 5, # x坐标容差
                "intersection_y_tolerance": 5 # y坐标容差
            })
            # 处理提取到的每个表格
            for table_idx, table in enumerate(tables, start=1):
                # 首行作为表头,其余为内容
                df = pd.DataFrame(table[1:], columns=table[0])
                # 标记来源信息方便核对
                df["来源文件"] = file_name
                df["页码"] = page_idx
                df["表格序号"] = table_idx
                all_extracted_tables.append(df)

# 导出为Excel
if all_extracted_tables:
    merged_df = pd.concat(all_extracted_tables, ignore_index=True)
    merged_df.to_excel(OUTPUT_PATH, index=False)

如果提取结果仍有错位,可调用page.debug_tablefinder()输出当前页面的表格检测结果,调整table_settings中的容差、最小单元格尺寸等参数适配你的PDF格式。

其他特殊场景适配

  • 若PDF为加密文件,先通过pikepdf库解密后再提取:pikepdf.open(加密文件路径, password="你的PDF密码").save(解密后保存路径)
  • 若表格存在大量合并单元格、嵌套结构,可先提取PDF全页文本后按表格的行特征手动切割,再拼接为DataFrame导出。

内容的提问来源于stack exchange,提问作者seanb-latex

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:27:04