README_zh-CN.md 7.73 KB
Newer Older
赵小蒙's avatar
赵小蒙 committed
1
2
3
<div id="top"></div>
<div align="center">

赵小蒙's avatar
赵小蒙 committed
4
5
6
[![stars](https://img.shields.io/github/stars/opendatalab/MinerU.svg)](https://github.com/opendatalab/MinerU)
[![forks](https://img.shields.io/github/forks/opendatalab/MinerU.svg)](https://github.com/opendatalab/MinerU)
[![open issues](https://img.shields.io/github/issues-raw/opendatalab/MinerU)](https://github.com/opendatalab/MinerU/issues)
myhloli's avatar
myhloli committed
7
8
9
10
[![issue resolution](https://img.shields.io/github/issues-closed-raw/opendatalab/MinerU)](https://github.com/opendatalab/MinerU/issues)
[![PyPI version](https://badge.fury.io/py/magic-pdf.svg)](https://badge.fury.io/py/magic-pdf)
[![Downloads](https://static.pepy.tech/badge/magic-pdf)](https://pepy.tech/project/magic-pdf)
[![Downloads](https://static.pepy.tech/badge/magic-pdf/month)](https://pepy.tech/project/magic-pdf)
赵小蒙's avatar
赵小蒙 committed
11
12
13
14
15
16
17
18
19

[English](README.md) | [简体中文](README_zh-CN.md)

</div>

<div align="center">

</div>

赵小蒙's avatar
赵小蒙 committed
20
21
# MinerU 

赵小蒙's avatar
赵小蒙 committed
22

myhloli's avatar
myhloli committed
23
24
## 简介

赵小蒙's avatar
赵小蒙 committed
25
MinerU 是一款一站式、开源、高质量的数据提取工具,主要包含以下功能:
赵小蒙's avatar
赵小蒙 committed
26

赵小蒙's avatar
赵小蒙 committed
27
28
- [Magic-PDF](#Magic-PDF)  PDF文档提取
- [Magic-Doc](#Magic-Doc)  网页与电子书提取  
赵小蒙's avatar
赵小蒙 committed
29

赵小蒙's avatar
赵小蒙 committed
30
31
# Magic-PDF

赵小蒙's avatar
赵小蒙 committed
32

赵小蒙's avatar
赵小蒙 committed
33
## 简介
赵小蒙's avatar
赵小蒙 committed
34
35
36
37
38
39
40
41

Magic-PDF 是一款将 PDF 转化为 markdown 格式的工具。支持转换本地文档或者位于支持S3协议对象存储上的文件。

主要功能包含

- 支持多种前端模型输入
- 删除页眉、页脚、脚注、页码等元素
- 符合人类阅读顺序的排版格式
赵小蒙's avatar
赵小蒙 committed
42
- 保留原文档的结构和格式,包括标题、段落、列表等
赵小蒙's avatar
赵小蒙 committed
43
44
45
46
47
48
- 提取图像和表格并在markdown中展示
- 将公式转换成latex
- 乱码PDF自动识别并转换
- 支持cpu和gpu环境
- 支持windows/linux/mac平台

myhloli's avatar
myhloli committed
49

赵小蒙's avatar
赵小蒙 committed
50
https://github.com/opendatalab/MinerU/assets/11393164/618937cb-dc6a-4646-b433-e3131a5f4070
myhloli's avatar
myhloli committed
51
52


赵小蒙's avatar
update:  
赵小蒙 committed
53

赵小蒙's avatar
赵小蒙 committed
54
55
56
57
## 项目全景

![项目全景图](docs/images/project_panorama_zh_cn.png)

赵小蒙's avatar
赵小蒙 committed
58
59
## 流程图

60
61
62
63
![流程图](docs/images/flowchart_zh_cn.png)

### 子模块仓库

wangbinDL's avatar
wangbinDL committed
64
- [PDF-Extract-Kit](https://github.com/opendatalab/PDF-Extract-Kit) 
赵小蒙's avatar
赵小蒙 committed
65
  - 高质量的PDF内容提取工具包
赵小蒙's avatar
赵小蒙 committed
66

赵小蒙's avatar
赵小蒙 committed
67
## 上手指南
赵小蒙's avatar
赵小蒙 committed
68

赵小蒙's avatar
赵小蒙 committed
69
### 配置要求
赵小蒙's avatar
赵小蒙 committed
70

赵小蒙's avatar
赵小蒙 committed
71
python >= 3.9
赵小蒙's avatar
赵小蒙 committed
72

73
74
75
推荐使用虚拟环境,venv和conda皆可。
开发基于python 3.10,如果在其他版本python出现问题请切换至3.10。

赵小蒙's avatar
赵小蒙 committed
76
### 使用说明
赵小蒙's avatar
赵小蒙 committed
77

赵小蒙's avatar
赵小蒙 committed
78
#### 1. 安装Magic-PDF
赵小蒙's avatar
赵小蒙 committed
79

赵小蒙's avatar
赵小蒙 committed
80
```bash
81
# 如果只需要基础功能(不含内置模型解析功能)
赵小蒙's avatar
赵小蒙 committed
82
pip install magic-pdf
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# or
# 完整解析功能(含内置高精度模型解析功能)
pip install magic-pdf[full-cpu]

# 另外需要安装依赖 detectron2
# detectron2需要编译安装,自行编译安装可以参考https://github.com/facebookresearch/detectron2/issues/5114
# 或直接使用我们编译好的的whl包,不同系统请自行选择适配包安装

# windows
pip install https://github.com/opendatalab/MinerU/raw/master/assets/whl/detectron2-0.6-cp310-cp310-win_amd64.whl

# linux
pip install https://github.com/opendatalab/MinerU/raw/master/assets/whl/detectron2-0.6-cp310-cp310-linux_x86_64.whl

# macOS(Intel)
pip install https://github.com/opendatalab/MinerU/raw/master/assets/whl/detectron2-0.6-cp310-cp310-macosx_10_9_universal2.whl

# macOS(M1/M2/M3)
pip install https://github.com/opendatalab/MinerU/raw/master/assets/whl/detectron2-0.6-cp310-cp310-macosx_11_0_arm64.whl

赵小蒙's avatar
赵小蒙 committed
103
104
```

105
#### 2. 下载模型权重文件
赵小蒙's avatar
赵小蒙 committed
106

107
108
109
110
详细参考[如何下载模型文件](docs/how_to_download_models.md)
下载后请将models目录拷贝到空间较大的ssd磁盘目录

#### 3. 拷贝配置文件并进行配置
赵小蒙's avatar
赵小蒙 committed
111

赵小蒙's avatar
赵小蒙 committed
112
```bash
113
# 拷贝配置文件到根目录
赵小蒙's avatar
赵小蒙 committed
114
cp magic-pdf.template.json ~/magic-pdf.json
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
```
在magic-pdf.json中配置"models-dir"为模型权重文件所在目录
```json
{
  "models-dir": "/tmp/models"
}
```

#### 4. 通过命令行使用

###### 直接使用

```bash
magic-pdf pdf-command --pdf "pdf_path" --inside_model true
```
程序运行完成后,你可以在"/tmp/magic-pdf"目录下看到生成的markdown文件,markdown目录中可以找到对应的xxx_model.json文件
如果您有意对后处理pipeline进行二次开发,可以使用命令
```bash
赵小蒙's avatar
赵小蒙 committed
133
134
magic-pdf pdf-command --pdf "pdf_path" --model "model_json_path"
```
135
这样就不需要重跑模型数据,调试起来更方便
赵小蒙's avatar
赵小蒙 committed
136

赵小蒙's avatar
赵小蒙 committed
137
###### 更多用法
赵小蒙's avatar
赵小蒙 committed
138

赵小蒙's avatar
赵小蒙 committed
139
140
141
142
```bash
magic-pdf --help
```

143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172

#### 5. 使用CUDA或MPS进行加速

###### CUDA

需要根据自己的CUDA版本安装对应的pytorch版本
```bash
# 使用gpu方案时,需要重新安装对应cuda版本的pytorch,例子是安装CUDA 11.8版本的
pip install --force-reinstall torch==2.3.1 torchvision==0.18.1 --index-url https://download.pytorch.org/whl/cu118
```

同时需要修改配置文件magic-pdf.json中"device-mode"的值
```json
{
  "device-mode":"cuda"
}
```

###### MPS
使用macOS(M系列芯片设备)可以使用MPS进行推理加速

需要修改配置文件magic-pdf.json中"device-mode"的值
```json
{
  "device-mode":"mps"
}
```


#### 6. 通过接口调用
赵小蒙's avatar
赵小蒙 committed
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197

###### 本地使用
```python
image_writer = DiskReaderWriter(local_image_dir)
image_dir = str(os.path.basename(local_image_dir))
jso_useful_key = {"_pdf_type": "", "model_list": model_json}
pipe = UNIPipe(pdf_bytes, jso_useful_key, image_writer)
pipe.pipe_classify()
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": model_json}
pipe = UNIPipe(pdf_bytes, jso_useful_key, s3image_cli)
pipe.pipe_classify()
pipe.pipe_parse()
md_content = pipe.pipe_mk_markdown(image_dir, drop_mode="none")
```

198
详细实现可参考 [demo.py](demo/demo.py)
赵小蒙's avatar
赵小蒙 committed
199

myhloli's avatar
myhloli committed
200

赵小蒙's avatar
赵小蒙 committed
201
202
# Magic-Doc

赵小蒙's avatar
赵小蒙 committed
203

myhloli's avatar
myhloli committed
204
205
## 简介

赵小蒙's avatar
赵小蒙 committed
206
207
208
209
210
211
212
213
214
215
216
217
218
Magic-Doc 是一款支持将网页或多格式电子书转换为 markdown 格式的工具。

主要功能包含
 
- Web网页提取
  - 跨模态精准解析图文、表格、公式信息

- 电子书文献提取
  - 支持 epub,mobi等多格式文献,文本图片全适配

- 语言类型鉴定
  - 支持176种语言的准确识别

myhloli's avatar
myhloli committed
219
220
221
222
223
224
https://github.com/opendatalab/MinerU/assets/11393164/a5a650e9-f4c0-463e-acc3-960967f1a1ca



https://github.com/opendatalab/MinerU/assets/11393164/0f4a6fe9-6cca-4113-9fdc-a537749d764d

赵小蒙's avatar
赵小蒙 committed
225
226


myhloli's avatar
myhloli committed
227
https://github.com/opendatalab/MinerU/assets/11393164/20438a02-ce6c-4af8-9dde-d722a4e825b2
赵小蒙's avatar
赵小蒙 committed
228
229


myhloli's avatar
myhloli committed
230

赵小蒙's avatar
赵小蒙 committed
231

myhloli's avatar
myhloli committed
232
## 项目仓库
myhloli's avatar
myhloli committed
233

赵小蒙's avatar
赵小蒙 committed
234
- [Magic-Doc](https://github.com/InternLM/magic-doc)
myhloli's avatar
myhloli committed
235
  优秀的网页与电子书提取工具
赵小蒙's avatar
赵小蒙 committed
236

赵小蒙's avatar
赵小蒙 committed
237

赵小蒙's avatar
赵小蒙 committed
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
## 感谢我们的贡献者

<a href="https://github.com/magicpdf/Magic-PDF/graphs/contributors">
  <img src="https://contrib.rocks/image?repo=opendatalab/MinerU" />
</a>


## 版权说明

[LICENSE.md](LICENSE.md)

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


## 致谢
- [PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR)
- [PyMuPDF](https://github.com/pymupdf/PyMuPDF)
赵小蒙's avatar
赵小蒙 committed
255
256
- [fast-langdetect](https://github.com/LlmKira/fast-langdetect)
- [pdfminer.six](https://github.com/pdfminer/pdfminer.six)
赵小蒙's avatar
赵小蒙 committed
257
258


赵小蒙's avatar
赵小蒙 committed
259
260
261
262
263
264
265
266
267
268
269
# 引用

```bibtex
@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}
}
```

赵小蒙's avatar
赵小蒙 committed
270
  
赵小蒙's avatar
赵小蒙 committed
271
# Star History
赵小蒙's avatar
赵小蒙 committed
272

赵小蒙's avatar
赵小蒙 committed
273
274
275
276
277
278
279
<a>
 <picture>
   <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=opendatalab/MinerU&type=Date&theme=dark" />
   <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=opendatalab/MinerU&type=Date" />
   <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=opendatalab/MinerU&type=Date" />
 </picture>
</a>