最近项目里遇到了一些解析层面上的问题,主要是输入的文本如何高效解析出好的内容,刚开始用的是 markitdown,最近微软新开源的一个项目,但是遇到了一个很明显的问题就是把内容切的很碎,导致几乎无法使用了,后来又找了几个 MinerU,但是效果还是不行,后来又继续找,找到了这个项目,感觉效果还不错,所以分享一下。

marker

Marker 是一个功能强大的开源工具,旨在将PDF和图像文件快速且准确地转换为Markdown、JSON和HTML格式。本文将从功能特性、商业使用、托管API、社区支持、安装与使用以及目录结构等方面详细介绍该工具。

Document TypeMarker heuristicMarker LLMLlamaparse HeuristicLlamaparse LLMMathpix HeuristicMathpix LLMDocling HeuristicDocling LLM
Scientific paper96.67374.3489987.16513.9642191.22674.4686192.1353.72422
Book page97.18464.1616890.95324.0718693.88864.3532990.05563.64671
Other95.16324.2507681.13854.0183579.62314.0030683.82233.76147
Form88.01473.8466366.30813.6871264.75123.3312968.38573.40491
Presentation95.15624.1366981.2261483.67373.9568384.84053.86331
Financial document95.36974.3910682.58124.1611181.31154.0555686.38823.8
Letter98.40214.593.44774.2812596.03834.4531292.09524.09375
Engineering document93.92444.0441277.48543.7205980.33193.8823579.68073.42647
Legal document96.6894.2775986.97693.8758491.6014.2080587.83833.65552
Newspaper page98.87334.2580684.74923.9032396.99634.4516192.64963.51613
Magazine page98.21454.3877687.29023.9795993.59344.1632793.08924.02041

功能特性

1. 文档支持

Marker 支持多种语言的文档处理,并能够格式化以下内容:

  • 表格、表单、方程式、行内数学公式
  • 链接、引用和代码块
  • 提取并保存图像
  • 移除页眉、页脚等干扰元素
  • 支持用户自定义格式化和逻辑扩展

2. 性能表现

Marker 在性能上表现出色,尤其是在批量处理时:

  • 单页PDF串行处理效果良好
  • 批量处理速度显著提升,在H100上预计吞吐量为122页/秒(22个进程下每页约0.18秒)
  • 与云服务(如Llamaparse和Mathpix)及其他开源工具相比,性能更优

marker

3. 混合模式

通过传递 --use_llm 标志,可以使用大语言模型(LLM)来提高准确性:

  • 合并跨页表格
  • 处理行内数学公式
  • 正确格式化表格
  • 从表单中提取值
  • 默认使用 gemini-2.0-flash 模型,也支持其他gemini或ollama模型

4. 示例展示

Marker 提供了一些示例文档的转换结果,包括:

  • 《Think Python》
  • 《Switch Transformers》
  • 《Multi-column CNN》

你可以去代码仓库查看下 Markdown和JSON格式的转换效果,个人觉得还是不错的。


商业使用是不受限的

但是需要遵守开源协议,不能与 Datalab API 竞争

托管API

Marker 提供托管API服务,地址为 https://www.datalab.to/,主要特点包括:

  • 支持格式:PDF、Word文档和PowerPoint
  • 价格优势:仅为领先云竞争对手的四分之一
  • 高性能:高可用性(99.99%)、高质量和高速度(约15秒可转换250页的PDF)

安装与使用

1. 安装

  • 环境要求:Python 3.10+ 和 PyTorch
    • 如果不使用Mac或GPU机器,可能需要先安装CPU版本的torch
  • 安装命令pip install marker-pdf

2. 使用

  • 配置设备:例如 TORCH_DEVICE=cuda
  • OCR处理
    • 对于文本质量不佳的PDF,可以设置 force_ocr 标志强制进行OCR处理
    • 或设置 strip_existing_ocr 标志保留数字文本并去除现有OCR文本
  • 交互式应用
    • 安装 streamlitpip install streamlit
    • 运行 marker_gui 启动交互式应用程序
  • 单文件转换
    • 使用 marker_single /path/to/file.pdf 转换单个文件
    • 支持多种选项,如指定输出目录、输出格式、分页输出、使用LLM、禁用图像提取、指定页面范围和强制OCR等

主要文件夹说明

  • tests/:测试文件夹,包含单元测试和集成测试
  • builders/converters/processors/providers/renderers/schema/services/:功能模块文件夹,分别处理不同的转换逻辑
  • benchmarks/:基准测试文件夹,用于性能评估
  • static/:静态资源文件夹,存放CSS、JS等文件
  • .github/:GitHub相关配置文件夹,包含CI/CD配置
  • data/:数据文件夹,存放示例数据或测试数据

总结

Marker 是一个功能强大且高效的文档转换工具,适用于研究、个人使用以及符合条件的商业场景。通过其丰富的功能特性、高性能表现和灵活的扩展能力,Marker 能够满足用户对PDF和图像转换的多样化需求。无论是通过本地安装还是托管API,Marker 都提供了便捷的解决方案。

我综合了多个效果对比,包括 markitdownMinerUmarker,最后选取了 marker,效果还不错,推荐使用,大家有什么更好的工具也可以推荐一下,欢迎留言。