Marker:PDF转Markdown的开源工具解析
Marker是一个由VikParuchuri在GitHub上开发的开源项目,其核心功能是将PDF文件转换为Markdown格式。以下是对Marker项目的详细解析:
项目概述:
项目链接:https://github.com/VikParuchuri/marker.git
维护者:VikParuchuri
主要功能:将PDF快速且准确地转换为Markdown格式,支持多种文档类型,特别是书籍和科学论文。
技术特点:
深度学习模型:Marker采用了一系列深度学习模型来提取文本、检测页面布局、清理和格式化文本块,并最终组合成Markdown文档。
OCR支持:对于需要OCR的场景,Marker支持使用Surya和Tesseract等OCR工具,确保文本提取的准确性。
多平台支持:Marker可以在GPU、CPU或MPS上运行,满足不同硬件环境的需求。
功能细节:
文档处理:支持去除页眉、页脚和其他杂质,格式化表格和代码块,提取并保存图像。
语言支持:Marker支持所有语言,用户可以通过指定语言列表来优化OCR效果。
方程转换:能够将大多数方程转换为LaTeX格式,便于在Markdown文档中嵌入数学公式。
性能表现:
速度与准确性:Marker在速度和准确性方面表现出色,特别是与nougat等其他工具相比,具有显著优势。
资源占用:在A6000 Ada上运行时,每个任务平均占用约4GB的VRAM,支持并行处理多个文档。
使用指南:
安装:用户需要通过pip安装marker-pdf包
pip install marker-pdf
(GraphRAG) PS D:\python-workspace\GraphRAG> pip install marker-pdf
Looking in indexes: https://mirrors.aliyun.com/pypi/simple/
Collecting marker-pdf
Downloading https://mirrors.aliyun.com/pypi/packages/05/c1/782f56407ea60bd35c127c829b8e43da99a0da41f6c9ee002cab97e430c5/marker_pdf-0.2.15-py3-none-any.whl (63 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 63.2/63.2 kB 563.9 kB/s eta 0:00:00
Requirement already satisfied: Pillow<11.0.0,>=10.1.0 in e:\programdata\miniconda3\envs\graphrag\lib\site-packages (from marker-pdf) (10.4.0)
Requirement already satisfied: filetype<2.0.0,>=1.2.0 in e:\programdata\miniconda3\envs\graphrag\lib\site-packages (from marker-pdf) (1.2.0)
Collecting ftfy<7.0.0,>=6.1.1 (from marker-pdf)
Downloading https://mirrors.aliyun.com/pypi/packages/f4/f0/21efef51304172736b823689aaf82f33dbc64f54e9b046b75f5212d5cee7/ftfy-6.2.0-py3-none-any.whl (54 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 54.4/54.4 kB 353.5 kB/s eta 0:00:00
Requirement already satisfied: grpcio<2.0.0,>=1.63.0 in e:\programdata\miniconda3\envs\graphrag\lib\site-packages (from marker-pdf) (1.64.1)
Requirement already satisfied: numpy<2.0.0,>=1.26.1 in e:\programdata\miniconda3\envs\graphrag\lib\site-packages (from marker-pdf) (1.26.4)
Collecting pdftext<0.4.0,>=0.3.10 (from marker-pdf)
Downloading https://mirrors.aliyun.com/pypi/packages/54/78/8dd39d5ed3b90fb7ecaa20f92ff09c4594877a88501de6352d22e8c53aa0/pdftext-0.3.10-py3-none-any.whl (25 kB)
Requirement already satisfied: pydantic<3.0.0,>=2.4.2 in e:\programdata\miniconda3\envs\graphrag\lib\site-packages (from marker-pdf) (2.8.0)
Collecting pydantic-settings<3.0.0,>=2.0.3 (from marker-pdf)
Downloading https://mirrors.aliyun.com/pypi/packages/e8/4f/aad03d5f711717d94d7de9684cb542343b392df1ad6889118636674fc983/pydantic_settings-2.3.4-py3-none-any.whl (22 kB)
Requirement already satisfied: python-dotenv<2.0.0,>=1.0.0 in e:\programdata\miniconda3\envs\graphrag\lib\site-packages (from marker-pdf) (1.0.1)
Collecting rapidfuzz<4.0.0,>=3.8.1 (from marker-pdf)
Downloading https://mirrors.aliyun.com/pypi/packages/60/a6/6c2f5e9be933150a6d55ffce4ff6d9701ddfc5b267c789a84674eadbd373/rapidfuzz-3.9.4-cp311-cp311-win_amd64.whl (1.6 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.6/1.6 MB 684.6 kB/s eta 0:00:00
Requirement already satisfied: regex<2025.0.0,>=2024.4.28 in e:\programdata\miniconda3\envs\graphrag\lib\site-packages (from marker-pdf) (2024.5.15)
Requirement already satisfied: scikit-learn<2.0.0,>=1.3.2 in e:\programdata\miniconda3\envs\graphrag\lib\site-packages (from marker-pdf) (1.5.0)
Collecting surya-ocr<0.5.0,>=0.4.14 (from marker-pdf)
Downloading https://mirrors.aliyun.com/pypi/packages/62/a8/dd78c484fa9a459e388a31aa3a45d23eb454c6aeb2a17710284631088615/surya_ocr-0.4.14-py3-none-any.whl (94 kB)
━━━━━━━━━━━━━━