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

如何用Python/Java解析带签名PDF的表单字段并导出为CSV?

解析带签名PDF表单字段的可行Python方案

方法1:使用PyMuPDF(fitz)

PyMuPDF对PDF交互式表单支持完善,能直接读取带签名PDF中的表单字段数据(只要签名未完全加密锁定字段内容,多数场景下签名仅验证完整性,数据仍可访问)。

步骤:

  1. 安装依赖:
pip install pymupdf
  1. 提取字段代码:
import fitz

def extract_pdf_form_fields(pdf_path, password=None):
    # 打开PDF,支持密码解密
    doc = fitz.open(pdf_path, password=password)
    form_fields = {}
    
    for page in doc:
        # 获取页面所有表单控件
        widgets = page.widgets()
        for widget in widgets:
            field_name = widget.field_name
            # 区分字段类型处理值
            if widget.field_type == fitz.PDF_WIDGET_TYPE_CHECKBOX:
                # 复选框值通常为"Yes"(勾选)或"Off"(未勾选)
                field_value = "勾选" if widget.field_value == "Yes" else "未勾选"
            else:
                field_value = widget.field_value or "无值"
            form_fields[field_name] = field_value
    
    doc.close()
    return form_fields

# 使用示例
fields = extract_pdf_form_fields("带签名的表单.pdf")
for field_name, value in fields.items():
    print(f"{field_name}: {value}")

方法2:使用pdfrw

pdfrw适合处理旧版PDF表单,虽然维护较少,但对AcroForm字段的读取逻辑直接,部分场景下能兼容PyMuPDF处理不了的特殊PDF。

步骤:

  1. 安装依赖:
pip install pdfrw
  1. 提取字段代码:
from pdfrw import PdfReader

def extract_fields_pdfrw(pdf_path, password=None):
    reader = PdfReader(pdf_path, password=password)
    form_fields = {}
    
    # 检查是否存在AcroForm字典
    if hasattr(reader, "AcroForm") and reader.AcroForm:
        for field in reader.AcroForm.Fields:
            # 解码字段名称
            field_name = field.T.decode("utf-8")
            # 处理复选框
            if field.FT == "/Btn":
                field_value = "勾选" if field.V == "/Yes" else "未勾选"
            else:
                # 处理文本、下拉框等其他字段
                field_value = field.V.decode("utf-8") if hasattr(field, "V") else "无值"
            form_fields[field_name] = field_value
    
    return form_fields

# 使用示例
fields = extract_fields_pdfrw("带签名的表单.pdf")
for field_name, value in fields.items():
    print(f"{field_name}: {value}")

注意事项

  • 若PDF签名后被设置为表单不可编辑,只要字段数据未被加密隐藏,上述方法依然有效;
  • 遇到加密PDF时,需在打开函数中传入密码参数;
  • 若两种方法都无法提取,可能是PDF签名时被设置了字段数据的加密锁定,这种情况需先移除签名(需合法权限)再提取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:50:23