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

如何使用tabula-py读取带密码保护的PDF表格?

用tabula-py提取带密码PDF中的表格(可行方案)

当然可以,tabula-py支持处理已知密码的加密PDF,下面是两种实用的实现方法:

方法1:直接传入密码读取

tabula-py的核心函数read_pdf自带password参数,只需传入PDF的密码,就能直接解密并提取表格,无需额外处理文件。

示例代码:

import tabula

# 读取加密PDF的所有表格
tables = tabula.read_pdf(
    "加密表格.pdf",
    password="你的PDF密码",
    pages="all",  # 指定提取页码,比如"1,3"或"2-5"
    multiple_tables=True  # 一页多表时返回列表
)

# 遍历处理表格
for i, table in enumerate(tables):
    print(f"第{i+1}个表格内容:")
    print(table)
    # 保存为CSV文件
    table.to_csv(f"提取表格_{i+1}.csv", index=False)

方法2:先解密再提取

如果遇到少数tabula直接传密码无法处理的特殊加密PDF,可以先用PyPDF2或pdfplumber解密后生成临时文件,再用tabula读取。

示例代码(基于PyPDF2):

from PyPDF2 import PdfReader, PdfWriter
import tabula
import os

# 解密PDF函数
def decrypt_pdf(input_file, output_file, pwd):
    reader = PdfReader(input_file)
    if reader.is_encrypted:
        reader.decrypt(pwd)
    writer = PdfWriter()
    for page in reader.pages:
        writer.add_page(page)
    with open(output_file, "wb") as f:
        writer.write(f)

# 生成解密后的临时文件
decrypt_pdf("加密表格.pdf", "临时解密版.pdf", "你的PDF密码")

# 读取解密后的PDF表格
tables = tabula.read_pdf("临时解密版.pdf", pages="all", multiple_tables=True)

# 清理临时文件
os.remove("临时解密版.pdf")

额外提示

  • 确保tabula-py是最新版本,旧版本可能存在加密PDF兼容问题,执行pip install --upgrade tabula-py更新即可。
  • 若PDF中的表格是扫描生成的图片格式,tabula-py无法直接提取,需要先通过OCR工具(如pytesseract)识别为可编辑文本后再处理。

内容的提问来源于stack exchange,提问作者MegaJas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 18:01:18