英语 | 简体中文
PDF-Extract-Kit:高质量 PDF 提取工具包???
?通过 Discord 和微信加入我们
2024/10/31 0.9.0 发布。这是一个主要的新版本,进行了广泛的代码重构,解决了许多问题,提高了性能,降低了硬件要求,并增强了可用性:
新增自主开发的doclayout_yolo
模型,在保持类似解析效果的同时,比原方案处理速度提升10倍以上,并且可以通过配置文件与layoutlmv3
自由切换。
公式解析升级至unimernet 0.2.1
,提高公式解析精度的同时大幅降低内存占用。
由于PDF-Extract-Kit 1.0
的存储库发生更改,您需要重新下载模型。详细步骤请参考如何下载模型。
重构排序模块代码,使用layoutreader进行阅读顺序排序,保证各种布局的高精度。
重构了段落拼接模块,在跨栏、跨页、跨图、跨表场景下取得了良好的效果。
重构了列表和目录识别功能,显着提高了列表块和目录块以及对应文本段落的解析准确性。
重构了图、表、描述性文字的匹配逻辑,大大提高了图、表的标题、脚注匹配的准确性,将描述性文字的丢失率降低到接近于零。
新增 OCR 多语言支持,支持 84 种语言检测识别。支持的语言列表请参见 OCR 语言支持列表。
增加了内存回收逻辑等内存优化措施,显着减少内存占用。启用除表格加速(布局/公式/OCR)之外的所有加速功能的内存要求已从 16GB 减少至 8GB,启用所有加速功能的内存要求已从 24GB 减少至 10GB。
优化配置文件功能开关,增加独立的公式检测开关,在不需要公式检测时,显着提升速度和解析结果。
集成 PDF-Extract-Kit 1.0:
2024/09/27 0.8.1版本发布,修复了一些bug,并提供本地化部署版本的在线演示和前端界面。
2024/09/09:0.8.0版本发布,支持使用Dockerfile快速部署,并在Huggingface和Modelscope上启动demo。
2024/08/30:0.7.1版本发布,增加paddle桌长桌识别选项
2024/08/09:0.7.0b1版本发布,简化安装流程,增加表格识别功能
2024/08/01:0.6.2b1版本发布,优化依赖冲突问题和安装文档
2024/07/05:初始开源版本
矿工U
命令行
应用程序编程接口
部署派生项目
开发指南
在线演示
快速 CPU 演示
使用GPU
项目介绍
主要特点
快速入门
用法
待办事项
已知问题
常问问题
感谢我们的贡献者
许可证信息
致谢
引文
明星历史
魔法文档
Magic-html
链接
MinerU 是一款将 PDF 转换为机器可读格式(例如 markdown、JSON)的工具,可以轻松提取为任何格式。 MinerU是在InternLM的预训练过程中诞生的。我们专注于解决科学文献中的符号转换问题,希望为大模型时代的技术发展做出贡献。与知名的商业产品相比,MinerU还很年轻。如果您遇到任何问题或者结果不符合预期,请提交问题并附上相关 PDF 。
pdf_zh_cn.mp4
删除页眉、页脚、脚注、页码等,以确保语义连贯。
以人类可读的顺序输出文本,适用于单列、多列和复杂布局。
保留原始文档的结构,包括标题、段落、列表等。
提取图像、图像描述、表格、表格标题和脚注。
自动识别文档中的公式并将其转换为 LaTeX 格式。
自动识别文档中的表格并将其转换为 LaTeX 或 HTML 格式。
自动检测扫描PDF和乱码PDF并启用OCR功能。
OCR支持84种语言的检测和识别。
支持多种输出格式,例如多模态和NLP Markdown、按阅读顺序排序的JSON以及丰富的中间格式。
支持布局可视化、跨度可视化等多种可视化结果,高效确认输出质量。
支持CPU和GPU环境。
兼容 Windows、Linux 和 Mac 平台。
如果您遇到任何安装问题,请首先查阅常见问题解答。
如果解析结果不符合预期,请参阅已知问题。
体验 MinerU 的方式有以下三种:
在线演示(无需安装)
快速 CPU 演示(Windows、Linux、Mac)
Linux/Windows + CUDA
为了保证项目的稳定性和可靠性,我们在开发过程中只针对特定的软硬件环境进行优化和测试。这确保了在推荐的系统配置上部署和运行项目的用户将获得最佳性能和最少的兼容性问题。
通过将资源集中在主线环境上,我们的团队可以更有效地解决潜在的错误并开发新功能。
在非主线环境中,由于软硬件配置的多样性,以及第三方依赖兼容性问题,我们无法保证100%的项目可用性。因此,对于希望在非推荐环境下使用该项目的用户,我们建议先仔细阅读文档和FAQ。大多数问题在FAQ中已经有相应的解决方案。我们还鼓励社区反馈,以帮助我们逐步扩大支持。
操作系统 | |||||
Ubuntu 22.04 LTS | Windows 10 / 11 | macOS 11+ | |||
中央处理器 | x86_64(不支持 ARM Linux) | x86_64(不支持 ARM Windows) | x86_64/arm64 | ||
记忆 | 16GB以上,推荐32GB+ | ||||
Python版本 | 3.10(请确保使用conda创建Python 3.10虚拟环境) | ||||
Nvidia 驱动程序版本 | 最新(专有驱动程序) | 最新的 | 没有任何 | ||
CUDA环境 | 自动安装【12.1(pytorch)+11.8(paddle)】 | 11.8(手动安装)+cuDNN v8.7.0(手动安装) | 没有任何 | ||
GPU 硬件支持列表 | 最低要求 8G+ VRAM | 3060ti/3070/4060 8G VRAM 可实现布局、公式识别加速和 OCR 加速 | 没有任何 | ||
推荐配置 10G+显存 | 3080/3080ti/3090/3090ti/4070/4070ti/4070tisuper/4080/4090 10G VRAM以上可同时实现布局、公式识别、OCR加速和表格识别加速 |
稳定版本(经过 QA 验证的稳定版本):
测试版本(与dev分支更新同步,测试新功能):
conda 创建-n MinerU python=3.10 conda 激活 MinerU pip install -U magic-pdf[full] --extra-index-url https://wheels.myhloli.com
有关详细说明,请参阅如何下载模型文件。
完成2.下载模型权重文件步骤后,脚本会自动在用户目录下生成magic-pdf.json
文件,并配置默认模型路径。您可以在【用户目录】中找到magic-pdf.json
文件。
Windows 的用户目录是“C:Usersusername”,Linux 的用户目录是“/home/username”,macOS 的用户目录是“/Users/username”。
您可以修改此文件中的某些配置来启用或禁用功能,例如表识别:
如果 JSON 中不存在以下项目,请手动添加所需项目并删除注释内容(标准 JSON 不支持注释)。
{// 其他配置"layout-config": {"model": "layoutlmv3" // 使用doclayout_yolo时请改为"doclayout_yolo"。},"formula-config": {"mfd_model": "yolo_v8_mfd","mfr_model ": "unimernet_small","enable": true // 公式识别功能默认开启。如果需要禁用,请将此处的值改为“false”。},"table-config": {"model": "tablemaster", // 使用structEqTable时,请改为"struct_eqtable"。"enable" : false, // 默认情况下禁用表格识别功能。如果需要启用,请将此处的值更改为“true”。“max_time”:400} }
如果您的设备支持CUDA并且满足主线环境的GPU要求,则可以使用GPU加速。请根据您的系统选择合适的指南:
Ubuntu 22.04 LTS + GPU
Windows 10/11 + GPU
使用 Docker 快速部署
Docker 需要具有至少 16GB VRAM 的 GPU,并且默认启用所有加速功能。
在运行此 Docker 之前,您可以使用以下命令检查您的设备是否支持 Docker 上的 CUDA 加速。
docker run --rm --gpus=all nvidia/cuda:12.1.0-base-ubuntu22.04 nvidia-smi
wget https://github.com/opendatalab/MinerU/raw/master/Dockerfile docker build -t mineru:latest .docker run --rm -it --gpus=all mineru:latest /bin/bash 魔法pdf--帮助
魔法pdf--帮助 用法:magic-pdf [选项] 选项: -v, --version 显示版本并退出 -p, --path PATH 本地 pdf 文件路径或目录 [必需] -o, --output-dir PATH 输出本地目录 [必需] -m, --method [ocr|txt|auto] 解析pdf的方法。 OCR:使用OCR 从pdf中提取信息的技术。 TXT: 仅适用于基于文本的 pdf 并且 优于 ocr。 auto:自动选择 从ocr和txt解析pdf的最佳方法。 如果没有指定方法,auto 将被使用 默认。 -l, --lang TEXT 输入 pdf 中的语言(如果已知) 提高 OCR 准确性。 选修的。你应该 输入“缩写”,语言形式为 url: ht tps://paddlepaddle.github.io/PaddleOCR/latest/en /ppocr/blog/multi_languages.html#5-support-languages- 和-缩写 -d, --debug BOOLEAN 启用详细的调试信息 CLI 命令的执行。 -s, --start INTEGER PDF解析的起始页,开始 从 0 开始。 -e, --end INTEGER PDF解析的结束页面,从 0。 --help 显示此消息并退出。## show versionmagic-pdf -v## 命令行 examplemagic-pdf -p {some_pdf} -o {some_output_dir} -m auto
{some_pdf}
可以是单个 PDF 文件或包含多个 PDF 的目录。结果将保存在{some_output_dir}
目录中。输出文件列表如下:
├── some_pdf.md # markdown file
├── images # directory for storing images
├── some_pdf_layout.pdf # layout diagram (Include layout reading order)
├── some_pdf_middle.json # MinerU intermediate processing result
├── some_pdf_model.json # model inference result
├── some_pdf_origin.pdf # original PDF file
├── some_pdf_spans.pdf # smallest granularity bbox position information diagram
└── some_pdf_content_list.json # Rich text JSON arranged in reading order
有关输出文件的更多信息,请参阅输出文件说明。
处理本地磁盘中的文件
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 = pipeline.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 = pipeline.pipe_mk_markdown(image_dir, drop_mode =“无”)
具体实现可以参考:
demo.py 最简单的处理方法
magic_pdf_parse_main.py 更详细的处理工作流程
衍生项目包括项目开发者和社区开发者基于MinerU的二次开发项目,
比如基于Gradio的应用接口、基于llama的RAG、类似官网的web demo、轻量级多GPU负载均衡客户端/服务器端等。这些项目可能会提供更多的功能和更好的用户体验。
具体部署方法请参考派生项目README
待办事项
?根据模型的阅读顺序
?正文中index
和list
的识别
?表格识别
☐ 正文中的代码块识别
☐ 化学式识别
☐ 几何形状识别
阅读顺序是模型根据可读内容的空间分布来确定的,在布局极其复杂的情况下,某些区域可能会出现乱序。
不支持竖排文本。
目录和列表是通过规则来识别的,一些不常见的列表格式可能无法识别。
仅支持一级标题;目前不支持分层标题。
布局模型尚不支持代码块。
漫画书、画册、小学课本、练习题都解析不了。
表格识别可能会导致复杂表格中的行/列识别错误。
OCR 识别可能会在不太知名的语言的 PDF 中产生不准确的字符(例如,拉丁文字中的变音标记、阿拉伯文字中容易混淆的字符)。
某些公式可能无法在 Markdown 中正确呈现。
中文常见问题解答
英文常见问题解答
许可证.md
该项目目前使用 PyMuPDF 来实现高级功能。然而,由于它遵守 AGPL 许可证,因此可能会对某些使用场景施加限制。在未来的迭代中,我们计划探索并用更宽松的 PDF 处理库替换它,以增强用户友好性和灵活性。
PDF 提取套件
结构方程表
桨OCR
PyMuPDF
布局阅读器
快速语言检测
pdfminer.6
@misc{wang2024mineruopensourcesolutionprecise, title={MinerU:精确文档内容提取的开源解决方案}, 作者={王斌、徐超、赵小萌、欧阳林科、吴凡、赵志远、徐瑞、刘凯文、屈媛、尚福凯、张波、魏立群、隋志浩、李伟、石波田、乔宇林大华和何从辉},year={2024},eprint={2409.18839},archivePrefix={arXiv}, PrimaryClass={cs.CV},url={https://arxiv.org/abs/2409.18839}, }@article{he2024opendatalab, title={Opendatalab:用开放数据集赋能通用人工智能},author={何、从辉和李、魏和金、镇江和徐、超和王、斌和林、大华},journal= {arXiv 预印本 arXiv:2407.13773},年份={2024}}
Magic-Doc 极速ppt/pptx/doc/docx/pdf提取工具
Magic-HTML混合网页提取工具
LabelU(轻量级多模态数据标注工具)
LabelLLM(开源LLM对话标注平台)
PDF-Extract-Kit(用于高质量 PDF 内容提取的综合工具包)