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

使用PyPDF2读取部分PDF遇阻,求助提取目标PDF表单内容

解决方案

这类PDF通常设置了条件性JavaScript或Adobe特定文档行为,检测到非Adobe阅读器环境时会显示提示文本并隐藏实际内容。可尝试以下几种方法:

方法1:使用PyMuPDF(fitz)替代PyPDF2

PyMuPDF对复杂PDF兼容性更好,能绕过这类环境检测:

import fitz  # 先执行安装命令:pip install pymupdf

doc = fitz.open("DA Form 638.pdf")
# 提取页面文本
for page in doc:
    print(page.get_text())
# 提取表单字段
fields = doc.widgets()
for field in fields:
    print(f"{field.field_name}: {field.field_value}")

方法2:用Ghostscript预处理PDF

通过Ghostscript移除PDF中的JavaScript和特殊行为,生成可正常读取的副本:

gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dNOOUTERSAVE -dNOSAFER -o cleaned.pdf "DA Form 638.pdf"

处理完成后再用PyPDF2读取cleaned.pdf即可。

方法3:调整PyPDF2读取参数

PyPDF2新版支持禁用JavaScript解析,尝试初始化时添加参数并修改提取模式:

from PyPDF2 import PdfReader

award_test = PdfReader("DA Form 638.pdf", strict=False)
# 强制按布局提取底层内容
for page in award_test.pages:
    text = page.extract_text(extraction_mode="layout")
    print(text)

若PDF使用了Adobe特殊表单控件,可能需要先转换为标准AcroForm格式再处理。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 05:05:22