更新日志
- 2024/08/09:发布0.7.0b1版本,简化安装流程,新增表格识别功能
- 2024/08/01:发布0.6.2b1版本,优化依赖冲突问题及安装文档
- 2024/07/05:首次开源发布
目录
MinerU
项目介绍
MinerU是一个将PDF转换为机器可读格式(如markdown、JSON)的工具,可以轻松提取成任意格式。 MinerU诞生于InternLM的预训练过程中。我们专注于解决科学文献中的符号转换问题,希望为大模型时代的技术发展贡献力量。 与知名商业产品相比,MinerU仍然年轻。如果您遇到任何问题或结果不如预期,请在issue上提交问题,并附上相关PDF。
https://github.com/user-attachments/assets/4bea02c9-6d54-4cd6-97ed-dff14340982c
主要特性
- 移除页眉、页脚、脚注、页码等元素,同时保持语义连贯性
- 从多栏文档中以人类可读的顺序输出文本
- 保留文档原有结构,包括标题、段落和列表
- 提取图片、图片说明、表格和表格说明
- 自动识别文档中的公式并转换为LaTeX格式
- 自动识别文档中的表格并转换为LaTeX格式
- 自动检测并启用OCR处理损坏的PDF
- 支持CPU和GPU环境
- 支持Windows、Linux和Mac平台
快速开始
如果您遇到任何安装问题,请首先查阅常见问题。
如果解析结果不如预期,请参考已知问题。
有三种不同的方式体验MinerU:
⚠️ 安装前注意事项——硬件和软件环境支持 为了确保项目的稳定性和可靠性,我们在开发过程中只针对特定的硬件和软件环境进行优化和测试。这确保了用户在推荐的系统配置上部署和运行项目时,能获得最佳性能和最少的兼容性问题。
通过将资源集中在主线环境上,我们的团队可以更高效地解决潜在的错误并开发新功能。
在非主线环境中,由于硬件和软件配置的多样性,以及第三方依赖的兼容性问题,我们无法保证项目100%可用。因此,对于希望在非推荐环境中使用本项目的用户,我们建议先仔细阅读文档和常见问题解答。大多数问题在常见问题解答中已有相应的解决方案。我们也鼓励社区反馈,以帮助我们逐步扩大支持范围。
操作系统 | |||||
Ubuntu 22.04 LTS | Windows 10 / 11 | macOS 11+ | |||
CPU | x86_64 | x86_64 | x86_64 / arm64 | ||
内存 | 16GB或以上,推荐32GB+ | ||||
Python版本 | 3.10 | ||||
Nvidia驱动版本 | 最新版(专有驱动) | 最新版 | 无 | ||
CUDA环境 | 自动安装 [12.1 (pytorch) + 11.8 (paddle)] | 11.8(手动安装)+ cuDNN v8.7.0(手动安装) | 无 | ||
GPU硬件支持列表 | 最低要求 8G+ 显存 | 3060ti/3070/3080/3080ti/4060/4070/4070ti 8G显存仅能启用版面和公式识别加速 | 无 | ||
推荐配置 16G+ 显存 | 3090/3090ti/4070ti super/4080/4090 16G或以上可同时启用版面、公式识别和OCR加速 |
在线演示
快速CPU演示
1. 安装 magic-pdf
conda create -n MinerU python=3.10
conda activate MinerU
pip install magic-pdf[full]==0.7.0b1 --extra-index-url https://wheels.myhloli.com
2. 下载模型权重文件
详细说明请参考如何下载模型文件。
❗️下载模型后,请务必验证模型文件的完整性。
检查模型文件大小是否与网页上的描述相符。如果可能,请使用sha256验证文件的完整性。
3. 复制并配置模板文件
您可以在仓库的根目录找到magic-pdf.template.json
模板配置文件。
❗️请确保执行以下命令将配置文件复制到您的用户目录;否则,程序将无法运行。
Windows的用户目录是
C:\Users\您的用户名
,Linux是/home/您的用户名
,macOS是/Users/您的用户名
。
cp magic-pdf.template.json ~/magic-pdf.json
在您的用户目录中找到magic-pdf.json
文件,并将"models-dir"路径配置为指向步骤2中下载的模型权重文件所在的目录。
❗️请确保正确配置模型权重文件目录的绝对路径,否则程序将无法运行,因为找不到模型文件。
在Windows上,此路径应包括驱动器字母,并且路径中的所有反斜杠(
\
)应替换为正斜杠(/
),以避免JSON文件中由于转义序列导致的语法错误。例如:如果模型存储在D盘根目录的"models"文件夹中,"model-dir"的值应为
D:/models
。
{
// 其他配置
"models-dir": "D:/models",
"table-config": {
"is_table_recog_enable": false, // 表格识别默认关闭,修改此值可启用
"max_time": 400
}
}
使用GPU
如果您的设备支持CUDA并满足主线环境的GPU要求,您可以使用GPU加速。请根据您的系统选择合适的指南:
使用方法
命令行
magic-pdf --help
用法: magic-pdf [选项]
选项:
-v, --version 显示版本并退出
-p, --path PATH 本地PDF文件路径或目录 [必需]
-o, --output-dir TEXT 输出本地目录
-m, --method [ocr|txt|auto] 解析PDF的方法。
ocr: 使用OCR技术从PDF中提取信息,
txt: 仅适用于基于文本的PDF,性能优于ocr,
auto: 自动从ocr和txt中选择最佳方法解析PDF。
如果未指定方法,默认使用auto。
--help 显示此帮助信息并退出
## 显示版本
magic-pdf -v
## 命令行示例
magic-pdf -p {some_pdf} -o {some_output_dir} -m auto
{some_pdf}
可以是单个PDF文件或包含多个PDF的目录。
结果将保存在{some_output_dir}
目录中。输出文件列表如下:
├── some_pdf.md # markdown文件
├── images # 存储图片的目录
├── layout.pdf # 版面图
├── middle.json # MinerU中间处理结果
├── model.json # 模型推理结果
├── origin.pdf # 原始PDF文件
└── spans.pdf # 最小粒度bbox位置信息图
有关输出文件的更多信息,请参阅输出文件说明。
API
从本地磁盘处理文件
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")
从对象存储处理文件
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")
详细实现请参考:
开发指南
待完成
待办事项
- 基于语义的阅读顺序
- 文本内列表识别
- 文本内代码块识别
- 目录识别
- 表格识别
- 化学公式识别
- 几何图形识别
已知问题
- 阅读顺序基于规则分段,某些情况下可能导致顺序混乱
- 不支持竖排文字
- 布局模型尚不支持列表、代码块和目录
- 漫画书、画册、小学教科书和练习册解析效果不佳
- 启用OCR可能在公式密集的PDF中产生更好的结果
- 如果您正在处理包含大量公式的PDF,强烈建议启用OCR功能。使用PyMuPDF提取文本时,可能会出现文本行重叠的情况,导致公式插入位置不准确。
- 表格识别目前处于测试阶段;识别速度较慢,准确度有待提高。以下是在Ubuntu 22.04 LTS + Intel(R) Xeon(R) Platinum 8352V CPU @ 2.10GHz + NVIDIA GeForce RTX 4090环境下的一些性能测试结果,供参考。
表格大小 | 解析时间 |
---|---|
6*5 55kb | 37秒 |
16*12 284kb | 3分18秒 |
44*7 559kb | 4分12秒 |
常见问题
感谢所有贡献者
许可证信息
本项目目前使用PyMuPDF实现高级功能。然而,由于它遵循AGPL许可证,可能会对某些使用场景造成限制。在未来的迭代中,我们计划探索并替换为更宽松的PDF处理库,以提高用户友好性和灵活性。
致谢
引用
@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}
}
Star历史
Magic-doc
Magic-Doc 快速ppt/pptx/doc/docx/pdf提取工具
Magic-html
Magic-HTML 混合网页提取工具