[1308]pdf转markdown

六个开源的PDF转Markdown项目

✨ 1: gptpdf

gptpdf 是一个利用VLLM解析PDF为Markdown的工具,几乎完美支持数学公式、表格等。

GPTPDF 是一个使用视觉大模型(如 GPT-4o)将 PDF 文件解析成 Markdown 文件的工具。它主要用于高效地解析 PDF 文档中的排版、数学公式、表格、图片、图表等内容,并将这些内容转换为结构化的 Markdown 格式。其显著特点是简单且成本低,每页平均费用为 $0.013。

地址:https://github.com/CosmosShadow/gptpdf

✨ 2: marker

Marker是一款将PDF快速精准转换为Markdown的工具,支持多种文档格式和语言。

Marker是一款能够快速且准确地将PDF转换为Markdown的工具。它支持多种类型的文档(针对书籍和科学论文进行了优化),支持所有语言,并且能够去除页眉、页脚及其他杂乱信息。此外,它还能正确格式化表格和代码块,并提取图像保存为Markdown。同时,Marker将大多数的公式转换为LaTeX格式,适用于GPU、CPU或MPS环境。

地址:https://github.com/vikparuchuri/marker
https://gitcode.com/gh_mirrors/ma/marker/overview

marker的原理是利于深度学习模型,检测页面布局,阅读顺序,然后格式化文本块并且对完整的文本再进行处理。这里说一下 marker 的特点:

  • 该工具支持广泛的文档类型,特别针对书籍和科学论文进行了优化,对于复杂的公式提供了更好的支持。同时,它支持多种语言的转换,确保在全球范围内的用户都能够轻松使用
  • 可以删除页眉、页脚以及其他页面元素。
  • 能够格式化表格和代码块,保持排版整齐。
  • 可以提取并保存 PDF 中的图像。
  • 支持 GPU、CPU 或者 MPS(多处理器系统)进行转换,以满足不同硬件环境下的需求。

这里说来说一下 marker 的安装方法
安装 Python,需要注意的需要安装的 Python 版本必须大于等于 3.9
安装 Pytorch
首先,访问 PyTorch官网 查找适合你的操作系统、Python版本和硬件支持(如GPU、CUDA)的安装命令。

例如,如果你在Linux系统上使用CUDA 10.2,安装命令如下:

pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu102)

如果你的系统没有CUDA支持或不打算使用GPU加速,则可以安装CPU版本:

pip install torch torchvision torchaudio

然后**安装 marker **,执行命令 pip install marker-pdf

单独转换文件示例
marker_single --input /path/to/file.pdf --output /path/to/output/folder --batch_multiplier 2 --max_pages 10 --langs English
  • --batch_multiplier用于根据GPU内存大小放大默认批量尺寸,数值越大意味着更多内存被占用,但同时也会加速处理过程,默认值为2倍;标准批量尺寸大约占据3GB的GPU内存。
  • --max_pages定义了最大转换页数。如省略此项,则整个文档都会被转换。
  • --langs是以逗号隔开的语言列表,指明文档中所含的语言信息以便于OCR识别。

确认DEFAULT_LANG设置与您的文档相符。OCR支持的语言清单位于surya,如有额外需求,可通过Tesseract支持的任一语言来补充,只要OCR_ENGINE设为ocrmypdf即可。若根本不需进行OCR识别,标记器就能适用于任何语言的文档。

  • --input:指定要转换的PDF文件路径。
  • --output:指定转换后的Markdown文件存储路径。
  • --language:设置文档语言,如果处理的是非英文文档,可以指定语言代码(如zh表示中文)。
  • --gpu:如果安装了CUDA并希望利用GPU加速,可以加上--gpu选项。
  • --no-images:如果不希望提取PDF中的图片,可以添加这个参数来避免生成额外的图片文件。
CODE_TO_LANGUAGE = {
    "_math": "Math",
    'af': 'Afrikaans',
    'am': 'Amharic',
    'ar': 'Arabic',
    'as': 'Assamese',
    'az': 'Azerbaijani',
    'be': 'Belarusian',
    'bg': 'Bulgarian',
    'bn': 'Bengali',
    'br': 'Breton',
    'bs': 'Bosnian',
    'ca': 'Catalan',
    'cs': 'Czech',
    'cy': 'Welsh',
    'da': 'Danish',
    'de': 'German',
    'el': 'Greek',
    'en': 'English',
    'eo': 'Esperanto',
    'es': 'Spanish',
    'et': 'Estonian',
    'eu': 'Basque',
    'fa': 'Persian',
    'fi': 'Finnish',
    'fr': 'French',
    'fy': 'Western Frisian',
    'ga': 'Irish',
    'gd': 'Scottish Gaelic',
    'gl': 'Galician',
    'gu': 'Gujarati',
    'ha': 'Hausa',
    'he': 'Hebrew',
    'hi': 'Hindi',
    'hr': 'Croatian',
    'hu': 'Hungarian',
    'hy': 'Armenian',
    'id': 'Indonesian',
    'is': 'Icelandic',
    'it': 'Italian',
    'ja': 'Japanese',
    'jv': 'Javanese',
    'ka': 'Georgian',
    'kk': 'Kazakh',
    'km': 'Khmer',
    'kn': 'Kannada',
    'ko': 'Korean',
    'ku': 'Kurdish',
    'ky': 'Kyrgyz',
    'la': 'Latin',
    'lo': 'Lao',
    'lt': 'Lithuanian',
    'lv': 'Latvian',
    'mg': 'Malagasy',
    'mk': 'Macedonian',
    'ml': 'Malayalam',
    'mn': 'Mongolian',
    'mr': 'Marathi',
    'ms': 'Malay',
    'my': 'Burmese',
    'ne': 'Nepali',
    'nl': 'Dutch',
    'no': 'Norwegian',
    'om': 'Oromo',
    'or': 'Oriya',
    'pa': 'Punjabi',
    'pl': 'Polish',
    'ps': 'Pashto',
    'pt': 'Portuguese',
    'ro': 'Romanian',
    'ru': 'Russian',
    'sa': 'Sanskrit',
    'sd': 'Sindhi',
    'si': 'Sinhala',
    'sk': 'Slovak',
    'sl': 'Slovenian',
    'so': 'Somali',
    'sq': 'Albanian',
    'sr': 'Serbian',
    'su': 'Sundanese',
    'sv': 'Swedish',
    'sw': 'Swahili',
    'ta': 'Tamil',
    'te': 'Telugu',
    'th': 'Thai',
    'tl': 'Tagalog',
    'tr': 'Turkish',
    'ug': 'Uyghur',
    'uk': 'Ukrainian',
    'ur': 'Urdu',
    'uz': 'Uzbek',
    'vi': 'Vietnamese',
    'xh': 'Xhosa',
    'yi': 'Yiddish',
    'zh': 'Chinese',
}
转换多个文件
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资源。如果使用GPU,并行度不会超过内存分配允许的最大值(INFERENCE_RAM / VRAM_PER_TASK)。
  • --max 设定要转换的PDF文件最大数量。省略此参数将以转换文件夹内的所有PDF。
  • --min_length 是从PDF中提取字符的最小数量,达到这个限制后PDF才会被考虑处理。处理大量PDF时,推荐设置以避免对主要由图像组成的PDF进行OCR(这会减慢处理速度)。
  • --metadata_file 是一个可选的JSON文件路径,包含有关PDF的元数据。提供它将用来设置每个PDF的语言。否则,将使用默认语言DEFAULT_LANG。格式如下:
{
  "pdf1.pdf": {"languages": ["英语"]},
  "pdf2.pdf": {"languages": ["西班牙语", "俄语"]},
  ...
}

✨ 3: PDF-Extract-Kit

PDF-Extract-Kit 提供高质量PDF内容提取,支持布局检测、公式识别和OCR功能

  • 版面检测:使用 LayoutLMv3 模型进行区域检测,如检测图片、表格、标题、文本等。
  • 公式检测:使用 YOLOv8 模型检测公式,包括行内公式和独立公式。
  • 公式识别:使用 UniMERNet 进行公式识别。
  • 光学字符识别 (OCR):使用 PaddleOCR 进行文本识别。

地址:https://github.com/opendatalab/PDF-Extract-Kit

✨ 4: zeroX

Zerox OCR 是一种经济高效且准确的文档OCR工具,适用于AI数据处理。

Zerox OCR 是一种极其简便的方法,用于将文档进行光学字符识别(OCR)并方便人工智能进行后续处理。鉴于文档往往包含复杂布局、表格、图表等,视觉模型在处理这些内容时尤其有效。

基本逻辑如下:
提供一个 PDF 文件(URL 或文件缓冲区)。
将 PDF 转换成一系列图像。
将每个图像传给 GPT,让其生成 Markdown 格式的文本。
聚合所有响应,并返回 Markdown 格式的结果。

地址:https://github.com/getomni-ai/zeroX

✨ 5: omniparse

OmniParse是一个将各种非结构化数据转换为结构化、适用于生成式AI(LLM)应用的平台。

OmniParse 是一个数据解析平台,旨在将各种非结构化数据转换为适用于生成式AI(GenAI)应用的结构化数据。无论是文档、表格、图像、视频、音频文件,还是网页,OmniParse 都能对其进行处理,使其变得干净、结构化,并为诸如 RAG(Retrieval-Augmented Generation)和细调等AI应用做好准备。

  • 完全本地化,无需外部API
  • 支持多达 20 种文件类型
  • 将文档、多媒体和网页转换为高质量的结构化 Markdown
  • 支持表格提取、图像提取与标注、音频/视频转录、网页爬取
  • 通过 Docker 和 Skypilot 轻松部署
  • 兼容 Colab
  • 交互式 UI 由 Gradio 提供支持

地址:https://github.com/adithya-s-k/omniparse

✨ 6: MinerU

MinerU 是一个开源的高质量数据提取工具,支持多种文件格式

MinerU 是一个一站式、开源的高质量数据提取工具,主要包括以下两个核心功能模块:

Magic-PDF

  • 功能介绍:Magic-PDF 能将 PDF 文档转换为 Markdown 格式,可以处理本地存储或支持 S3 协议的对象存储中的文件。
  • 主要特色
    • 支持多种前端模型输入
    • 自动去除页眉、页脚、脚注和页码
    • 保留文档原有的结构和格式,包括标题、段落、列表等
    • 提取并显示图片和表格
    • 将公式转换为 LaTeX 格式
    • 自动检测和转换乱码 PDF 文档
    • 兼容 CPU 和 GPU 环境
    • 可在 Windows、Linux 和 macOS 平台上使用

Magic-Doc

  • 功能介绍:Magic-Doc 能将网页或多格式电子书转换为 Markdown 格式。
  • 主要特色
    • 网页提取:跨模态精确解析文本、图片、表格和公式信息
    • 电子书文档提取:支持包括 epub、mobi 在内的多种文档格式,完美适配文本和图片
    • 语言类型识别:精确识别176种语言

地址:https://github.com/opendatalab/MinerU

更多AI工具,参考国内AiBard123Github-AiBard123 公众号:每日AI新工具


参考:https://blog.csdn.net/weixin_40425640/article/details/140765933
https://cloud.tencent.com/developer/news/1472013
https://zhuanlan.zhihu.com/p/712512565
https://post.smzdm.com/p/a2xzn3z2/

TextIn在线api转换:https://www.textin.com/document/pdf_to_markdown
https://www.textin.com/console/recognition/robot_markdown?service=pdf_to_markdown

目前一路用下来,开源的方案用来做原型验证还不错,但要达到生产标准总是差一截。marker也试了,paddle也试了,最后还是转向了闭源付费api。省心多了。国内的textin,国外的google document ai,都还挺top的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周小董

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值