当前位置: 首页 > backend >正文

一站式PDF转Markdown解决方案PDF3MD

在这里插入图片描述

简介

什么是 PDF3MD ?

PDF3MD 是一个现代化、用户友好的网络应用程序,旨在将 PDF 文档转换为干净、格式化的 Markdown 文本。它提供了高效的转换工具,支持多种文件格式之间的转换。

主要特点

  1. PDF 转 Markdown:能够将 PDF 文档转换为可读性强的 Markdown 格式,同时保留文档的结构元素。
  2. Markdown 转 Word (DOCX):支持将用户提供的 Markdown 文本转换为 DOCX 格式,使用 Pandoc 实现高质量输出。
  3. 多文件上传:支持同时上传和处理多个 PDF 文件,提升工作效率。
  4. 拖拽式界面:提供用户友好的文件上传方式,支持拖放或传统的文件选择。
  5. 实时进度跟踪:在转换过程中提供详细的状态更新,用户可以实时监控转换进度。
  6. 现代响应式用户界面:设计直观,适合各种设备使用。

应用场景

  • 文档转换:适用于需要将 PDF 文档转换为 Markdown 的用户,例如技术文档编辑、博客撰写等。
  • 内容编辑:方便用户在 Markdown 格式下进行内容编辑和格式化,然后可以轻松导出为 Word 文档。
  • 批量处理:适合需要处理大量文档的场景,例如教育机构、出版社等。

PDF3MD 通过提供简化的文档转换流程,大大提升了用户的工作效率和体验。

安装

在群晖上以 Docker 方式安装。

本文写作时, latest 版本对应为 sha-229610b

采用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

services:backend:image: learnedmachine/pdf3md-backend:latest container_name: pdf3md-backendrestart: unless-stoppedports:- "6201:6201"volumes:- ./data:/app/tempenvironment:- PYTHONUNBUFFERED=1- FLASK_ENV=production- TZ=Asia/Shanghaihealthcheck:test: ["CMD", "curl", "-f", "http://localhost:6201/"]interval: 30stimeout: 10sretries: 3start_period: 40sfrontend:image: learnedmachine/pdf3md-frontend:latest container_name: pdf3md-frontendrestart: unless-stoppedports:- "6202:3000"environment: {}depends_on:- backendhealthcheck:test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/"]interval: 30stimeout: 10sretries: 3start_period: 40s

然后执行下面的命令

# 新建文件夹 pdf3md 和 子目录
mkdir -p /volume1/docker/pdf3md/data# 进入 pdf3md 目录
cd /volume1/docker/pdf3md# 将 docker-compose.yml 放入当前目录# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:6202 就能看到主界面

PDF 转 MD

老苏将本文在 obsidian 中转成了 pdf 格式

然后将 pdf 丢进来 PDF3MD

转换速度很快,虽然不能 100% 复原,但是也大差不差的

不要用那种扫描的 pdf 文件,毕竟还不支持 ocr 功能

MD 转 Word

markdown 粘贴到文本框,转换速度相对慢很多

但是效果看起来还是不错的

参考文档

murtaza-nasir/pdf3md: A modern, user-friendly web application that converts PDF documents to clean, formatted Markdown text.
地址:https://github.com/murtaza-nasir/pdf3md

http://www.xdnf.cn/news/15778.html

相关文章:

  • 数据库第四次作业
  • Flexbox vs Float vs Table:现代布局终极对比
  • kombu 运行超长时间任务导致RabbitMQ消费者断开
  • (LeetCode 面试经典 150 题) 49. 字母异位词分组 (哈希表)
  • 基于Eureka和restTemple的负载均衡
  • buildroot运行qemu进行pcie设备模拟,开发驱动的方式
  • 【RK3576】【Android14】Android平台构建
  • 爬虫逆向之JS混淆案例(全国招标公告公示搜索引擎 type__1017逆向)
  • 重学Framework Input模块:如何实现按键一键启动Activity-学员作业
  • HTML5中的自定义属性
  • 【洛谷】询问学号、寄包柜、移动零、颜色分类(vector相关算法题p1)
  • 实验室危险品智能管控:行为识别算法降低爆炸风险
  • bws-rs:Rust 编写的 S3 协议网关框架,支持灵活后端接入
  • 汽车ECU控制器通信架构
  • Java学习--------消息队列的重复消费、消失与顺序性的深度解析​
  • Linux 内存管理(2):了解内存回收机制
  • Python实现智能文件搜索系统:从基础到高级应用
  • 【Oracle】ORACLE OMF说明
  • AUTOSAR进阶图解==>AUTOSAR_SWS_DiagnosticLogAndTrace
  • Redisson RLocalCachedMap 核心参详解
  • kotlin部分常用特性总结
  • Ultralytics代码详细解析(三:engine->trainer.py主框架)
  • LVS——nat模式
  • 电机相关常见名词
  • 如何解决Flink CDC同步时间类型字段8小时时间差的问题,以MySQL为例
  • Redis Sentinel哨兵集群
  • Spring之【AnnotatedBeanDefinitionReader】
  • 针对大规模语言模型的上下文工程技术调研与总结(翻译并摘要)
  • 【C++】入门阶段
  • 基于开放API接口采集的定制开发开源AI智能名片S2B2C商城小程序数据整合与增长策略研究