PaddleOCR PDF2Word 实战指南基于 PP-StructureV2 版面恢复的 PDF/图片转 Word 转换工具全解析【免费下载链接】PaddleOCR飞桨多语言OCR工具包实用超轻量OCR系统支持80种语言识别提供数据标注与合成工具支持服务器、移动端、嵌入式及IoT设备端的训练与部署 Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80 languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)项目地址: https://gitcode.com/paddlepaddle/PaddleOCR本文聚焦 PaddleOCR 仓库中的 PDF2Word 应用ppstructure/pdf2word它由社区开发者基于 PP-StructureV2 版面分析与版面恢复模型实现可将 PDF 与文档图片一键转换为可编辑的 Word 文件并同时提供免环境配置的 Windows exe 程序、源码脚本与paddleocrwhl 包三种使用方式。读完本文你将掌握 PDF2Word 的完整安装与操作流程理解其「版面分析 → OCR/表格识别 → 版面恢复生成 docx」的底层调用链并学会在 Linux/Mac 上通过 whl 包复现同样的转换能力。一、PDF2Word 是什么PDF2Word 是 PaddleOCR 社区开发者 whjdark当前版本号0.2.2。它解决的核心问题是扫描件、图片型 PDF 无法被常规 PDF 解析器直接提取文字需要先经过版面分析定位文本、表格、图片区域再分别做 OCR 识别、表格结构识别最后按原始版面顺序重新排版成可编辑的 Word 文档。这正是 PP-Structure 系列「版面恢复Layout Recovery」能力的落地形态相关模块说明可参考 ppstructure/recovery/README.md。与纯命令行方案相比PDF2Word 最突出的价值在于面向 Windows 用户提供可直接安装的pdf2word.exe免去 Python 环境、PaddlePaddle 框架、模型下载等一系列繁琐配置内置中英文双引擎由于 PP-Structure 针对中英文数据分别适配转换时可根据文档语言一键选择「中文转换」或「英文转换」同时提供源码运行与 whl 包两种方式覆盖不同平台与不同技术背景的用户。二、三种使用方式2.1 方式一Windows 应用程序pdf2word.exe针对 Windows 用户这是最简单的路径下载与安装从「软件下载」一节获取安装包后运行pdf2word.exe。需要注意 lite 与 serve 两个版本的差异lite 版本安装过程中会在线下载环境依赖、模型等必要资源安装时间较长需确保网络畅通serve 版本已打包相关依赖安装时间较短可按需下载。转换由于 PP-Structure 根据中英文数据分别适配在转换相应文件时应根据文档语言进行相应选择。在 GUI 中对应「中文转换」「英文转换」两个按钮另有一个「PDF解析」按钮走独立的 PDF 解析通道详见下文 3.3 节。打开结果转换完成后点击「显示结果」即可打开输出文件夹查看生成的 Word 文件。使用过程中的已知注意点原文档明确说明初次安装程序时根据不同设备需要等待 1~2 分钟不等使用 Office 与 WPS 打开的 Word 结果会出现差异推荐以 Office 为准程序使用 QPT 进行应用程序打包感谢 GT-ZhangAcer 对打包过程的支持应用程序仅支持正版 Windows 10/11 系统不支持盗版 Windows若安装过程中出现报错或缺少依赖推荐直接使用paddleocrwhl 包应用 PDF2Word 功能见 2.3 节。从源码 pdf2word.py 的界面构建逻辑setupUi方法可以看到主界面是一个QGridLayout布局从上到下依次为操作按钮行、进度条QProgressBar与剩余时间估算标签Time Left。按钮与功能一一对应打开文件、中文转换、英文转换、PDF解析、显示结果并分别配以 icons 目录下的图标资源。2.2 方式二脚本启动源码运行需要查看或修改源码、在 Windows 上复现 GUI 应用时可切换到仓库源码运行。原文档给出的启动命令为cd ./ppstructure/pdf2word python pdf2word.py首次运行时会自动完成两项初始化自动下载中英文两套模型APP_Image2Doc.__init__中依次调用downloadModels(URLs_EN)与downloadModels(URLs_CN)见 pdf2word.py模型会被下载并解压到仓库根目录的inference/文件夹因此请确保首次运行网络畅通初始化中英文两套预测器predictors {EN: self.initPredictor(EN), CN: self.initPredictor(CN)}内部通过ppstructure.utility.parse_args()解析参数后创建StructureSystem见 pdf2word.py。补充一个细节命令要求先cd到ppstructure/pdf2word目录是因为程序代码中通过./icons/folder-plus.png等相对路径加载按钮图标而模型存放根目录root则是基于脚本文件位置计算得出的root os.path.abspath(os.path.join(file, ../../))与当前工作目录无关。2.3 方式三paddleocr whl 包推荐 Linux/Mac 用户针对 Linux、Mac 用户或已经拥有 Python 环境的用户推荐安装paddleocrwhl 包直接应用 PDF2Word 功能这也是原文档针对非 Windows 平台给出的官方建议路径。whl 包下 PDF/图片转 Word 的完整命令行用法记录在仓库的版面恢复文档中可参考 ppstructure/recovery/README.md 第 3、4 节# 标准 PDF 解析方式依赖 pdf2docx paddleocr --image_dirpath/to/your.pdf --typestructure --recoverytrue --use_pdf2docx_apitrue # 图片型 PDF / 文档图片方式OCR 版面恢复英文文档指定 --langen paddleocr --image_dirpath/to/your.png --typestructure --recoverytrue --langen其中--recoverytrue开启版面恢复输出 Word--use_pdf2docx_apitrue走标准 PDF 解析通道。安装版面恢复所需依赖的命令为python3 -m pip install -r ppstructure/recovery/requirements.txt依赖清单见 ppstructure/recovery/requirements.txt包含python-docx、beautifulsoup4、fonttools、fire标准 PDF 解析还需额外安装pdf2docx。三、工作原理与源码级解析3.1 端到端转换流程结合 pdf2word.py 中Worker.ppocrPrecitor的调用链一次完整的「图片/PDF → Word」转换包含五个关键步骤readImagePyMuPDF 渲染 PDF 为图像 ↓ StructureSystem(img)版面分析 OCR 表格识别见 ppstructure/predict_system.py ↓ save_structure_res保存每页结构结果与表格 xlsx / 图片 ↓ sorted_layout_boxes按阅读顺序排序区域并标记单栏/双栏 ↓ convert_info_docx按版面信息生成 .docx 文件各步骤的职责如下readImagepdf2word.py若输入为 PDF则用fitzPyMuPDF逐页渲染为图像默认以Matrix(2, 2)两倍分辨率渲染保证 OCR 精度若渲染结果宽或高超过 2000 像素则回退为 1 倍分辨率防止内存占用过大。普通图片则直接cv2.imread读取StructureSystemppstructure/predict_system.pyPP-Structure 的核心预测器。先做版面分析LayoutPredictor把页面划分为 text / title / table / figure 等区域再对非表格区域调用TextSystem做全文 OCR并按版面区域过滤文本_filter_text_res通过检测框与版面框的交集判断归属表格区域交给TableSystem输出 HTML 结构save_structure_resppstructure/predict_system.py将每页结果写入res_{idx}.txt表格区域额外导出xlsx图片区域保存为jpgsorted_layout_boxes与convert_info_docx来自 ppstructure/recovery/recovery_to_doc.py负责版面恢复详见 3.4 节。代码中一次转换的核心循环如下Worker.run中的 OCR 分支imgs readImage(image_file) img_name os.path.basename(image_file).split(.)[0] os.makedirs(os.path.join(self.outputDir, img_name), exist_okTrue) self.ppocrPrecitor(imgs, img_name)输出目录为与输入文件同目录的output/文件夹见 pdf2word.py每个输入文件对应一个子目录Word 结果按{img_name}_ocr.docx命名。3.2 中英文双引擎与模型自动下载PDF2Word 在源码中为英文URLs_EN与中文URLs_CN各配置了一套完整模型组合pdf2word.py能力英文模型URLs_EN中文模型URLs_CN文本检测en_PP-OCRv3_det_infercn_PP-OCRv3_det_infer文本识别en_PP-OCRv3_rec_infercn_PP-OCRv3_rec_infer表格结构en_ppstructure_mobile_v2.0_SLANet_infercn_ppstructure_mobile_v2.0_SLANet_infer版面分析picodet_lcnet_x1_0_fgd_layout_inferpublaynetpicodet_lcnet_x1_0_fgd_layout_cdla_inferCDLA配套的字符字典也分语言配置DICT_EN/DICT_CN英文识别使用 ppocr/utils/en_dict.txt中文识别使用 ppocr/utils/ppocr_keys_v1.txt版面分析字典分别为layout_publaynet_dict.txt与layout_cdla_dict.txt位于 ppocr/utils/dict/layout_dict表格结构字典统一为 ppocr/utils/dict/table_structure_dict.txt。downloadModelspdf2word.py的下载与解压逻辑值得注意模型 tar 包下载到inference/目录后并不会整包解压而是只抽取inference.pdmodel、inference.pdiparams、inference.pdiparams.info兼容model.pd*命名三类推理必需文件写入以模型名命名的子目录。若文件已存在则跳过下载因此重复运行不会重复下载。预测器初始化initPredictor中硬编码了关键参数pdf2word.pyargs.table_max_len 488表格识别输入最大边长args.ocr True、args.recovery True开启 OCR 与版面恢复args.vis_font_path指向 doc/fonts/simfang.ttf模型目录、输出目录均指向仓库根目录下的inference/与output/。这些参数与 PP-Structure 命令行工具的通用参数定义默认值、含义保持一致可对照 ppstructure/utility.py 查看完整参数列表。3.3 两种 PDF 处理模式OCR 恢复 vs pdf2docx 解析PDF2Word 的「PDF解析」按钮走的是与 OCR 恢复不同的技术路线。点击后handleStartSignal(CN, True)将use_pdf2docx_api置为True在 Worker.run 中形成分支if self.use_pdf2docx_api and os.path.basename(image_file)[-3:] pdf: from pdf2docx.converter import Converter cv Converter(image_file) cv.convert(docx_file) cv.close() else: imgs readImage(image_file) self.ppocrPrecitor(imgs, img_name)即「PDF解析」直接调用pdf2docx库解析 PDF 内部文字流生成 docx适合标准 PDF「中文转换」「英文转换」则走 OCR 版面恢复通道适合扫描件、图片型 PDF 与文档图片。这一设计也与 ppstructure/recovery/README.md 中两种版面恢复方法的对比一致标准 PDF 解析对非纸质文档恢复效果更好每页保持在同一页但部分中文文档中的英文字符可能乱码、部分内容可能超出当前页图片型 PDF 解析OCR 恢复更适合纸质文档内容恢复OCR 识别效果好但排版间距、字体等依赖规则效果取决于版面分析质量。需要说明的是pdf2docx属于可选依赖仅在点击「PDF解析」时按需加载源码中使用try_import(pdf2docx)懒加载不影响其他功能的使用。3.4 版面恢复细节单栏/双栏判断与 docx 生成convert_info_docx与sorted_layout_boxes是生成 Word 的核心ppstructure/recovery/recovery_to_doc.pysorted_layout_boxesL87-L155按「从上到下、从左到右」的阅读顺序对版面区域排序并根据区域 bbox 与页面宽度的位置关系w/2、w/4、3w/4三条分界线将每个区域标记为single单栏或double双栏为双栏文档的还原做准备convert_info_docxL32-L84使用python-docx逐区域写回文档。其中标题区域通过doc.add_heading生成标题正文段落设置Times New Roman 宋体字体正文首行缩进 0.25 英寸字号 10pt表格区域通过HtmlToDocx把表格识别输出的 HTML 转为 Word 原生表格TableGrid样式图片区域居中插入单栏下宽度 5 英寸、双栏下 2 英寸根据layout标记动态切换文档分栏WD_SECTION.CONTINUOUS连续分节单栏/双栏交替。3.5 GUI 与多线程设计为避免大文件转换时界面卡死PDF2Word 将耗时任务放在QThread子线程Worker中执行pdf2word.py通过信号槽与主界面通信progressBarRange更新进度条总范围按累计页数progressBarValue每完成一页 1endsignal/exceptedsignal转换结束或异常时通知主线程弹窗主线程根据已完成页数与已耗时估算剩余时间Time Left显示在界面底部。Worker还通过setLang、setImagePath、setOutputDir、setPDFParser等方法支持运行时配置输出目录固定在输入文件所在目录下的output/。展示结果时Windows 平台调用os.startfile其他平台调用open命令打开结果文件夹pdf2word.py。四、版本说明v0.2 版新加入 PDF 解析功能即「PDF解析」按钮对应的 pdf2docx 通道仅提供 full 版本打包了所有依赖包与模型文件尽可能避免安装失败问题。若仍然安装失败推荐使用paddleocrwhl 包。当前源码版本为0.2.2见 pdf2word.py 的__APPNAME__/__VERSION__定义。五、注意事项与故障排查综合原文档与源码实现使用中请重点留意以下几点Windows 安装失败时的退路exe 安装报错或缺少依赖时推荐直接使用paddleocrwhl 包功能完全等价且无需关心 QPT 打包环境的兼容性问题系统要求应用程序仅支持正版 Windows 10/11这是打包方QPT对运行环境的硬性约束结果差异同一份 docx 用 Office 与 WPS 打开效果可能不同排版效果以 Office 为准首次运行等待lite 版本安装与首次启动需要在线下载依赖和模型耗时较长务必保证网络畅通文件格式支持GUI 的文件选择器支持*.png *.jpeg *.jpg *.bmp *.pdf五类文件pdf2word.py且支持多选批量转换PDF 渲染分辨率超过 2000 像素的页面会自动降为 1 倍分辨率渲染超大扫描件可能影响 OCR 精度属正常设计权衡。六、延伸阅读版面恢复模块整体说明与命令行完整用法ppstructure/recovery/README.md版面恢复的 docx 生成与分栏排序实现ppstructure/recovery/recovery_to_doc.pyPP-Structure 预测器版面分析 OCR 表格核心实现ppstructure/predict_system.py全部命令行参数定义与默认值ppstructure/utility.pyPDF2Word 完整源码GUI、模型下载、线程调度ppstructure/pdf2word/pdf2word.py【免费下载链接】PaddleOCR飞桨多语言OCR工具包实用超轻量OCR系统支持80种语言识别提供数据标注与合成工具支持服务器、移动端、嵌入式及IoT设备端的训练与部署 Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80 languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)项目地址: https://gitcode.com/paddlepaddle/PaddleOCR创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考