MinerU: 端到端的PDF解析工具(基于PDF-Extract-Kit)支持PDF转Markdown🚀🚀🚀
PDF-Extract-Kit: 高质量PDF解析工具箱🔥🔥🔥
MinerU是一款将PDF转化为机器可读格式的工具(如markdown、json),可以很方便地抽取为任意格式。 MinerU诞生于书生-浦语的预训练过程中,我们将会集中精力解决科技文献中的符号转化问题,以此在大模型时代为科技发展做出一点贡献。
如果遇到任何安装问题,请先查询 FAQ
如果遇到解析效果不及预期,参考 Known Issue 有3种不同方式可以体验MinerU的效果:为了确保项目的稳定性和可靠性,我们特别强调对主线系统的支持。主线支持意味着我们在开发过程中,针对特定的操作系统、软件环境及版本进行了详尽的测试与优化。这一策略的核心目的在于,当用户在推荐的系统配置上部署和运行项目时,能够获得最佳的性能表现和最少的兼容性问题。
主线支持的重要性在于,它为用户提供了一个明确的基准,使得项目能够在最广泛的范围内满足核心用户群体的需求。通过集中资源和精力于主线环境,我们能够更高效地识别并解决潜在的bug,同时提供及时的技术支持和更新,确保用户能够享受到无缝的体验。
尽管我们致力于提供广泛的支持,但在非主线系统或环境中,由于硬件、软件配置的差异,以及第三方依赖项的兼容性问题,我们无法100%保证项目的完全可用性。因此,对于那些希望在非推荐环境中使用本项目的用户,我们建议进行充分的测试,并在遇到问题时,参照文档或联系技术支持获取帮助。我们鼓励社区反馈,以便我们能够逐步扩大支持范围,提升跨平台的稳定性。
<tr>
<td colspan="3" rowspan="2">操作系统</td>
</tr>
<tr>
<td>Ubuntu 22.04 LTS</td>
<td>Windows 10 / 11</td>
<td>macOS 11+</td>
</tr>
<tr>
<td colspan="3">CPU</td>
<td>x86_64</td>
<td>x86_64</td>
<td>x86_64 / arm64</td>
</tr>
<tr>
<td colspan="3">内存</td>
<td colspan="3">大于等于16GB,推荐32G以上</td>
</tr>
<tr>
<td colspan="3">python版本</td>
<td colspan="3">3.10</td>
</tr>
<tr>
<td colspan="3">Nvidia Driver 版本</td>
<td>latest(专有驱动)</td>
<td>latest</td>
<td>None</td>
</tr>
<tr>
<td colspan="3">CUDA环境</td>
<td>自动安装[12.1(pytorch)+11.8(paddle)]</td>
<td>11.8(手动安装)+cuDNN v8.7.0(手动安装)</td>
<td>None</td>
</tr>
<tr>
<td rowspan="2">GPU硬件支持列表</td>
<td colspan="2">最低要求 8G+显存</td>
<td colspan="2">3060ti/3070/3080/3080ti/4060/4070/4070ti<br>
8G显存仅可开启lavout和公式识别加速</td>
<td rowspan="2">None</td>
</tr>
<tr>
<td colspan="2">推荐配置 16G+显存</td>
<td colspan="2">3090/3090ti/4070tisuper/4080/4090<br>
16G及以上可以同时开启layout,公式识别和ocr加速</td>
</tr>
pip install magic-pdf[full] detectron2 --extra-index-url https://myhloli.github.io/wheels/ -i https://pypi.tuna.tsinghua.edu.cn/simple
❗️已收到多起由于镜像源和依赖冲突问题导致安装了错误版本软件包的反馈,请务必安装完成后通过以下命令验证版本是否正确
> magic-pdf --version > ``` > 如版本低于0.6.2,请提交issue进行反馈。 ### 使用GPU - [Ubuntu22.04LTS + GPU](docs/README_Ubuntu_CUDA_Acceleration_zh_CN.md) - [Windows10/11 + GPU](docs/README_Windows_CUDA_Acceleration_zh_CN.md) ## 使用 ### 命令行 TODO ### API 处理本地磁盘上的文件python image_writer = DiskReaderWriter(local_image_dir) image_dir = str(os.path.basename(local_image_dir)) jso_useful_key = {"_pdf_type": "", "model_list": []} pipe = UNIPipe(pdf_bytes, jso_useful_key, image_writer) pipe.pipe_classify() pipe.pipe_analyze() pipe.pipe_parse() md_content = pipe.pipe_mk_markdown(image_dir, drop_mode="none")
处理对象存储上的文件python s3pdf_cli = S3ReaderWriter(pdf_ak, pdf_sk, pdf_endpoint) image_dir = "s3://img_bucket/" s3image_cli = S3ReaderWriter(img_ak, img_sk, img_endpoint, parent_path=image_dir) pdf_bytes = s3pdf_cli.read(s3_pdf_path, mode=s3pdf_cli.MODE_BIN) jso_useful_key = {"_pdf_type": "", "model_list": []} pipe = UNIPipe(pdf_bytes, jso_useful_key, s3image_cli) pipe.pipe_classify() pipe.pipe_analyze() pipe.pipe_parse() md_content = pipe.pipe_mk_markdown(image_dir, drop_mode="none")
详细实现可参考 - [demo.py 最简单的处理方式](demo/demo.py) - [magic_pdf_parse_main.py 能够更清晰看到处理流程](demo/magic_pdf_parse_main.py) ### 二次开发 TODO # TODO - [ ] 基于语义的阅读顺序 - [ ] 正文中列表识别 - [ ] 正文中代码块识别 - [ ] 目录识别 - [ ] 表格识别 - [ ] 化学式识别 - [ ] 几何图形识别 # Known Issue - 阅读顺序基于规则的分割,在一些情况下会乱序 - 列表、代码块、目录在layout模型里还没有支持 - 漫画书、艺术图册、小学教材、习题尚不能很好解析 好消息是,这些我们正在努力实现! # FAQ [常见问题](docs/FAQ_zh_cn.md) [FAQ](docs/FAQ.md) # All Thanks To Our Contributors <a href="https://github.com/opendatalab/MinerU/graphs/contributors"> <img src="https://contrib.rocks/image?repo=opendatalab/MinerU" /> </a> # License Information [LICENSE.md](LICENSE.md) The project currently leverages PyMuPDF to deliver advanced functionalities; however, its adherence to the AGPL license may impose limitations on certain use cases. In upcoming iterations, we intend to explore and transition to a more permissively licensed PDF processing library to enhance user-friendliness and flexibility. # Acknowledgments - [PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR) - [PyMuPDF](https://github.com/pymupdf/PyMuPDF) - [fast-langdetect](https://github.com/LlmKira/fast-langdetect) - [pdfminer.six](https://github.com/pdfminer/pdfminer.six) # Citationbibtex @article{he2024opendatalab, title={Opendatalab: Empowering general artificial intelligence with open datasets}, author={He, Conghui and Li, Wei and Jin, Zhenjiang and Xu, Chao and Wang, Bin and Lin, Dahua}, journal={arXiv preprint arXiv:2407.13773}, year={2024} }
@misc{2024mineru,
title={MinerU: A One-stop, Open-source, High-quality Data Extraction Tool},
author={MinerU Contributors},
howpublished = {\url{https://github.com/opendatalab/MinerU}},
year={2024}
} ```
Magic-Doc Fast speed ppt/pptx/doc/docx/pdf extraction tool
Magic-HTML Mixed web page extraction tool