MinerU PDF 文档提取 Demo (PDF解析)

MinerU PDF 文档提取 Demo (PDF解析)

说明:

  • 首次发表日期:2024-07-17
  • MinerU 官方仓库: https://github.com/opendatalab/MinerU
  • MinerU 官方中文README: https://github.com/opendatalab/MinerU/blob/master/README_zh-CN.md

官方介绍

Magic-PDF 是一款将 PDF 转化为 markdown 格式的工具。支持转换本地文档或者位于支持S3协议对象存储上的文件。

主要功能包含

  • 支持多种前端模型输入
  • 删除页眉、页脚、脚注、页码等元素
  • 符合人类阅读顺序的排版格式
  • 保留原文档的结构和格式,包括标题、段落、列表等
  • 提取图像和表格并在markdown中展示
  • 将公式转换成latex
  • 乱码PDF自动识别并转换
  • 支持cpu和gpu环境
  • 支持windows/linux/mac平台

创建Conda环境并安装包

conda create -n py310torch python=3.10
conda activate py310torch
pip install --force-reinstall torch==2.3.1 torchvision==0.18.1 --index-url https://download.pytorch.org/whl/cu121

# MinerU
## https://github.com/opendatalab/MinerU/blob/master/README_zh-CN.md
pip install magic-pdf[full-cpu]
pip install detectron2 --extra-index-url https://myhloli.github.io/wheels/

下载权重并配置

# 安装依赖
pip install -U "huggingface_hub[cli]"
# 设置环境变量
## Linux
## export HF_ENDPOINT=https://hf-mirror.com
## Windows
$env:HF_ENDPOINT = "https://hf-mirror.com"
huggingface-cli download wanderkid/PDF-Extract-Kit

cd ~ 并创建文件magic-pdf.json,将 magic-pdf.template.json 文件中的内容拷贝进去,并修改模型权重所在位置,修改之后的内容如下:

{
    "bucket_info":{
        "bucket-name-1":["ak", "sk", "endpoint"],
        "bucket-name-2":["ak", "sk", "endpoint"]
    },
    "temp-output-dir":"tmp",
    "models-dir":"D:/16-LLM-Cache/huggingface/hub/models--wanderkid--PDF-Extract-Kit/snapshots/bbfd601d3dab736bf366e2119ec0bbe0f4e6f012/models",
    "device-mode":"cuda"
}

其中device-mode设置为cuda,如果使用CPU的话,设置为cpu

使用

使用命令行

首先运行magic-pdf pdf-command --help,看一下这个命令行有哪些参数:

Usage: magic-pdf pdf-command [OPTIONS]

Options:
  --pdf PATH               PDF文件的路径  [required]
  --model PATH             模型的路径
  --method [ocr|txt|auto]  指定解析方法。txt: 文本型 pdf 解析方法, ocr: 光学识别解析 pdf, auto:
                           程序智能选择解析方法
  --inside_model BOOLEAN   使用内置模型测试
  --model_mode TEXT        内置模型选择。lite: 快速解析,精度较低,full: 高精度解析,速度较慢

然后调用:

magic-pdf pdf-command --pdf "assets/***手册.pdf" --inside_model true --model_mode full

使用一个大小为2.45M的某硬件手册PDF文档(6页,中文为主,内容是分列的,带图片的)进行测试,发现:

  • 性能速度:运行以上命令花了47秒
  • 优点:相比marker来说,从文字上来说,效果要更好
    • marker转换的结果出现了文字顺序出错的问题,特别是涉及PDF中的图片时
      • 使用的PDF中,大多数图片部分本身是包含文字的,可以复制
      • marker将这些图片中的文字识别出来了,但是和正常的文字混合在一起了,而且会把顺序弄错
  • 缺点:
    • 没有对文档中的表格做识别
      • 补充:已经有人提了issue,有人回复表格识别应该在1个月左右放出
    • 板式识别时将第二栏的二级标题当做大标题放在第一行了(大概是因为其超出的第一栏大标题的高度)

通过接口(Python代码)调用

参考代码: https://github.com/opendatalab/MinerU/blob/master/demo/demo.py

from magic_pdf.pipe.UNIPipe import UNIPipe
from magic_pdf.rw.DiskReaderWriter import DiskReaderWriter
import magic_pdf.model as model_config

model_config.__use_inside_model__ = True

with open('assets\***手册.pdf', "rb") as pdf_file:
    pdf_bytes = pdf_file.read()

local_image_dir = "mineru_images"

image_writer = DiskReaderWriter(local_image_dir)

model_json = []  # model_json传空list使用内置模型解析
jso_useful_key = {"_pdf_type": "", "model_list": model_json}
pipe = UNIPipe(pdf_bytes, jso_useful_key, image_writer)
pipe.pipe_classify()
pipe.pipe_parse()
md_content = pipe.pipe_mk_markdown(local_image_dir, drop_mode="none")

运行耗费一分12秒

总结

  • 从测试的中文PDF文档上看,MinerU中的Magic-PDF对PDF文档提取的效果相对比较好( 对比Marker,或者基于Marker的OmniParse)
  • 暂时还不支持PDF中表格的识别,期待尽早支持(Issue中提到大概在一个月左右)
  • 非常适合在RAG等应用场景中使用
### 回答1: pdf.js是一款功能强大的JavaScript库,可用于在网页上展示PDF文档pdf.js允许开发者在所有现代浏览器上直接嵌入PDF文件,而无需使用第三方插件。这样一来,用户可以在不离开网页的情况下浏览和阅读PDF文档pdf.js附带了一个demo,可以帮助开发者了解和体验pdf.js的功能。demo提供了各种不同的示例,展示了不同的PDF文档在网页上的显示效果。开发者可以使用demo中的代码作为起点,进一步定制和集成pdf.js到自己的网页应用中。 demo中的示例包括基本的PDF展示、缩放、翻页和搜索功能。用户可以通过demo来体验在不同浏览器和设备上加载和浏览PDF文档的效果。此外,demo还提供了一些高级功能,比如延迟渲染、打印、导出和书签功能,以及在网页上查看多个PDF文件的选项。 使用pdf.js demo,开发者可以快速入门并了解pdf.js的核心功能。通过查看demo中的代码和文档,开发者可以学习如何使用pdf.js库创建自定义的PDF浏览器。pdf.js demo为开发者提供了一个学习和实践的平台,帮助他们更好地理解和应用pdf.js库。 总而言之,pdf.js demo是一个方便的工具,提供了一个交互式的环境来学习和测试pdf.js的功能。无论是初学者还是有经验的开发者,都可以通过pdf.js demo来提升对pdf.js的理解和应用能力。 ### 回答2: pdf.js demo 是一个开源的基于 JavaScript 的 PDF 阅读器库,它使用 HTML5 技术来在网页上显示和加载 PDF 文档。使用 pdf.js demo,你可以在不需要安装第三方插件的情况下,在网页上直接查看和浏览 PDF 文件。 pdf.js demo 提供了一个简单易用的 API,能够方便地在网页上加载和显示 PDF 文件。它支持多种功能,如缩放、旋转、滚动和搜索等等。你可以使用这些功能来快速定位和查找 PDF 文档中的内容,方便用户进行阅读和导航。 pdf.js demo 的优势之一是它的兼容性很好。它不需要任何浏览器插件的支持,只需要使用现代浏览器即可完美运行。这使得你在不同平台和设备上都可以无障碍地查看和访问 PDF 文档pdf.js demo 也具有高度的可定制性。你可以根据自己的需求来定制页面的展示效果和交互方式。如果你是一位开发者,你还可以直接访问源代码来进行更深入的定制和扩展。 总之,pdf.js demo 是一个强大而且方便的 PDF 阅读器库,它能够帮助你在网页上实现高效的 PDF 查看和阅读功能。无论你是需要在网站上显示 PDF 文档,还是需要开发自己的 PDF 阅读器应用程序,pdf.js demo 都是一个很好的选择。 ### 回答3: pdf.js demo是一个用于显示和渲染PDF文件的开源JavaScript库。它可以通过在网页上嵌入PDF文件,让用户直接在浏览器中查看和浏览PDF文档,而无需安装任何PDF阅读器插件。 使用pdf.js demo可以实现许多功能,比如展示PDF页面、搜索文本、放大和缩小页面、旋转页面等。用户可以通过点击页面、拖动页面滚动条来浏览整个文档pdf.js demo还提供了一些实用的工具栏,例如缩放按钮、旋转按钮、搜索框、前进和后退按钮等,让用户可以更方便地浏览文档pdf.js demo的一个重要优点是它与现代浏览器兼容性良好,并且可以在不同平台上运行,例如Windows、Mac和Linux。此外,pdf.js demo支持多种语言,可以根据用户的地区设置自动切换显示语言。 使用pdf.js demo还能够加强文档的安全性。通过在服务器端嵌入水印、禁止复制和打印等措施,可以防止文档被非法下载和修改。 总而言之,pdf.js demo是一个非常实用的工具,可以实现在浏览器中查看、浏览和管理PDF文档的功能。它的易用性、兼容性和安全性使其成为很多网站和应用程序的首选解决方案。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值