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

不同于Markdown,PDF格式无论在日常办公处理,还是在大模型、RAG场景处理下,都不太受“欢迎”。

所以,很多时候,我们需要将PDF先做Markdown格式转换后,再在RAG或者大模型中使用。

所以今天给大家介绍的就是一个能够将PDF格式文档快速高精度的转成Markdown格式的开源项目:Marker

开源地址:github.com/VikParuchuri

官网地址: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_DEVICESNUM_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上运行,处理速度和效率也很不错。

如果正好你也有这方面的需求化,不妨试试吧!