一招搞定PDF到Markdown,开源神器Marker来了

不同于Markdown,PDF格式无论在日常办公处理,还是在大模型、RAG场景处理下,都不太受“欢迎”。
所以,很多时候,我们需要将PDF先做Markdown格式转换后,再在RAG或者大模型中使用。
所以今天给大家介绍的就是一个能够将PDF格式文档快速高精度的转成Markdown格式的开源项目:Marker。
开源地址:https://github.com/VikParuchuri/marker
官网地址:https://www.datalab.to/marker
目前Github标星高达21.2K,同类开源项目排名第一。

简单的说,Marker遵循了如下的一个过程:
提取文本,如有需要进行OCR识别–>检测内容顺序并进行页面布局–>对每一个区域格式化–>组合每一个区域–>完成转换。
功能特性
- 多格式支持:能够将PDF文件转换为Markdown格式,同时支持书籍、科学论文等多种文档类型。
- 全语言支持:不限制语言,可以处理所有语言的文档。
- 自动化清理:自动去除PDF中的页眉、页脚和其他非内容元素,提高Markdown输出的清洁度。
- 表格和代码格式化:能够识别并格式化PDF中的表格和代码块,保持原有结构。
- 图像提取:在转换过程中,能够提取PDF中的图像,并将它们保存为Markdown支持的格式。
- 公式转换:将PDF中的大多数数学方程转换为LaTeX格式,便于在Markdown中展示。
- 硬件兼容性:支持在GPU、CPU或MPS(Metal Performance Shaders)上运行,以适应不同用户的硬件环境。
- 性能优化:仅在必要时使用深度学习模型,以提高转换速度并优化准确率。
- API服务:提供托管API服务,支持PDF、Word文档和PowerPoint的转换。
使用指南
安装与配置
Marker需要Python 3.10+及PyTorch支持,安装命令如下:
# 安装Marker
pip install marker
此外,你可以通过环境变量或参数自定义配置。例如:
- • 指定计算设备:
TORCH_DEVICE=cuda
(使用GPU) - • 强制OCR模式:
--force_ocr
- • 多语言OCR支持:
--languages "en,fr,de"
(支持多种语言)
基础用法
1、转换单个文件
marker_single /path/to/file.pdf --output_format markdown
常用参数:
- 输出格式:
--output_format [markdown|json|html]
- 使用LLM增强:
--use_llm
- 指定页码范围:
--page_range "1-5,10"
2、批量转换
marker /path/to/input/folder --workers 4 --output_format markdown
- 并行处理:通过
--workers
指定工作线程数(默认5个)。 - 多GPU支持:设置
NUM_DEVICES
和NUM_WORKERS
以充分利用设备资源。
3、Python代码调用
Marker也支持Python接口调用,以下是一个简单示例:
from marker.converters.pdf import PdfConverter
from marker.models import create_model_dict
from marker.output import text_from_rendered
converter = PdfConverter(artifact_dict=create_model_dict())
rendered = converter("sample.pdf")
text, _, images = text_from_rendered(rendered)
print(text) # 输出Markdown格式文本
实测效果
找了一个 PDF 文件:

讲上面这个 PDF 转换成 Markdown 效果:

Marker确实是一个功能强大的PDF到Markdown转换工具,它不仅能够精确地识别表格、进行方程式的OCR,还能够去除PDF中的页眉页脚、水印等不必要的元素,并且支持在GPU、CPU或MPS上运行,处理速度和效率也很不错。
如果正好你也有这方面的需求化,不妨试试吧!