markpdfdown: 基于大模型视觉识别的PDF转Markdown工具

2025年10月08日 16:26:51
19922
llm markdown pdf PDF转换 PDF转Markdown PDF转md

项目结构

📌 markpdfdown MarkPDFdown/markpdfdown

A high-quality PDF to Markdown tool based on large language model visual recognition. 一款基于大模型视觉识别的高质量PDF转Markdown工具

项目大小 3.85 MB
涉及语言 Python 93.87% Dockerfile 5.04% Makefile 1.08%
许可协议 Apache License 2.0

MarkPDFDown

English | 中文 | 日本語 | Русский | فارسی | العربية

Size
Pulls
Tag
License

一个强大的工具,利用多模态大语言模型将PDF文件转录为Markdown格式。

markpdfdown

概述

MarkPDFDown 旨在简化将PDF文档转换为干净、可编辑的Markdown文本的过程。通过LiteLLM利用先进的多模态AI模型,它可以准确提取文本、保持格式,并处理包括表格、公式和图表在内的复杂文档结构。

功能特性

  • PDF转Markdown转换:将任何PDF文档转换为格式良好的Markdown
  • 图像转Markdown转换:将图像转换为格式良好的Markdown
  • 多提供商支持:通过LiteLLM支持OpenAI和OpenRouter
  • 灵活的CLI:支持基于文件和管道的使用模式
  • 格式保持:保持标题、列表、表格和其他格式元素
  • 页面范围选择:从PDF文档转换特定页面范围
  • 模块化架构:清洁、可维护的代码库,关注点分离

演示

安装

使用 uv(推荐)

1
2
3
4
5
6
7
8
9
10
11
12
# 如果还没有安装uv,先安装
curl -LsSf https://astral.sh/uv/install.sh | sh
 
# 克隆仓库
git clone https://github.com/MarkPDFdown/markpdfdown.git
cd markpdfdown
 
# 安装依赖并创建虚拟环境
uv sync
 
# 以开发模式安装包
uv pip install -e .

使用 conda

1
2
3
4
5
6
7
8
9
conda create -n markpdfdown python=3.9
conda activate markpdfdown
 
# 克隆仓库
git clone https://github.com/MarkPDFdown/markpdfdown.git
cd markpdfdown
 
# 安装依赖
pip install -e .

配置

MarkPDFDown 使用环境变量进行配置。在项目目录中创建 .env 文件:

1
2
# 复制示例配置
cp .env.sample .env

编辑 .env 文件设置您的配置:

1
2
3
4
5
6
7
8
9
10
11
12
# 模型配置
MODEL_NAME=gpt-4o
 
# API密钥(LiteLLM自动检测这些)
OPENAI_API_KEY=your-openai-api-key
# 或者使用OpenRouter
OPENROUTER_API_KEY=your-openrouter-api-key
 
# 可选参数
TEMPERATURE=0.3
MAX_TOKENS=8192
RETRY_TIMES=3

支持的模型

OpenAI 模型

1
2
3
MODEL_NAME=gpt-4o
MODEL_NAME=gpt-4o-mini
MODEL_NAME=gpt-4-vision-preview

OpenRouter 模型

1
2
3
MODEL_NAME=openrouter/anthropic/claude-3.5-sonnet
MODEL_NAME=openrouter/google/gemini-pro-vision
MODEL_NAME=openrouter/meta-llama/llama-3.2-90b-vision

使用方法

文件模式(推荐)

1
2
3
4
5
6
7
8
9
10
11
# 基本转换
markpdfdown --input document.pdf --output output.md
 
# 转换特定页面范围
markpdfdown --input document.pdf --output output.md --start 1 --end 10
 
# 将图像转换为markdown
markpdfdown --input image.png --output output.md
 
# 使用python模块
python -m markpdfdown --input document.pdf --output output.md

管道模式(Docker友好)

1
2
3
4
5
# 通过管道将PDF转换为markdown
markpdfdown < document.pdf > output.md
 
# 使用python模块
python -m markpdfdown < document.pdf > output.md

高级用法

1
2
3
4
5
6
7
# 转换PDF的第5-15页
markpdfdown --input large_document.pdf --output chapter.md --start 5 --end 15
 
# 处理多个文件
for file in *.pdf; do
    markpdfdown --input "$file" --output "${file%.pdf}.md"
done

Docker 使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 构建镜像(如果需要)
docker build -t markpdfdown .
 
# 使用环境变量运行
docker run -i \
  -e MODEL_NAME=gpt-4o \
  -e OPENAI_API_KEY=your-api-key \
  markpdfdown < input.pdf > output.md
 
# 使用OpenRouter
docker run -i \
  -e MODEL_NAME=openrouter/anthropic/claude-3.5-sonnet \
  -e OPENROUTER_API_KEY=your-openrouter-key \
  markpdfdown < input.pdf > output.md

开发设置

代码质量工具

此项目使用 ruff 进行代码检查和格式化,使用 pre-commit 进行自动化代码质量检查。

安装开发依赖

1
2
3
4
5
# 如果使用uv
uv sync --group dev
 
# 如果使用pip
pip install -e ".[dev]"

设置pre-commit钩子

1
2
3
4
5
# 安装pre-commit钩子
pre-commit install
 
# 在所有文件上运行pre-commit(可选)
pre-commit run --all-files

代码格式化和检查

1
2
3
4
5
6
7
8
# 使用ruff格式化代码
ruff format
 
# 运行代码检查
ruff check
 
# 修复可自动修复的问题
ruff check --fix

系统要求

  • Python 3.9+
  • uv(推荐用于包管理)或 conda/pip
  • pyproject.toml 中指定的依赖项
  • 访问支持的LLM提供商(OpenAI或OpenRouter)

架构

项目采用模块化架构:

1
2
3
4
5
6
7
8
9
10
src/markpdfdown/
├── __init__.py          # 包初始化
├── __main__.py          # python -m 入口点
├── cli.py               # 命令行接口
├── main.py              # 核心转换逻辑
├── config.py            # 配置管理
└── core/                # 核心模块
    ├── llm_client.py    # LiteLLM集成
    ├── file_worker.py   # 文件处理
    └── utils.py         # 工具函数

贡献

欢迎贡献!请随时提交Pull Request。

  1. Fork 仓库
  2. 创建您的功能分支 ( git checkout -b feature/amazing-feature )
  3. 设置开发环境:
    1
    2
    uv sync --group dev
    pre-commit install
  4. 进行更改并确保代码质量:
    1
    2
    3
    ruff format
    ruff check --fix
    pre-commit run --all-files
  5. 提交您的更改 ( git commit -m 'feat: Add some amazing feature' )
  6. 推送到分支 ( git push origin feature/amazing-feature )
  7. 打开Pull Request

请确保您的代码通过运行代码检查和格式化工具来遵循项目的编码标准。

许可证

此项目根据Apache License 2.0许可。详情请参阅LICENSE文件。

致谢

  • 感谢LiteLLM开发者提供统一的LLM访问接口
  • 感谢为此工具提供支持的多模态AI模型开发者
  • 受到对更好的PDF转Markdown转换工具需求的启发

免责声明 © 2025 - 虚宝阁

本站部分源码来源于网络,版权归属原开发者,用户仅获得使用权。依据《计算机软件保护条例》第十六条,禁止:

  • 逆向工程破解技术保护措施
  • 未经许可的分发行为
  • 去除源码中的原始版权标识

※ 本站源码仅用于学习和研究,禁止用于商业用途。如有侵权, 请及时联系我们进行处理。

侵权举报请提供: 侵权页面URL | 权属证明模板

响应时效:收到完整材料后48小时内处理

相关推荐

presenton AI PPT 生成器

一个免费的、能完全在你自己电脑上运行的 AI PPT 生成工具。和那些必须联网、依赖服务商云服务的工具不同,Presenton 的核心优势在于本地优先和开放可控。 你的数据你做主, 所有生成演示文稿的过程都在你的电脑上完成。这意味着你的内容创意、上传的文件等敏感信息,无需上传到第三方云端服务器,隐私更有保障。自由选择AI模型,它不绑定任何一家 AI 服务商。你可以灵活选择。

2412 2025-09-14

ImageMagick: 图片处理瑞士军刀

ImageMagick是开源的命令行图片工具,压缩图片、转格式、加水印、切图都能一行命令搞定,还能批量处理如把100张图片批量压缩成WebP格式,自媒体、开发者都能用。

14651 2025-09-16

langchainjs: 用语言模型构建模块化AI应用

帮助你用大型语言模型(如 GPT)构建模块化智能应用。 想做 AI 代理?做会读 PDF 的问答机器人?轻松搞定。 简直是生成式 AI 的乐高积木。

15824 2025-10-01

markdown-it

markdown-it是一款快速且易扩展的Markdown解析器,遵循CommonMark规范并添加语法扩展。它配置灵活、速度快且安全,还有丰富的社区插件。

20415 2025-09-09

Whisper-OpenAI的语音魔术师

OpenAI开源的语音识别模型,能把语音转文字、文字转语音,还支持99种语言!关键是准确率超高,连带口音的中文、英文都能轻松识别,简直是会议记录、视频字幕的救星。

89153 2025-09-13

image-compressor: 前端图片压缩库

超轻量的前端图片压缩库,就像一个智能“图片瘦身教练”,能在浏览器里直接把大图片压缩到合适大小,而且不影响视觉效果。 • 压缩后仅20KB,比一张表情包还小 • 支持JPEG、PNG、WebP等主流格式 • 零依赖,原生JavaScript编写 • 每周下载量稳定在10万+

5660 2025-10-20

jdenticon 独特几何头像生成器

一个用于生成独特且容易识别图像(identicons)的 JavaScript 库,可根据任意字符串(用户名、哈希值等)生成独特的几何图形,支持输出为 SVG 和 PNG 格式。

1591 2025-09-13

Stable Diffusion AI绘画界的 扛把子

提到AI画图,没人能绕开Stable Diffusion!由Stability AI开源,支持文本生成图像、图像修复、风格迁移,关键是完全免费商用(非商用更没问题),普通电脑装个WebUI就能玩到飞起。

41831 2025-09-13

Retrieval-based-Voice-Conversion-WebUI

Retrieval-based-Voice-Conversion-WebUI是基于VITS的易用变声框架。底模用开源VCTK数据集训练,无版权问题。有训练推理和实时变声界面,具备很多优点。

32357 2025-09-06

TensorFlow.js: javascript界的机器学习大神

TensorFlow.js 把机器学习能力带进了 JavaScript。训练模型、运行推理,甚至搞实时 AI Web 或移动端、Node 后端。谷歌用,创业公司用,爱好者用,用过都说好。

18976 2025-10-01

LLaMA-Meta家的平民大模型

这是Meta(脸书母公司)开源的大语言模型家族,从70亿参数到700亿参数应有尽有,主打一个“轻量能跑、开源免费”。普通人下载后,在消费级显卡上就能微调,不用再眼巴巴看着大厂模型流口水~

58804 2025-09-13