【Python】只需2行代码,轻松将PDF转换成Word(含示范案例)

2023-11-04

一、前期准备

可将 PDF 转换成 docx 文件的 Python 库。该项目通过 PyMuPDF 库提取 PDF 文件中的数据,然后采用 python-docx 库解析内容的布局、段落、图片、表格等,最后自动生成 docx 文件。

第一步,下载 PyMuPDF 包:

pip install PyMuPDF

在这里插入图片描述
第二步,下载 python-docx 包:

pip install python-docx

在这里插入图片描述
第三步,下载 pdf2docx 包:

pip install pdf2docx

在这里插入图片描述

二、pdf2docx功能

  • 解析和创建页面布局

(1)页边距

(2)章节和分栏 (目前最多支持两栏布局)

(3)页眉和页脚 [TODO]

  • 解析和创建段落

(1)OCR 文本 [TODO]

(2)水平(从左到右)或竖直(自底向上)方向文本

(3)字体样式例如字体、字号、粗/斜体、颜色

(4)文本样式例如高亮、下划线和删除线

(5)列表样式 [TODO]

(6)外部超链接

(7)段落水平对齐方式 (左/右/居中/分散对齐)及前后间距

  • 解析和创建图片

(1)内联图片

(2)灰度/RGB/CMYK等颜色空间图片

(3)带有透明通道图片

(4)浮动图片(衬于文字下方)

  • 解析和创建表格

(1)边框样式例如宽度和颜色

(2)单元格背景色

(3)合并单元格

(4)单元格垂直文本

(5)隐藏部分边框线的表格

(6)嵌套表格

  • 支持多进程转换

pdf2docx 同时解析出了表格内容和样式,因此也可以作为一个表格内容提取工具。

三、限制

  • 目前暂不支持扫描PDF文字识别
  • 仅支持从左向右书写的语言(因此不支持阿拉伯语)
  • 不支持旋转的文字
  • 基于规则的解析无法保证100%还原PDF样式

四、案例

我们有这样一篇PDF:

在这里插入图片描述
代码如下:

from pdf2docx import parse
pdf_file = './ResNet.pdf'
docx_file = './resnet.docx'
# convert pdf to docx
parse(pdf_file, docx_file)

在这里插入图片描述
输出结果为:

在这里插入图片描述

效果还可以,不过会缺失一部分数据!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Python】只需2行代码,轻松将PDF转换成Word(含示范案例) 的相关文章

  • 如何使用 MigraDoc 让表情符号出现在生成的 PDF 中

    我正在尝试生成包含一些表情符号的 PDF 但没有成功 为了使其简单且可重现 这里是代码 Document document new Document Section section document AddSection Paragraph
  • 如何用C#替换PDF中的文本?

    我在这里看到了很多解决方案 但没有一个是明确或好的答案 这是我的简单问题 希望得到直接答案 我有一个 PDF 文件 模板 其创建的文本如下 名字 姓氏 地址 电话号码 是否可以使用 C 代码将这些模板替换为我选择的文本 没有字段 没有其他复
  • 在solr中获取pdf搜索结果的页码

    我正在构建一个 Web 应用程序 用户可以在其中搜索 pdf 文档并使用 pdf js 查看它们 我想显示搜索结果 其中包含找到搜索词的段落的简短片段以及用于在右侧页面打开文档的链接 所以我需要的是每个搜索结果的页码和简短的文本片段 我正在
  • 使用 html2canvas 将 highcharts 图表渲染为 pdf 在 IE 和 Firefox 上不起作用

    我们使用 html2canvas js 和 html2canvas svg js 版本 0 5 0 beta1 以及 highcharts js 将圆环图下载为 pdf 这在 Chrome 中按预期工作 但在 IE 和 Firefox 中不
  • 如何使用 PDFBox 创建转到*上一视图*的链接?

    通过使用 PDFBox 可以轻松创建指向特定页面或页面视图的链接PDPageDestination 例如 以下代码将创建一个转到第 9 页的链接 PDAnnotationLink link new PDAnnotationLink PDPa
  • 如何让 PDF 内容(由 Spring MVC 控制器方法提供)显示在新窗口中

    我是 Spring MVC 的新手 但它的功能给我留下了深刻的印象 我正在使用 3 1 0 RELEASE 并且我必须显示 PDF 来响应 form form 提交 这是我在控制器中编写的 小 代码 RequestMapping value
  • pdf文件文本阅读和搜索

    我想从 pdf 文件中读取文本并将文本搜索到 pdf 文件中 这是我知道的链接 这些都帮不了我 使用 Quartz 2D 解析 pdf 时获取文本位置 https stackoverflow com questions 3627745 ge
  • 使用数学符号注释 Adob​​e Reader PDF

    我阅读的许多数学教科书和其他文献都是 PDF 格式 因此我经常使用 Adob e Reader 注释工具对它们进行注释 我确实找到了一个有用的指南 http cjasn asnjournals org site misc annotatin
  • Linux:命令行实用程序将 RTF 转换为 PDF?

    有什么建议可以将 RTF 转换为 PDF 吗 我需要从 LAMP 应用程序执行此操作 因此像 GhostScript 这样的命令行实用程序将是理想的选择 或者 您可以使用 libreoffice 来完成此任务 libreoffice hea
  • 渲染从 SimpleDocTemplate 构建的 ReportLab pdf

    我有一个 django 应用程序 当前使用用户可以下载的画布生成 pdf 我创建一个 StringIO 缓冲区 执行一些操作 然后发送调用 response write Set up response response HttpRespon
  • 使用 iTextSharp 5.3.3 和 USB 令牌签署 PDF

    我是 iTextSharp 和 StackOverFlow 的新手 我正在尝试使用外部 USB 令牌在 C 中签署 PDF 我尝试使用从互联网上挖掘的以下代码 Org BouncyCastle X509 X509CertificatePar
  • 如何使用文件输入在PDFJS中打开本地PDF?

    我想知道是否有办法使用选择pdf文件input type file 并使用打开它PDFJS https github com mozilla pdf js 您应该能够使用 FileReader 来获取文件对象的内容作为类型化数组 pdfjs
  • 将文本叠加在图像背景上并转换为 PDF

    使用 NET 我想以编程方式创建一个 PDF 它仅包含一个背景图像 其上有两个具有不同字体和位置的标签 我已阅读过有关现有 PDF 库的信息 但不知道 如果适用 哪一个对于如此简单的任务来说最简单 有人愿意指导我吗 P D 我不想使用生成的
  • 如何在无头模式下使用 Libre Office Draw 从命令行创建 PDF/A?

    LibreOffice Draw 允许您打开非 PDF A 文件并将其导出为 PDF A 1b 或 PDF A 2b 文件 通过在 macOS 上调用命令行也可以实现相同的效果 Applications LibreOffice app Co
  • Windows 如何批量打印 PDF 文档?

    在我的机器上 当在 Windows 资源管理器中选择多个 PDF 文档时 右键单击并选择Print Adobe Acrobat Reader 将最小化打开 所有文档都会静默发送到打印机 我想做Windows一样的事情 但是怎么做呢 我在用P
  • 在 RMarkdown 输出到 PDF 时缩进而不添加项目符号点或编号

    之前有人问过如何在没有项目符号的情况下缩进文本 RMarkdown 中的点 但这是针对 HTML 输出的 在 RMarkdown 中缩进而不添加项目符号点或数字 https stackoverflow com questions 47087
  • 如何在启用嵌入时间戳和 LTV 的情况下签署 PDF?

    我正在尝试签署启用了时间戳和 LTV 的 pdf 以便它在 Adob e Reader 中显示如下 在英语中 这意味着 签名包含嵌入的时间戳 和 签名启用了 LTV 这是我正在使用的代码 PrivateKey pk get pk from
  • 在chrome中将pdf渲染为iframe

    我正在尝试将 pdf 托管在隐藏的 iframe 中 但在 Chrome 中呈现较小的问题时遇到问题 我必须刷新页面才能正确加载 JSfiddle 在这里https jsfiddle net 464xo40f https jsfiddle
  • 在 iPad 上显示 PDF 文档 - 颜色问题

    我为 iPad 构建了一个 PDF 阅读器 在将预览中的文档与模拟器和设备进行并排比较时 我注意到一些颜色问题 最好的形容就是颜色变得更加浓郁 近距离使用的相似颜色之间的任何差异都会变得更加明显 而所有颜色总体上看起来都更亮 尽管大肆宣传将
  • 在 JSPdf 中嵌入二进制文件

    我在用着JsPDF https www npmjs com package jspdf将 html 内容导出到下载的 PDF 考虑以下示例 该示例获取一些 HTML 内容并将其输出到下载的 PDF 文件 使用JsPdf import Rea

随机推荐

  • https://www.cnblogs.com/wenwenli/p/8301975.html

    https www cnblogs com wenwenli p 8301975 html 单线程 单进程 非阻塞 事件驱动 句柄就是函数 事件驱动模型 事件源 触发事件 监听事件程序 事件处理程序 路径的要求不严格 node的知识点 1
  • 使用 WSL 在 Windows 上安装 Linux 编程

    使用 WSL 在 Windows 上安装 Linux 编程 近年来 随着开源软件的盛行和跨平台开发的需求不断增长 Windows Subsystem for Linux WSL 成为了一个备受瞩目的工具 WSL 允许我们在 Windows
  • pycharm设置中文,字体颜色修改,设置背景图片(图文讲解)

    目录 1 设置中文 2 设置背景图片 3 字体大小 颜色的修改 这个是我的pycharm编译器的样子 好看吧 pycharm在安装之后默认是英语的 有些小伙伴的英语不太会 看英文会比较吃力 这里我来教大家怎么去设置中文 以及字体颜色大小 背
  • 客户端client 突然断电了,那么服务器如何快速的知道呢

    1 使用定时器 适合有数据流动的情况 2 使用socket选项SO KEEPALIVE 适合没有数据流动的情况 心跳包技术 心跳包之所以叫心跳包是因为 它像心跳一样每隔固定时间发一次 以此来告诉服务器 这个客户端还活着 事实上这是为了保持长
  • elementui el-tree多层级数据递归根据条件筛选(禁用指定节点)

    项目中用的是elementui的tree组件 要实现的效果是根据关键字去筛选过滤出禁用的节点 所以首先需要的是对树结构数据进行整合 export function deepFilter3 nodes key query Array isAr
  • Android WebView 的使用

    WebView webView WebView findViewById R id webView webView loadUrl http 192 168 1 3 8080 action stream webView setWebView
  • 程序员如何写好一篇技术文章?

    结合自身写作经历以及本次训练营直播分享的内容 谈一谈写作技巧以及程序员如何写好一篇技术文章 1 写作训练营回顾 2020 年 12 月 26 日下午 我参加了一个写作训练营的直播 活动内容如下 该训练营是以直播的方式开展 四位嘉宾给大家分享
  • 图像识别ImageRecognition

    图像识别 注意 cv2中的色彩排列是 b g r 而matplotlib库中的排列方式是 r g b 本文件中采用plt进行输出 因此颜色不是准确的颜色 1 OpenCV 机器视觉 import cv2 as cv import numpy
  • 02C++11多线程编程之detach传参详解

    02C 11多线程编程之detach传参详解 这篇文章将介绍我们在使用detach时如何传参给子线程 1 detach传参为引用 include
  • 深度之眼(一)绪论和环境配置

    1 课程目标 缺乏语言基础 语言不够简洁 逻辑性差 规范性差 代码冗长 高效 解决相同问题 代码用时更长 占用内存更多 和强壮 容错性能差 知识体系不够完整 平时学习到知识点比较分散 用到了才去学习 人工智能和网络爬虫是python应用最多
  • 一个网站服务器有多少个ip,一个服务器可以有多少个ip地址

    一个服务器可以有多少个ip地址 内容精选 换一换 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 会话保持 指负载均衡器可以识别客户与服务器
  • 通过高通平台简单总结的权限问题

    android 5 x开始 引入了非常严格的selinux权限管理机制 我们经常会遇到因为selinux权限问题造成的各种avc denied困扰 有时候我们在添加了一些驱动或应用的时候 发现不能用 但是程序本身查不出问题来 那就要抓log
  • 详解JAVA远程debug

    目录 1 什么是远程debug 2 远程debug普通JAVA程序 环境 测试程序 程序启动指令 编译器配置 3 远程debug JAVA Web程序 4 远程debug spring boot程序 1 什么是远程debug 远程debug
  • 2021.11.17网上商城项目01

    网上商城项目 数据库 Unity 1 导入Unity连接数据库的插件 插件已上传 有需要的同学可以自行下载 2 先创建一个工具类用于数据库的连接 更新 读取 以及数据库的连接 读取的关闭 这样就可以不用每次都写 减少了代码的冗余 需要使用数
  • TCP/IP协议栈各层涉及到的协议

    21 tcp FTP 文件传输协议 22 tcp SSH 安全登录 文件传送 SCP 和端口重定向 23 tcp Telnet 远程连接 80 tcp HTTP 443 tcp HTTPS 计算机各层网络协议 五层 应用层 典型设备 应用程
  • jsp页面中文乱码解决方法

    在运行jsp页面时 发现本该出现中文的地方 出现的是乱码 中文乱码出现的原因一般是编码不符 检查一下代码 可以看到
  • PyQt5-多线程的使用

    PyQt中的多线程 它能实现多任务 让界面用一个线程更新 让逻辑代码在另外一个线程中 互不影响 如果不使用多线程的话 在运行一个时间较长的代码时 程序会卡住 使用多线程 import sys import time from PyQt5 i
  • Linux中使用Docker安装ElasticSearch7.10.x集群

    使用Docker安装ElasticSearch7 10 x单节点请访问这里 一 集群环境说明 服务器IP地址 192 168 137 1 192 168 137 2 192 168 137 3 二 前期准备 1 拉取镜像 docker pu
  • linux下percona-toolkit工具包的安装和使用(超详细版)

    一 检查和安装与Perl相关的模块 PT工具是使用Perl语言编写和执行的 所以需要系统中有Perl环境 依赖包检查命令为 rpm qa perl DBI perl DBD MySQL perl Time HiRes perl IO Soc
  • 【Python】只需2行代码,轻松将PDF转换成Word(含示范案例)

    文章目录 一 前期准备 二 pdf2docx功能 三 限制 四 案例 一 前期准备 可将 PDF 转换成 docx 文件的 Python 库 该项目通过 PyMuPDF 库提取 PDF 文件中的数据 然后采用 python docx 库解析