脚本专家 发表于 2026-6-23 09:00:03

Python+Spire.PDF实战:PDF文本替换、转Word、OCR识别及表单填充全攻略

在日常开发中,PDF文件的自动化编辑需求非常常见,例如批量修改合同中的日期、将PDF转为可编辑的Word文档、提取扫描件中的文字,或者动态填充表单域。本文基于Spire.PDF for Python和Spire.OCR for Python两个库,通过四个具体场景的代码示例,展示如何用Python高效处理这些任务。

所有操作均可在纯Python环境中完成,无需安装Adobe Acrobat或Microsoft Office。

## 环境准备

通过pip安装两个核心组件:

pip install Spire.Pdf
pip install Spire.Ocr

如果涉及多种文档格式(如Excel、PPT),可以直接安装集成包:

pip install Spire.Office

该包额外包含Spire.XLS、Spire.Doc和Spire.Presentation等组件。

## 场景一:在PDF中查找并替换文本

适用场景:仅需修改PDF中的局部文字(如合同日期、发票金额),不影响整体排版。

核心逻辑:遍历PDF每一页,创建PdfTextReplacer对象,调用ReplaceAllText方法替换目标字符串,并可设置新文本颜色。


from spire.pdf import *
from spire.pdf.common import *

# 加载PDF文档
pdf = PdfDocument()
pdf.LoadFromFile("/input/示例文档.pdf")

# 遍历每一页
for i in range(pdf.Pages.Count):
    page = pdf.Pages.get_Item(i)
    replacer = PdfTextReplacer(page)
    # 将"AI 绘画"替换为"AI 生成图画",颜色设为红色
    replacer.ReplaceAllText("AI 绘画", "AI 生成图画", Color.get_Red())

# 保存替换后的文档
pdf.SaveToFile("/output/替换所有文本.pdf")
pdf.Close()


注意:ReplaceAllText方法会替换当前页中所有匹配的文本,适用于精确匹配场景。如需区分大小写或正则匹配,可查看Spire.PDF的扩展方法。

## 场景二:PDF高保真转换为可编辑的Word

适用场景:需要对文档进行段落结构调整或二次编辑。

通过SaveToFile方法直接指定FileFormat.DOCX,即可将PDF转换为Word,最大程度保留原始排版。


from spire.pdf import *

pdf = PdfDocument()
pdf.LoadFromFile("示例文档.pdf")
pdf.SaveToFile("pdf转word.docx", FileFormat.DOCX)
pdf.Close()


转换后生成的.docx文件可以在Word中自由编辑,适合进一步处理。

## 场景三:OCR识别扫描件与图片PDF

适用场景:PDF由扫描仪或相机生成,内部只有图片而无文字层,无法直接提取文本。

需要先通过Spire.OCR对图片进行光学字符识别。如果PDF本身已经是独立的图片,可直接识别;如果是PDF文档,需要先将其转为图片(本文不展开,可参考后续教程)。

以下示例展示对单张图片进行OCR识别并输出文本文件:


from spire.ocr import *

scanner = OcrScanner()

# 配置OCR模型路径(需提前下载模型)和语言
configureOptions = ConfigureOptions()
configureOptions.ModelPath = r"E:/DownloadsNew/win-x64/"
configureOptions.Language = "Chinese"
scanner.ConfigureDependencies(configureOptions)

# 执行OCR识别
scanner.Scan(r"/output/pdftoimage/ToImage_0.png")

# 提取识别结果并写入文本文件
text = scanner.Text.ToString()
with open("/output/OCR结果.txt", "a", encoding="utf-8") as file:
    file.write(text + "\n")


关键点:ModelPath需要指向下载的OCR模型目录,Language支持“Chinese”等参数。识别出的文本为简单顺序流,不含排版格式。

## 场景四:在PDF中填写可交互表单域

适用场景:使用预置表单域的PDF模板(如入职申请表、开户信息表),通过代码批量填充数据。

核心操作:获取表单部件集合FieldsWidget,遍历并根据字段类型(文本框、复选框等)和名称赋值。


from spire.pdf import *

pdf = PdfDocument()
pdf.LoadFromFile("application_form.pdf")

form_widget = PdfFormWidget(pdf.Form)
for i in range(form_widget.FieldsWidget.Count):
    field = form_widget.FieldsWidget.get_Item(i)
   
    if isinstance(field, PdfTextBoxFieldWidget) and field.Name == "EmployeeName":
      field.Text = "张三"
    elif isinstance(field, PdfCheckBoxFieldWidget) and field.Name == "AgreeTerms":
      field.Checked = True

pdf.SaveToFile("filled_form.pdf")
pdf.Close()


这种方法保证了PDF模板的防篡改特性,同时允许局部填写。

## 四种方案对比总结

| 方案 | 核心机制 | 优势 | 局限 |
|------|----------|------|------|
| 查找并替换文本 | 直接修改PDF文本流 | 零格式损失,内存占用低 | 无法进行段落级重构 |
| 转Word | 映射为Word DOM树 | 视觉还原度高,可深度编辑 | 超大文件转换时性能要求高 |
| OCR识别 | 图像像素特征识别 | 将不可选中的“死文字”变为可编辑文本 | 仅输出原始文本流,无排版 |
| 填写表单域 | 对预埋交互字段动态赋值 | 兼顾防篡改和局部填写 | 依赖预置模板 |

选择哪种方式取决于实际需求:如果只是修改几个关键字,用方案一;需要全面编辑,用方案二;扫描件用方案三;模板批量填充用方案四。

通过Spire.PDF for Python和Spire.OCR for Python,开发者可以轻松集成这些PDF自动化能力到自己的Python脚本中。在Spire.Office官网还可以找到更多API文档和示例。

热心网友3 发表于 2026-6-23 09:10:01

Re: Python+Spire.PDF实战:PDF文本替换、转Word、OCR识别及表单填充全攻略

非常感谢楼主这么详细的教程!Spire.PDF这个库我之前只简单用过转换,没想到还有文本替换和表单填充的功能,太实用了。场景一的替换文本正好能解决我批量改合同日期的痛点,之前都是手动一个个改,累得不行。 有个小疑问:场景三的OCR识别,那个模型文件是直接能下载的吗?还是需要额外去官网获取?我手头有一批扫描的PDF,如果能用代码批量转成可搜索的文字就太好了。另外,文本替换那里如果遇到换行或特殊字符,ReplaceAllText能正常处理吗? 再次感谢分享,干货满满,收藏了!

热心网友3 发表于 2026-6-23 09:10:01

Re: Python+Spire.PDF实战:PDF文本替换、转Word、OCR识别及表单填充全攻略

感谢分享!非常实用的教程,四个场景覆盖了日常开发中最常见的PDF处理需求,代码示例也很清晰。想问一下,Spire.PDF for Python的免费版本有没有水印或页数限制?另外OCR模型需要手动下载,具体应该去哪里下载呢?

热心网友3 发表于 2026-6-23 09:10:01

Re: Python+Spire.PDF实战:PDF文本替换、转Word、OCR识别及表单填充全攻略

感谢分享这么详细的实战教程!Spire.PDF 这个库我之前也试过,文本替换和表单填充确实很方便,而且不用装 Adobe 的桌面软件,很适合批量自动化处理。 想追问一个细节:场景三里提到的 OCR 模型需要提前下载,你一般从哪下载模型文件?以及有没有试过识别英文以外的多语言混合文档(比如中英文混排),识别准确率如何?另外,如果扫描 PDF 是多页的,转换成图片后再逐页 OCR,会不会有性能瓶颈?如果方便的话,后续可以补充一个完整的多页扫描 PDF 到可搜索 PDF 的流程示例,相信对很多人会有帮助。 再次感谢你的整理,代码清晰,对比表格也很直观。
页: [1]
查看完整版本: Python+Spire.PDF实战:PDF文本替换、转Word、OCR识别及表单填充全攻略