# MinerU ## 论文 ` MinerU: An Open-Source Solution for Precise Document Content Extraction ` - https://arxiv.org/abs/2409.18839 ## 模型结构 MinerU是一个功能强大的PDF文档内容提取工具,它利用了先进的PDF-Extract-Kit模型库,能够有效地从各种类型的文档中提取内容。 MinerU的框架设计简洁而高效,主要包括文档预处理、文档内容解析、文档内容后处理和格式转换四个阶段。
## 算法原理 MinerU处理过程如下: (1)文档预处理 文档预处理主要有两个目标。一是筛选出无法处理的 PDF 文件,例如非 PDF 格式文件、加密文档以及受密码保护的文件,确保后续处理流程的顺利进行。 二是获取 PDF 文档的元数据,这些元数据在后续的处理过程中具有重要作用。 (2)文档内容解析 PDF - Extract - Kit 是 MinerU 用于解析文档的核心模型库,包含多种先进的开源 PDF 文档解析算法。与其他开源算法库不同,它致力于在处理现实世界多样化数据时确保准确性和速度。 当特定领域的现有开源算法无法满足实际需求时,PDF - Extract - Kit 会通过数据工程构建高质量、多样化的数据集来进一步微调模型,从而显著增强模型对不同数据的鲁棒性。 (3)文档内容后处理 文档内容后处理阶段主要解决内容排序问题。由于模型输出的文本、图像、表格和公式框之间可能存在重叠, 以及通过 OCR 或 API 获得的文本行之间也经常重叠,这给文本和元素的排序带来了巨大挑战。 (4)格式转换 最后,在格式转换阶段,MinerU将处理后的PDF数据转换为用户所需的机器可读格式(如Markdown或JSON)。 ## 环境配置 ### 硬件需求 DCU型号:BW1000,节点数量:1台,卡数:1张。 ### Docker(方法一) ``` docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.4.1-ubuntu22.04-dtk25.04-py3.10-fixpy # 为以上拉取的docker的镜像ID替换 docker run -it --name mineru --shm-size=1024G --device=/dev/kfd --device=/dev/dri/ --privileged --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --ulimit memlock=-1:-1 --ipc=host --network host --group-add video -v /opt/hyhal:/opt/hyhal:ro -v $PWD/MinerU_pytorch:/home/MinerU_pytorch /bin/bash cd /home/MinerU_pytorch pip install -e .[core] -i https://mirrors.aliyun.com/pypi/simple/ pip install numpy==1.24.3 #以下torchvision-0.19.1、torch-2.4.1、triton-3.0.0whl可从光合开发者社区下载安装: https://developer.sourcefind.cn/tool/ pip install torchvision-0.19.1+das.opt2.dtk2504-cp310-cp310-manylinux_2_28_x86_64.whl pip install torch-2.4.1+das.opt2.dtk2504-cp310-cp310-manylinux_2_28_x86_64.whl pip install triton-3.0.0+das.opt4.dtk2504-cp310-cp310-manylinux_2_28_x86_64.whl cd sglang-v0.4.6.post5.dev/sgl-kernel python setup_hip.py install cd .. pip install -e "python[all_hip]" ``` ### Dockerfile(方法二) ``` cd /home/MinerU_pytorch docker build --no-cache -t MinerU:latest . docker run -it --name MinerU_test --shm-size=1024G --device=/dev/kfd --device=/dev/dri/ --privileged --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --ulimit memlock=-1:-1 --ipc=host --network host --group-add video -v /opt/hyhal:/opt/hyhal:ro -v $PWD/MinerU_pytorch:/home/MinerU_pytorch MinerU /bin/bash cd /home/MinerU_pytorch pip install -e .[core] -i https://mirrors.aliyun.com/pypi/simple/ pip install numpy==1.24.3 #以下torchvision-0.19.1、torch-2.4.1、triton-3.0.0whl可从光合开发者社区下载安装: https://developer.sourcefind.cn/tool/ pip install torchvision-0.19.1+das.opt2.dtk2504-cp310-cp310-manylinux_2_28_x86_64.whl pip install torch-2.4.1+das.opt2.dtk2504-cp310-cp310-manylinux_2_28_x86_64.whl pip install triton-3.0.0+das.opt4.dtk2504-cp310-cp310-manylinux_2_28_x86_64.whl cd sglang-v0.4.6.post5.dev/sgl-kernel python setup_hip.py install cd .. pip install -e "python[all_hip]" ``` ### Anaconda(方法三) 1、关于本项目DCU显卡所需的特殊深度学习库可从光合开发者社区下载安装: - https://developer.sourcefind.cn/tool/ ``` DTK驱动:dtk25.04 python:python3.10 torch:2.4.1 torchvision:0.19.1 triton:3.0.0 flash-attn:2.6.1 vllm:0.7.2 ``` `Tips:以上dtk驱动、python、torch等DCU相关工具版本需要严格一一对应。` 2、其它非特殊库参照requirements.txt安装 ``` cd /home/MinerU_pytorch pip install -e .[core] -i https://mirrors.aliyun.com/pypi/simple/ pip install torchvision-0.19.1+das.opt2.dtk2504-cp310-cp310-manylinux_2_28_x86_64.whl pip install torch-2.4.1+das.opt2.dtk2504-cp310-cp310-manylinux_2_28_x86_64.whl pip install triton-3.0.0+das.opt4.dtk2504-cp310-cp310-manylinux_2_28_x86_64.whl pip install lmslim-0.2.1+das.dtk2504-cp310-cp310-manylinux_2_28_x86_64.whl pip install flash_attn-2.6.1+das.opt4.dtk2504-cp310-cp310-manylinux_2_28_x86_64.whl pip install vllm-0.7.2+das.opt1.dtk2504-cp310-cp310-manylinux_2_28_x86_64.whl cd sglang-v0.4.6.post5.dev/sgl-kernel python setup_hip.py install cd .. pip install -e "python[all_hip]" pip install pytest==8.3.5 pytest-asyncio==0.26.0 numpy==1.24.3 pip install amdsmi-24.5.3+02cbffb.dirty-py3-none-any.whl ``` ## 数据集 `无` ## 训练 `无` ## 推理 模型源配置 ``` #添加HF镜像方便下载模型 #export HF_ENDPOINT=https://hf-mirror.com #默认在首次运行时自动从 HuggingFace 下载所需模型。 #若无法访问 HuggingFace,可通过以下方式切换模型源: mineru -p -o --source modelscope #或设置环境变量: export MINERU_MODEL_SOURCE=modelscope #如需使用本地模型,可使用交互式命令行工具选择模型下载: mineru-models-download --help #下载完成后,模型路径会在当前终端窗口输出,并自动写入用户目录下的 mineru.json ``` ### 单机单卡 ``` #Run pipeline cd /home/MinerU_pytorch HIP_VISIBLE_DEVICES=0 python demo/demo.py #Using sglang to Accelerate VLM Model Inference #Through the sglang-server/client Mode #注意:运行的时候需要加 --attention-backend triton选项,别的kernel不支持 HIP_VISIBLE_DEVICES=0 mineru-sglang-server --attention-backend triton --port 30000 #Use Client in another terminal: mineru -p -o -b vlm-sglang-client -u http://127.0.0.1:30000 ``` 更多资料可参考源项目中的[`README_ori`](./README_orgin.md)。 ## result 解析示例: layout:
解析结果:
### 精度 DCU与GPU推理结果一致,推理框架:pytorch。 ## 应用场景 ### 算法类别 `OCR` ### 热点应用行业 `科研,教育,政府,广媒` ## 预训练权重 魔搭社区下载地址为:[OpenDataLab/PDF-Extract-Kit-1.0](https://modelscope.cn/models/OpenDataLab/PDF-Extract-Kit-1.0) Hugging Face下载地址为:[OpenDataLab/PDF-Extract-Kit-1.0](https://huggingface.co/opendatalab/PDF-Extract-Kit-1.0) 注意:`自动下载模型建议加镜像源下载:export HF_ENDPOINT=https://hf-mirror.com` ## 源码仓库及问题反馈 - https://developer.sourcefind.cn/codes/modelzoo/mineru_pytorch ## 参考资料 - https://github.com/opendatalab/MinerU