12
2025
04

一个PDF转Markdown工具,高精准识别,自动去干扰元素,和LLM更配哦!Star 15K !

发布日期:2025-04-12 19:19    点击次数:145

现在LLM(大型语言模型)应用的普遍使用和落地,Markdown格式的文档是各种LLM和RAG(检索增强生成)偏爱,主要体现在以下两个方面:

首先,Markdown是一种轻量级的标记语言,具备简洁性和易读易写的特点,使得它成为编写和存储文档的理想选择,特别是当这些文档需要通过LLM进行处理或通过RAG模型进行增强时。

其次,Markdown的结构化特性使其在进行文本处理时更加高效。例如,向量化文档时,需要根据标题层级对Markdown文件进行结构化分割,这种规范的结构化分割保留了文本的上下文和结构信息,这对于RAG模型来说非常重要,有助于提升文本向量化和RAG检索的效果。

不同于Markdown,PDF格式无论在日常办公处理,还是在大模型、RAG场景处理下,都不太受“欢迎”。所以,很多时候,我们需要将PDF先做Markdown格式转换后,再在RAG或者大模型中使用。所以今天给大家介绍的就是一个能够将PDF格式文档快速高精度的转成Markdown格式的工具-Marker

01 —  Marker 介绍 

一个开源、先进的PDF转换工具,它利用深度学习技术将PDF文件高保真地转换成Markdown格式。能够处理多种语言,自动去除页眉页脚等非内容元素,并支持表格、代码块和图像的格式化。Marker在保持原有文档结构的同时,提供了快速准确的转换效果。

图片

🏠  项目信息

#Github地址https://github.com/VikParuchuri/marker#项目官网地址https://www.datalab.to/marker

图片

🚀功能特性

多格式支持:能够将PDF文件转换为Markdown格式,同时支持书籍、科学论文等多种文档类型。

全语言支持:不限制语言,可以处理所有语言的文档。

自动化清理:自动去除PDF中的页眉、页脚和其他非内容元素,提高Markdown输出的清洁度。

表格和代码格式化:能够识别并格式化PDF中的表格和代码块,保持原有结构。

图像提取:在转换过程中,能够提取PDF中的图像,并将它们保存为Markdown支持的格式。

公式转换:将PDF中的大多数数学方程转换为LaTeX格式,便于在Markdown中展示。

硬件兼容性:支持在GPU、CPU或MPS(Metal Performance Shaders)上运行,以适应不同用户的硬件环境。

性能优化:仅在必要时使用深度学习模型,以提高转换速度并优化准确率。

API服务:提供托管API服务,支持PDF、Word文档和PowerPoint的转换。

🛠 处理过程

图片

文本提取:Marker首先使用OCR技术提取PDF文件中的文本。如果PDF文件包含图像,将使用Tesseract或SURYA等OCR工具进行文本识别。

页面布局检测:使用SURYA等深度学习模型来检测页面布局和确定阅读顺序。这有助于Marker理解文档的结构,例如区分标题、正文、表格等。

内容清洗与格式化:通过一系列启发式规则和深度学习模型(如texify)对提取的文本进行清洗和格式化。这包括去除不需要的元素、格式化文本块、处理表格和代码块等。

表格和代码块处理:Marker能够识别PDF中的表格并将其转换为Markdown格式的表格。同时,它也能识别和格式化代码块。

图像提取与保存:Marker会提取PDF中的图像,并将它们保存为与Markdown兼容的格式。

公式转换:Marker将PDF中的数学公式转换为LaTeX格式,以便于在Markdown中展示。

组合与后处理:在完成上述步骤后,Marker将各个部分组合起来,并进行后处理,以确保最终的Markdown文件格式正确、整洁。

02— Marker 安装和使用 

一、环境要求

需要 Python 3.9+ 和 PyTorch。如果没有CPU,需要先安装 CPU 版本的 torch。

pip3 install torch torchvision torchaudio

二、安装 Marker

pip install marker-pdf

可选安装:如果想使用可选的ocrmypdfOCR 后端,需要安装OCRMyPDF。

三、配置(可选,默认也可)

设置环境变量:可以在marker/settings.py中检查和配置设置,也可以使用环境变量来覆盖设置。

自动检测设备:marker会自动检查部署的服务器,但是可以覆盖此设置。例如,TORCH_DEVICE=cuda。

如果使用 GPU,请设置INFERENCE_RAM为 GPU VRAM(每个 GPU)。例如,有 16 GB 的 VRAM,设置INFERENCE_RAM=16。

根据文档类型,marker 每个任务的平均内存使用量可能会略有不同。如果发现任务因GPU不足错误而失败,可以调整VRAM_PER_TASK此值。

设置 OCR 引擎:默认情况下,Marker 使用 suryaOCR。如果想要更快的 OCR,可以设置OCR_ENGINE为ocrmypdf。如果不需要 OCR,可以设置OCR_ENGINE为None。

四、使用

转换单个文件

marker_single /path/to/file.pdf /path/to/output/folder --batch_multiplier 2 --max_pages 10 --langs English

--batch_multiplier是如果有额外的 VRAM,默认批处理大小要乘以的数值。数字越大,占用的 VRAM 越多,但处理速度越快。默认设置为 2。默认批处理大小将占用约 3GB 的 VRAM。

--max_pages是要处理的最大页数。忽略此项可转换整个文档。

--langs是文档中用于 OCR 的语言的逗号分隔列表确保DEFAULT_LANG设置适合文档。OCR 支持的语言列表见下方链接。如果需要 OCR,标记可以使用任何语言。

#支持的语言连接说明https://github.com/VikParuchuri/surya/blob/master/surya/languages.py转换多个文件
marker /path/to/input/folder /path/to/output/folder --workers 10 --max 10 --metadata_file /path/to/metadata.json --min_length 10000

--workers是一次要转换的 PDF 数量。默认情况下,此值设置为 1,但可以增加此值以增加并发,但代价是增加 CPU/GPU 使用率。

--max是要转换的 PDF 的最大数量。省略此项可转换文件夹中的所有 PDF。

--min_length是需要从 PDF 中提取的最少字符数,然后才进行处理。如果要处理大量 PDF,建议设置此项,以避免对大部分是图像的 PDF 进行 OCR。

--metadata_file是存放有关 PDF元数据的JSON文件的可选路径。如果没有使用默认即可。

03— Marker 实际效果展示 

本文部署Marker的机器为Ubuntu操作系统,4C8G配置(设置--batch_multiplier为1),无GPU。测试了一个60页的PDF文档。整体转换时间花费了15分钟左右。

转换前的PDF原文件截图:

图片

转换后Markdown文件截图:

图片

基本可见以下几点转换后的效果:

页眉页脚的信息都已经去除;

文档中的水印也自动去除(图片中的水印无法去除);

PDF论文模式的左右编排,自动提取并且整合为上下编排,可读性更好;

提取后的Markdown文件夹包含了PDF文件中的图片,转换后的json文件,md文件:

图片

04— 最后 

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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。

  • 上一篇:没有了
  • 下一篇:没有了
相关资讯
热点资讯


Powered by 鸿利棋牌网娱乐平台 @2013-2022 RSS地图 HTML地图