news 2026/4/19 11:09:36

PDF3MD:把 PDF 转成 Markdown 和 Word 的开源神器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PDF3MD:把 PDF 转成 Markdown 和 Word 的开源神器

PDF3MD:把 PDF 转成 Markdown 和 Word 的开源神器

平时处理文档的时候,经常遇到这种尴尬情况:收到一个 PDF 文件,想转成 Markdown 方便编辑,或者想导出成 Word 文档,但手头的工具要么功能单一,要么操作复杂,有的还得收费,真是让人头大。直到前几天,偶然发现 PDF3MD 这个开源工具,专门用来把 PDF 转成 Markdown 和 Word 格式,界面简洁,操作直观,简直是摸到了宝藏!

🔗 Claude Code 国内代理链接

温馨提示:通过此链接注册使用,可以送 20 美金抵扣券直接可用哦!千万别错过这个羊毛!

产品介绍:这是个啥子东西

PDF3MD 是一个现代化的 Web 应用,前端用 React 写的,后端用的是 Python Flask。它的核心功能就是把 PDF 文档转换成干净的 Markdown 格式,同时还能把 Markdown 再转成 Word(DOCX)文档。整个架构设计得相当精巧,用 PyMuPDF4LLM 来处理 PDF,用 Pandoc 来做 Markdown 到 Word 的转换,这两个都是业内相当成熟的工具。

这个项目最巴适的地方是它的用户界面做得特别漂亮,支持拖拽上传文件,可以实时显示转换进度,处理完成后可以直接复制 Markdown 内容,或者下载 Word 文档。而且支持批量上传多个 PDF 文件同时转换,每个文件都会显示原始名称、大小、页数和转换时间戳,信息一目了然。

和其他工具横向对比

说实话,市面上 PDF 转换工具真不少,但各有各的问题。咱们来摆摆龙门阵,对比一下几个常见的解决方案:

在线转换工具(如 Smallpdf、ILovePDF 等):这些工具优点是不用安装,直接在浏览器里就能用。但缺点也很明显,通常有文件大小限制,批量转换要付费,而且要把文件上传到第三方服务器,隐私方面让人有点担心。PDF3MD 作为本地部署方案,数据完全在自己掌控中,安全感拉满。

Adobe Acrobat:这个算是业界老大哥了,功能确实强大,但价格也是真的贵,而且对于咱们这种只需要简单转换功能的用户来说,有点杀鸡用牛刀的意思。PDF3MD 是开源免费的,部署成本几乎为零,性价比直接秒杀。

Python 脚本方案:很多技术人会自己写脚本用 pdfplumber、fitz 这些库来转换,虽然灵活,但对普通用户不太友好,还得配置 Python 环境。PDF3MD 把这些复杂操作都封装在 Web 界面后面了,有手就能用,完全不需要懂代码。

Pandoc 命令行工具:Pandoc 本身很强大,但命令行操作对新手不够友好,而且直接用 Pandoc 转 PDF 效果一般,会丢失格式。PDF3MD 底层也用 Pandoc,但专门做了优化,转换质量要好很多。

从架构上看,PDF3MD 采用前后端分离的设计,前端负责用户交互和进度展示,后端负责实际的文件处理。这种架构比单体应用更易维护,也为后续功能扩展留足了空间。对比一些老的桌面应用,Web 界面天然就支持远程访问,在服务器上部署一次,局域网内的设备都能用,相当方便。

技术栈解析

对于咱们技术人来说,了解一个项目的底层技术也挺有意思的:

  • 前端:React + Vite,现在前端圈最流行的组合之一,开发体验好,打包速度快
  • 后端:Python Flask,轻量级 Web 框架,处理这种中小型应用刚刚好
  • PDF 处理:PyMuPDF4LLM,这是基于 MuPDF 的封装库,解析 PDF 的能力相当强
  • 文档转换:Pandoc,文档转换界的瑞士军刀,支持无数种格式互转

这个技术选型相当务实,没有引入不必要的复杂度,每个组件都干自己最擅长的事情。

安装和部署

PDF3MD 提供了好几种部署方式,咱们按从简单到复杂的顺序来摆。

方式一:Docker 快速部署(推荐)

这是最简单的办法,只需要 Docker 和 Docker Compose 就行。首先创建一个项目目录:

mkdirpdf3md-app&&cdpdf3md-app

然后创建一个docker-compose.yml文件,内容如下:

services:backend:image:docker.io/learnedmachine/pdf3md-backend:latestcontainer_name:pdf3md-backendports:-"6201:6201"environment:-PYTHONUNBUFFERED=1-FLASK_ENV=production-TZ=Asia/Shanghaivolumes:-./pdf3md/temp:/app/temprestart:unless-stoppedhealthcheck:test:["CMD","curl","-f","http://localhost:6201/"]interval:30stimeout:10sretries:3start_period:40sfrontend:image:docker.io/learnedmachine/pdf3md-frontend:latestcontainer_name:pdf3md-frontendports:-"3000:3000"depends_on:-backendrestart:unless-stoppedhealthcheck:test:["CMD","wget","--no-verbose","--tries=1","--spider","http://localhost:3000/"]interval:30stimeout:10sretries:3start_period:40snetworks:default:name:pdf3md-network

然后执行启动命令:

dockercompose up -d

等服务启动完成后,访问http://localhost:3000就能看到界面了。注意我把时区改成了Asia/Shanghai,这样显示的时间戳就是咱们本地时间,更方便。

方式二:开发环境部署

如果你想自己改代码或者贡献 PR,可以克隆源码本地跑:

gitclone https://github.com/murtaza-nasir/pdf3md.gitcdpdf3md/pdf3md

启动后端:

pipinstall-r requirements.txt python app.py

启动前端(新开一个终端):

npminstallnpmrun dev

前端会在http://localhost:5173启动,后端在http://localhost:6201。源码里还提供了start_server.shstop_server.sh两个脚本,可以一键启动和停止前后端服务,记得先给它们加上执行权限:

chmod+x start_server.sh stop_server.sh

方式三:配合反向代理部署到服务器

如果你想部署到云服务器上供团队使用,可以配合 Nginx 做反向代理。假设你有一个域名pdf3md.example.com,Nginx 配置大致是这样:

server { listen 80; server_name pdf3md.example.com; # 前端 location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } # 后端 API location /api/ { proxy_pass http://localhost:6201/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }

这个配置会把根路径请求转发到前端服务,/api/路径的请求转发到后端。记得加上 SSL 证书,Let’s Encrypt 免费的就很不错。

使用方法

部署好之后,使用起来相当简单:

  1. 打开浏览器访问应用地址
  2. 把 PDF 文件拖到上传区域,或者点击选择文件
  3. 可以一次上传多个文件,系统会排队处理
  4. 每个文件都会显示实时转换进度
  5. 转换完成后,可以直接复制 Markdown 文本
  6. 如果需要 Word 文档,切换到 “MD → Word” 模式,粘贴 Markdown 内容就能下载 DOCX 文件

整个体验非常流畅,没有广告,没有弹窗,就是一个干干净净的工具。批量处理的时候特别爽,比如手头有几十篇论文要转换,丢进去就不用管了,处理完了直接批量复制出来。

常见问题排查

如果遇到问题,可以参考以下几个常见情况:

端口冲突:确保 3000、5173 和 6201 端口没被占用,如果冲突了可以在 docker-compose.yml 里改端口映射。

Docker 启动失败:确认 Docker 服务正常运行,可以试试docker compose up --build重新构建镜像。

API 连接不上:检查后端容器是否正常运行,可以用docker compose logs backend查看日志,看报什么错。

转换质量不理想:这个取决于原始 PDF 的质量,扫描版 PDF 效果肯定不如文字版,毕竟是 OCR 识别的局限性。

总结一下

PDF3MD 这个项目最大的优点就是简单实用,没有花里胡哨的功能,就是专注把 PDF 转换这件事做好。开源免费、本地部署、批量处理,这几个点就足够让它成为很多人工具箱里的常备工具了。

对于个人用户来说,Docker 一键部署就能用;对于团队来说,部署到服务器上就是个小型的文档转换服务。代码质量也不错,架构清晰,想二次开发或者贡献代码也很容易。

如果你经常需要处理 PDF 转换,不妨试试 PDF3MD,说不定就离不开它了。

项目地址:https://github.com/murtaza-nasir/pdf3md

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 6:18:16

西门子平台数据采集API接口正式发布:赋能全场景数据高效协同

为破解工业现场与电商场景数据采集的碎片化、低效率、兼容性难题,西门子正式发布全新平台数据采集接口,实现从工业设备信号到电商商品详情的全链路数据统一采集、标准化传输与安全管控。该接口深度整合西门子工业自动化生态与数字商务体系,兼…

作者头像 李华
网站建设 2026/4/16 12:22:16

家政预约小程序源码系统的核心功能,直接连接海量用户

温馨提示:文末有资源获取方式家政行业走向线上化、标准化已是不可逆转的趋势。一个优秀的小程序,能够成为服务提供者最得力的数字助手,直接连接海量微信用户,解决获客难、管理乱、信任度低等核心痛点。近期,一款专注于…

作者头像 李华
网站建设 2026/4/16 13:26:18

langchain怎么构造agant

使用 LangChain 构造 Agent(智能体)现在已经变得非常简单,尤其是随着 LangChain 1.0 版本的发布,API 更加统一和易用。你可以根据你的需求选择不同的复杂度。最简单的方式,只需要几行代码就能让大模型“动起来”。这里…

作者头像 李华
网站建设 2026/4/16 15:32:56

区块链应用UI自动化测试的特殊挑战与应对策略

区块链技术的去中心化和不可篡改性为应用开发带来革命性变革,但同时也为UI自动化测试引入独特难题。与传统Web应用不同,区块链UI测试需处理多节点交互、数据一致性保障和安全验证等复杂场景,这对测试从业者的工具选择和策略设计提出更高要求。…

作者头像 李华
网站建设 2026/4/18 9:11:27

智能穿戴设备微型界面测试方法论

一、微型界面特性与测试挑战 智能穿戴设备的屏幕尺寸通常在1-2英寸之间,其界面测试面临三大核心挑战: ‌空间限制‌:在有限像素区域内呈现复杂数据(如健康指标动态图表),需验证信息密度与可读性的平衡。‌…

作者头像 李华
网站建设 2026/4/18 17:30:52

UI测试在DevOps流水线中的卡点设计:质量保障的智能防线

在DevOps高速交付的背景下,UI测试作为用户体验的最终防线,其卡点(Quality Gates)设计直接决定软件质量与发布效率。卡点通过在流水线关键阶段植入自动化检测或人工审核机制,拦截缺陷流入下游,避免因UI问题导…

作者头像 李华