Files
MinerU/README_zh-CN.md
sfk 87cfcc3fee Hotfix readme 0.7.1 (#529)
* release: release 0.7.1 version (#526)

* Update README_zh-CN.md (#404) (#409)

correct FAQ url

Co-authored-by: sfk <18810651050@163.com>

* add dockerfile (#189)

Co-authored-by: drunkpig <60862764+drunkpig@users.noreply.github.com>

* Update cla.yml

* Update cla.yml

* feat<table model>: add tablemaster with paddleocr to detect and recognize table (#493)

* Update cla.yml

* Update bug_report.yml

* Update README_zh-CN.md (#404)

correct FAQ url

* Update README_zh-CN.md (#404) (#409) (#410)

correct FAQ url

Co-authored-by: sfk <18810651050@163.com>

* Update FAQ_zh_cn.md

add new issue

* Update FAQ_en_us.md

* Update README_Windows_CUDA_Acceleration_zh_CN.md

* Update README_zh-CN.md

* @Thepathakarpit has signed the CLA in opendatalab/MinerU#418

* Update cla.yml

* feat: add tablemaster_paddle (#463)

* Update README_zh-CN.md (#404) (#409)

correct FAQ url

Co-authored-by: sfk <18810651050@163.com>

* add dockerfile (#189)

Co-authored-by: drunkpig <60862764+drunkpig@users.noreply.github.com>

* Update cla.yml

* Update cla.yml

---------

Co-authored-by: drunkpig <60862764+drunkpig@users.noreply.github.com>
Co-authored-by: sfk <18810651050@163.com>
Co-authored-by: Aoyang Fang <222010547@link.cuhk.edu.cn>
Co-authored-by: Xiaomeng Zhao <moe@myhloli.com>

* <fix>(para_split_v2): index out of range issue of span_text first char (#396)

Co-authored-by: liukaiwen <liukaiwen@pjlab.org.cn>

* @Matthijz98 has signed the CLA in opendatalab/MinerU#467

* Create download_models.py

* Create requirements-docker.txt

* feat<table model>: add tablemaster with paddleocr to detect and recognize table

* @strongerfly has signed the CLA in opendatalab/MinerU#487

* feat<table model>: add tablemaster with paddleocr to detect and recognize table

* feat<table model>: add tablemaster with paddleocr to detect and recognize table

* feat<table model>: add tablemaster with paddleocr to detect and recognize table

* feat<table model>: add tablemaster with paddleocr to detect and recognize table

---------

Co-authored-by: Xiaomeng Zhao <moe@myhloli.com>
Co-authored-by: sfk <18810651050@163.com>
Co-authored-by: drunkpig <60862764+drunkpig@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Aoyang Fang <222010547@link.cuhk.edu.cn>
Co-authored-by: liukaiwen <liukaiwen@pjlab.org.cn>

* feat<table model>: add tablemaster with paddleocr to detect and recognize table (#508)

* Update cla.yml

* Update bug_report.yml

* Update README_zh-CN.md (#404)

correct FAQ url

* Update README_zh-CN.md (#404) (#409) (#410)

correct FAQ url

Co-authored-by: sfk <18810651050@163.com>

* Update FAQ_zh_cn.md

add new issue

* Update FAQ_en_us.md

* Update README_Windows_CUDA_Acceleration_zh_CN.md

* Update README_zh-CN.md

* @Thepathakarpit has signed the CLA in opendatalab/MinerU#418

* Update cla.yml

* feat: add tablemaster_paddle (#463)

* Update README_zh-CN.md (#404) (#409)

correct FAQ url

Co-authored-by: sfk <18810651050@163.com>

* add dockerfile (#189)

Co-authored-by: drunkpig <60862764+drunkpig@users.noreply.github.com>

* Update cla.yml

* Update cla.yml

---------

Co-authored-by: drunkpig <60862764+drunkpig@users.noreply.github.com>
Co-authored-by: sfk <18810651050@163.com>
Co-authored-by: Aoyang Fang <222010547@link.cuhk.edu.cn>
Co-authored-by: Xiaomeng Zhao <moe@myhloli.com>

* <fix>(para_split_v2): index out of range issue of span_text first char (#396)

Co-authored-by: liukaiwen <liukaiwen@pjlab.org.cn>

* @Matthijz98 has signed the CLA in opendatalab/MinerU#467

* Create download_models.py

* Create requirements-docker.txt

* feat<table model>: add tablemaster with paddleocr to detect and recognize table

* @strongerfly has signed the CLA in opendatalab/MinerU#487

* feat<table model>: add tablemaster with paddleocr to detect and recognize table

* feat<table model>: add tablemaster with paddleocr to detect and recognize table

* feat<table model>: add tablemaster with paddleocr to detect and recognize table

* feat<table model>: add tablemaster with paddleocr to detect and recognize table

* Update cla.yml

* Delete .github/workflows/gpu-ci.yml

* Update Huggingface and ModelScope links to organization account

* feat<table model>: add tablemaster with paddleocr to detect and recognize table

---------

Co-authored-by: Xiaomeng Zhao <moe@myhloli.com>
Co-authored-by: sfk <18810651050@163.com>
Co-authored-by: drunkpig <60862764+drunkpig@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Aoyang Fang <222010547@link.cuhk.edu.cn>
Co-authored-by: liukaiwen <liukaiwen@pjlab.org.cn>
Co-authored-by: yyy <102640628+dt-yy@users.noreply.github.com>
Co-authored-by: wangbinDL <wangbin_research@163.com>

* feat<table model>: add tablemaster with paddleocr to detect and recognize table (#511)

* Update cla.yml

* Update bug_report.yml

* Update README_zh-CN.md (#404)

correct FAQ url

* Update README_zh-CN.md (#404) (#409) (#410)

correct FAQ url

Co-authored-by: sfk <18810651050@163.com>

* Update FAQ_zh_cn.md

add new issue

* Update FAQ_en_us.md

* Update README_Windows_CUDA_Acceleration_zh_CN.md

* Update README_zh-CN.md

* @Thepathakarpit has signed the CLA in opendatalab/MinerU#418

* Update cla.yml

* feat: add tablemaster_paddle (#463)

* Update README_zh-CN.md (#404) (#409)

correct FAQ url

Co-authored-by: sfk <18810651050@163.com>

* add dockerfile (#189)

Co-authored-by: drunkpig <60862764+drunkpig@users.noreply.github.com>

* Update cla.yml

* Update cla.yml

---------

Co-authored-by: drunkpig <60862764+drunkpig@users.noreply.github.com>
Co-authored-by: sfk <18810651050@163.com>
Co-authored-by: Aoyang Fang <222010547@link.cuhk.edu.cn>
Co-authored-by: Xiaomeng Zhao <moe@myhloli.com>

* <fix>(para_split_v2): index out of range issue of span_text first char (#396)

Co-authored-by: liukaiwen <liukaiwen@pjlab.org.cn>

* @Matthijz98 has signed the CLA in opendatalab/MinerU#467

* Create download_models.py

* Create requirements-docker.txt

* feat<table model>: add tablemaster with paddleocr to detect and recognize table

* @strongerfly has signed the CLA in opendatalab/MinerU#487

* feat<table model>: add tablemaster with paddleocr to detect and recognize table

* feat<table model>: add tablemaster with paddleocr to detect and recognize table

* feat<table model>: add tablemaster with paddleocr to detect and recognize table

* feat<table model>: add tablemaster with paddleocr to detect and recognize table

* Update cla.yml

* Delete .github/workflows/gpu-ci.yml

* Update Huggingface and ModelScope links to organization account

* feat<table model>: add tablemaster with paddleocr to detect and recognize table

* feat<table model>: add tablemaster with paddleocr to detect and recognize table

* feat<table model>: add tablemaster with paddleocr to detect and recognize table

---------

Co-authored-by: Xiaomeng Zhao <moe@myhloli.com>
Co-authored-by: sfk <18810651050@163.com>
Co-authored-by: drunkpig <60862764+drunkpig@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Aoyang Fang <222010547@link.cuhk.edu.cn>
Co-authored-by: liukaiwen <liukaiwen@pjlab.org.cn>
Co-authored-by: yyy <102640628+dt-yy@users.noreply.github.com>
Co-authored-by: wangbinDL <wangbin_research@163.com>

---------

Co-authored-by: drunkpig <60862764+drunkpig@users.noreply.github.com>
Co-authored-by: sfk <18810651050@163.com>
Co-authored-by: Aoyang Fang <222010547@link.cuhk.edu.cn>
Co-authored-by: Xiaomeng Zhao <moe@myhloli.com>
Co-authored-by: Kaiwen Liu <lkw_buaa@163.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: liukaiwen <liukaiwen@pjlab.org.cn>
Co-authored-by: wangbinDL <wangbin_research@163.com>

* Update README.md

* Update README_zh-CN.md

* Update README_zh-CN.md

---------

Co-authored-by: yyy <102640628+dt-yy@users.noreply.github.com>
Co-authored-by: drunkpig <60862764+drunkpig@users.noreply.github.com>
Co-authored-by: Aoyang Fang <222010547@link.cuhk.edu.cn>
Co-authored-by: Xiaomeng Zhao <moe@myhloli.com>
Co-authored-by: Kaiwen Liu <lkw_buaa@163.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: liukaiwen <liukaiwen@pjlab.org.cn>
Co-authored-by: wangbinDL <wangbin_research@163.com>
2024-09-02 20:54:05 +08:00

16 KiB
Raw Blame History

更新记录

  • 2024/08/30 0.7.1发布集成了paddle tablemaster表格识别功能
  • 2024/08/09 0.7.0b1发布,简化安装步骤提升易用性,加入表格识别功能
  • 2024/08/01 0.6.2b1发布,优化了依赖冲突问题和安装文档
  • 2024/07/05 首次开源

文档目录

  1. MinerU
  2. TODO
  3. Known Issues
  4. FAQ
  5. Contributors
  6. License Information
  7. Acknowledgements
  8. Citation
  9. Star History
  10. magic-doc快速提取PPT/DOC/PDF
  11. magic-html提取混合网页内容
  12. Links

MinerU

项目简介

MinerU是一款将PDF转化为机器可读格式的工具如markdown、json可以很方便地抽取为任意格式。 MinerU诞生于书生-浦语的预训练过程中,我们将会集中精力解决科技文献中的符号转化问题,希望在大模型时代为科技发展做出贡献。 相比国内外知名商用产品MinerU还很年轻如果遇到问题或者结果不及预期请到issue提交问题,同时附上相关PDF

https://github.com/user-attachments/assets/4bea02c9-6d54-4cd6-97ed-dff14340982c

主要功能

  • 删除页眉、页脚、脚注、页码等元素,保持语义连贯
  • 对多栏输出符合人类阅读顺序的文本
  • 保留原文档的结构,包括标题、段落、列表等
  • 提取图像、图片标题、表格、表格标题
  • 自动识别文档中的公式并将公式转换成latex
  • 自动识别文档中的表格并将表格转换成latex
  • 乱码PDF自动检测并启用OCR
  • 支持CPU和GPU环境
  • 支持windows/linux/mac平台

快速开始

如果遇到任何安装问题,请先查询 FAQ
如果遇到解析效果不及预期,参考 Known Issues
有3种不同方式可以体验MinerU的效果

⚠️安装前必看——软硬件环境支持说明

为了确保项目的稳定性和可靠性,我们在开发过程中仅对特定的软硬件环境进行优化和测试。这样当用户在推荐的系统配置上部署和运行项目时,能够获得最佳的性能表现和最少的兼容性问题。

通过集中资源和精力于主线环境我们团队能够更高效地解决潜在的BUG及时开发新功能。

在非主线环境中由于硬件、软件配置的多样性以及第三方依赖项的兼容性问题我们无法100%保证项目的完全可用性。因此对于希望在非推荐环境中使用本项目的用户我们建议先仔细阅读文档以及FAQ大多数问题已经在FAQ中有对应的解决方案除此之外我们鼓励社区反馈问题以便我们能够逐步扩大支持范围。

操作系统
Ubuntu 22.04 LTS Windows 10 / 11 macOS 11+
CPU x86_64 x86_64 x86_64 / arm64
内存 大于等于16GB推荐32G以上
python版本 3.10
Nvidia Driver 版本 latest(专有驱动) latest None
CUDA环境 自动安装[12.1(pytorch)+11.8(paddle)] 11.8(手动安装)+cuDNN v8.7.0(手动安装) None
GPU硬件支持列表 最低要求 8G+显存 3060ti/3070/3080/3080ti/4060/4070/4070ti
8G显存仅可开启lavout和公式识别加速
None
推荐配置 16G+显存 3090/3090ti/4070tisuper/4080/4090
16G及以上可以同时开启layout公式识别和ocr加速
24G及以上可以同时开启layout公式识别ocr加速和表格识别

在线体验

在线体验点击这里

使用CPU快速体验

1. 安装magic-pdf

最新版本国内镜像源同步可能会有延迟,请耐心等待

conda create -n MinerU python=3.10
conda activate MinerU
pip install -U magic-pdf[full] --extra-index-url https://wheels.myhloli.com -i https://pypi.tuna.tsinghua.edu.cn/simple

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"

{
  // other config
  "models-dir": "D:/models",
  "table-config": {
        "model": "TableMaster", // 使用structEqTable请修改为'struct_eqtable'
        "is_table_recog_enable": false, // 表格识别功能默认是关闭的,如果需要修改此处的值
        "max_time": 400
    }
}

使用GPU

如果您的设备支持CUDA且满足主线环境中的显卡要求则可以使用GPU加速请根据自己的系统选择适合的教程

  • Ubuntu22.04LTS + GPU
  • Windows10/11 + GPU
  • 使用Docker快速部署

    Docker 需设备gpu显存大于等于16GB默认开启所有加速功能

    wget https://github.com/opendatalab/MinerU/raw/master/Dockerfile
    docker build -t mineru:0.7.0b1 .
    docker run --rm -it --gpus=all mineru:0.7.0b1 /bin/bash
    magic-pdf --help
    

使用

命令行

magic-pdf --help
Usage: magic-pdf [OPTIONS]

Options:
  -v, --version                display the version and exit
  -p, --path PATH              local pdf filepath or directory  [required]
  -o, --output-dir TEXT        output local directory
  -m, --method [ocr|txt|auto]  the method for parsing pdf.
                               ocr: using ocr technique to extract information from pdf,
                               txt: suitable for the text-based pdf only and outperform ocr,
                               auto: automatically choose the best method for parsing pdf
                                  from ocr and txt.
                               without method specified, auto will be used by default.
  --help                       Show this message and exit.


## show version
magic-pdf -v

## command line example
magic-pdf -p {some_pdf} -o {some_output_dir} -m auto

其中 {some_pdf} 可以是单个pdf文件也可以是一个包含多个pdf文件的目录。 运行完命令后输出的结果会保存在{some_output_dir}目录下, 输出的文件列表如下

├── some_pdf.md                          # markdown 文件
├── images                               # 存放图片目录
├── some_pdf_layout.pdf                  # layout 绘图
├── some_pdf_middle.json                 # minerU 中间处理结果
├── some_pdf_model.json                  # 模型推理结果
├── some_pdf_origin.pdf                  # 原 pdf 文件
└── some_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")

详细实现可参考

二次开发

TODO

TODO

  • 基于语义的阅读顺序
  • 正文中列表识别
  • 正文中代码块识别
  • 目录识别
  • 表格识别
  • 化学式识别
  • 几何图形识别

Known Issues

  • 阅读顺序基于规则的分割,在一些情况下会乱序
  • 不支持竖排文字
  • 列表、代码块、目录在layout模型里还没有支持
  • 漫画书、艺术图册、小学教材、习题尚不能很好解析
  • 在一些公式密集的PDF上强制启用OCR效果会更好
  • 如果您要处理包含大量公式的pdf,强烈建议开启OCR功能。使用pymuPDF提取文字的时候会出现文本行互相重叠的情况导致公式插入位置不准确。
  • 表格识别目前处于测试阶段,识别速度较慢,识别准确度有待提升。

FAQ

常见问题

FAQ

All Thanks To Our Contributors

License Information

LICENSE.md

本项目目前采用PyMuPDF以实现高级功能但因其遵循AGPL协议可能对某些使用场景构成限制。未来版本迭代中我们计划探索并替换为许可条款更为宽松的PDF处理库以提升用户友好度及灵活性。

Acknowledgments

Citation

@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 History

Star History Chart

Magic-doc

Magic-Doc Fast speed ppt/pptx/doc/docx/pdf extraction tool

Magic-html

Magic-HTML Mixed web page extraction tool

Links