当前位置: 首页 > java >正文

一个开源的快速准确地将 PDF 转换为 markdown工具

Marker是一款功能强大的PDF转换工具,它能够将PDF文件快速、准确地转换为Markdown格式。这款工具特别适合处理书籍和科学论文,支持所有语言的转换,并且能够去除页眉、页脚等干扰元素,格式化表格和代码块,提取并保存图像和Markdown文件,并将大部分方程式转换为LaTeX格式。

功能简介

Marker:重新定义 PDF 到 Markdown 的转换效率。

• Marker 满足了将复杂的 PDF 文档转换为 markdown 以便于管理的日益增长的需求。

• 传统的文本转换器难以维持原始布局、格式和内容的准确性。

• Marker 擅长准确地保存表格、代码块和数学方程式等复杂元素。

• 自动去除文档中的非主要元素,如页眉和页脚。

• 它能够以优化的处理速度和资源使用率有效地处理大量数据。

• Marker 的定制方法减少了数字 PDF 对 OCR 的依赖,从而实现了更快、更精确的转换。

• 可以在GPU、CPU或MPS上运行。

实现原理

Marker的工作原理基于深度学习模型。它首先通过OCR技术(如果需要的话)提取文本(采用启发式算法和 tesseract 工具),然后检测页面布局并确定阅读顺序(使用 布局分割器[1] 和 列检测器[2])。接下来,Marker会对每个文本块进行清洁和格式化处理(运用启发式算法和 nougat[3]),最后将所有块合并并进行后处理,生成完整的Markdown文本(利用启发式算法和 pdf后处理器[4])。Marker只在必要时使用模型,从而提高了转换速度和准确性。

性能表现

在这里插入图片描述

通过查找具有 pdf 版本和 latex 源的书籍和科学论文创建了一个测试集。将 latex 转换为文本,并将参考与文本提取方法的输出进行比较。

基准测试表明 marker 比 nougat 快 4 倍,而且在 arXiv 之外更准确(nougat 是在 arXiv 数据上训练的)

速度
MethodAverage ScoreTime per pageTime per document
marker0.6137210.63199158.1432
nougat0.4066032.59702238.926
准确性

前 3 篇是非 arXiv 书籍,后 3 篇是 arXiv 论文。

Methodmulticolcnn.pdfswitch_trans.pdfthinkpython.pdfthinkos.pdfthinkdsp.pdfcrowd.pdf
marker0.5361760.5168330.705150.7106570.6900420.523467
nougat0.440090.5889730.3227060.4013420.1608420.525663

基准测试期间,nougat的 GPU 内存使用峰值为 4.2GB,而marker的 GPU 内存使用峰值为 4.1GB。 基准测试在 A6000 Ada 上运行。

使用

安装

您需要 Python 3.9+ 和 PyTorch。如果您使用的不是 Mac 或 GPU 机器,则可能需要先安装 CPU 版本的 torch。请参阅此处[5]了解更多详细信息。

安装方式:

pip install marker-pdf
转换单个文件
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 的语言的逗号分隔列表

转换多个文件
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 使用率。INFERENCE_RAM / VRAM_PER_TASK如果您使用 GPU,则并行度不会增加。

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

• --min_length是需要从 PDF 中提取的最少字符数,然后才会考虑进行处理。如果您要处理大量 PDF,我建议设置此项以避免对大部分是图像的 PDF 进行 OCR。(这会减慢一切速度)

• --metadata_file是包含有关 pdf 元数据的 json 文件的可选路径。如果您提供它,它将用于设置每个 pdf 的语言。如果没有,DEFAULT_LANG将使用。格式为:

{
在多个 GPU 上转换多个文件
MIN_LENGTH=10000 METADATA_FILE=../pdf_meta.json NUM_DEVICES=4 NUM_WORKERS=15 marker_chunk_convert ../pdf_in ../md_out

• METADATA_FILE是包含 pdf 元数据的 json 文件的可选路径。请参阅上文了解格式。

• NUM_DEVICES是要使用的 GPU 数量。应大于2或等于。

• NUM_WORKERS是每个 GPU 上运行的并行进程数。每个 GPU 的并行度不会超过 INFERENCE_RAM / VRAM_PER_TASK。

• MIN_LENGTH是需要从 PDF 中提取的最少字符数,然后才会考虑进行处理。如果您要处理大量 PDF,我建议设置此项以避免对大部分是图像的 PDF 进行 OCR。(这会减慢一切速度)

项目地址

https://github.com/VikParuchuri/marker

🔥运维干货分享

  • 软考高级系统架构设计师备考学习资料
  • 软考中级数据库系统工程师学习资料
  • 软考高级网络规划设计师备考学习资料
  • Kubernetes CKA认证学习资料分享
  • AI大模型学习资料合集
  • 免费文档翻译工具(支持word、pdf、ppt、excel)
  • PuTTY中文版安装包
  • MobaXterm中文版安装包
  • pinginfoview网络诊断工具中文版
  • Xshell、Xsftp、Xmanager中文版安装包
  • Typora简单易用的Markdown编辑器
  • Window进程监控工具,能自动重启进程和卡死检测
  • Spring 源码学习资料分享
  • 毕业设计高质量毕业答辩 PPT 模板分享
  • IT行业工程师面试简历模板分享
http://www.xdnf.cn/news/4879.html

相关文章:

  • 动态规划-62.不同路径-力扣(LeetCode)
  • 量化解析美英协议的非对称冲击:多因子模型与波动率曲面重构
  • 支持向量机案例
  • springmvc实现文件上传
  • [6-1] TIM定时中断 江协科技学习笔记(45个知识点)
  • 布隆过滤器:高效的数据结构与应用详解
  • 通过Linux系统服务管理IoTDB集群的高效方法
  • C语言 第六章 结构体(2)
  • 大数据——Mac环境DataSpell集成Jupyter
  • 2025年5月通信科技领域周报(4.28-5.4):5G-A技术引领峰会通信 卫星通信加速全球化布局
  • 数据库系统概论(七)初识SQL与SQL基本概念
  • 小程序消息订阅的整个实现流程
  • 养生:开启健康生活的钥匙
  • buck和boost总结
  • B站pwn教程笔记-9
  • 使用 React Native实现鸿蒙开发的详细方案
  • 数据结构 集合类与复杂度
  • Windows平台下的Qt发布版程序打包成exe可执行文件(带图标)|Qt|C++
  • SPC:通过对抗性博弈,让LLM左右互搏提升性能
  • 【Linux】swap交换分区管理
  • 特殊版本,官宣永久免费
  • 从入门到深入:Vue.js 学习全攻略
  • C++ 模板方法模式详解与实例
  • 基于多模态大模型的十二指肠穿孔诊疗技术方案
  • NeurIPS 2024 | 工业质检缺陷检测相关论文梳理
  • el-table中合并表格后横向变高样式无效
  • 找不到自定义包出现报错ModuleNotFoundError: No module named
  • 基础编程题目集 6-9 统计个位数字
  • GAMES202-高质量实时渲染(Assignment 3)
  • Python 爬虫之 XPath 元素定位