README.md 4.29 KB
Newer Older
wanglch's avatar
wanglch committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# olmocr
## 论文

[olmOCR: Unlocking Trillions of Tokens
 in PDFswithVisionLanguageModels](https://olmocr.allenai.org/papers/olmocr.pdf)


## 模型结构


olmOCR结合文档锚定(document-anchoring)技术与Qwen2-VL-7B-Instruct(阿里多模态模型),支持处理多种类型的PDF文档,包括学术论文、书籍、表格和图表等。olmOCR基于提取文档中的文本和布局信息,与页面图像结合,更准确地提取内容、保留结构化信息。


<div align=center>
    <img src="./pics/arch.jpg"/>
</div>

## 算法原理

* 文档锚定(Document-anchoring):基与提取PDF页面中的文本块和图像的位置信息,与原始文本结合,形成提示(prompt)。提示与页面的栅格化图像一起输入到视觉语言模型(VLM)中。帮助模型更好地理解文档的结构和布局,减少因图像模糊或布局复杂导致的提取错误。
* 微调的视觉语言模型(VLM):基于Qwen2-VL-7B-Instruct的7B参数视觉语言模型。在包含26万页PDF的数据集上进行微调,适应文档处理任务。模型输出结构化的JSON数据,包含页面的元数据(如语言、方向、是否包含表格等)和自然阅读顺序的文本内容。

<div align=center>
    <img src="./pics/theory.png"/>
</div>

## 环境配置
### Docker(方法一)
推荐使用docker方式运行, 此处提供[光源](https://www.sourcefind.cn/#/service-details)拉取docker镜像的地址与使用步骤
```
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.3.0-py3.10-dtk24.04.3-ubuntu20.04
docker run -it --shm-size=1024G -v /path/your_code_data/:/path/your_code_data/ -v /opt/hyhal:/opt/hyhal --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --name olmocr  <your IMAGE ID> bash # <your IMAGE ID>为以上拉取的docker的镜像ID替换

cd /path/your_code_data/
wanglch's avatar
wanglch committed
35
36
37
38
39

sudo apt-get update
sudo apt-get install poppler-utils ttf-mscorefonts-installer msttcorefonts fonts-crosextra-caladea fonts-crosextra-carlito gsfonts lcdf-typetools


wanglch's avatar
wanglch committed
40
pip install olmocr
wanglch's avatar
wanglch committed
41
pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple
wanglch's avatar
wanglch committed
42

wanglch's avatar
wanglch committed
43
44
pip unintall torchvision
pip install torchvision
wanglch's avatar
wanglch committed
45
46
47
48
49
50
51
52
```
Tips:以上dtk驱动、python、torch等DCU相关工具版本需要严格一一对应。
### Dockerfile(方法二)
此处提供dockerfile的使用方法
```
docker build -t olmocr:latest .
docker run --shm-size 500g --network=host --name=olmocr --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v 项目地址(绝对路径):/home/ -v /opt/hyhal:/opt/hyhal:ro -it <your IMAGE ID> bash

wanglch's avatar
wanglch committed
53
54
55
sudo apt-get update
sudo apt-get install poppler-utils ttf-mscorefonts-installer msttcorefonts fonts-crosextra-caladea fonts-crosextra-carlito gsfonts lcdf-typetools

wanglch's avatar
wanglch committed
56
57
cd /path/your_code_data/
pip install olmocr
wanglch's avatar
wanglch committed
58
pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple
wanglch's avatar
wanglch committed
59

wanglch's avatar
wanglch committed
60
61
pip unintall torchvision
pip install torchvision
wanglch's avatar
wanglch committed
62
63
64
65
```
### Anaconda(方法三)
此处提供本地配置、编译的详细步骤,例如:

chenzk's avatar
chenzk committed
66
关于本项目DCU显卡所需的特殊深度学习库可从[光合](https://developer.sourcefind.cn/tool/)开发者社区下载安装。
wanglch's avatar
wanglch committed
67
68
69
```
DTK驱动:dtk24.04.3
python:3.10
wanglch's avatar
wanglch committed
70
torch:2.6.0
wanglch's avatar
wanglch committed
71
72
73
74
75
76
77
78
79
80
flash-attn:2.6.1
```
`Tips:以上dtk驱动、python、torch等DCU相关工具版本需要严格一一对应`

其它非深度学习库参照requirement.txt安装:
```
conda create -n olmocr python=3.10

conda activate olmocr

wanglch's avatar
wanglch committed
81
82
sudo apt-get update
sudo apt-get install poppler-utils ttf-mscorefonts-installer msttcorefonts fonts-crosextra-caladea fonts-crosextra-carlito gsfonts lcdf-typetools
wanglch's avatar
wanglch committed
83
84
85

cd /path/your_code_data/
pip install olmocr
wanglch's avatar
wanglch committed
86
pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple
wanglch's avatar
wanglch committed
87
88
89
90


pip unintall torchvision
pip install torchvision
wanglch's avatar
wanglch committed
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
```
## 数据集


```

```

## 训练


```

```


## 推理

```
python olmocr_ocr.py
```


## result


<div align=left>
    <img src="./pics/result.png"/>
</div>


### 精度





## 应用场景
wanglch's avatar
wanglch committed
129

wanglch's avatar
wanglch committed
130
### 算法类别
wanglch's avatar
wanglch committed
131

wanglch's avatar
wanglch committed
132
`OCR`
wanglch's avatar
wanglch committed
133

wanglch's avatar
wanglch committed
134
### 热点应用行业
wanglch's avatar
wanglch committed
135

wanglch's avatar
wanglch committed
136
`科研,教育,政府,金融`
wanglch's avatar
wanglch committed
137

wanglch's avatar
wanglch committed
138
## 预训练权重
wanglch's avatar
wanglch committed
139
[ModelScope](https://modelscope.cn/)下载地址为:
wanglch's avatar
wanglch committed
140
141

[allenai/olmOCR-7B-0225-preview](https://www.modelscope.cn/models/allenai/olmOCR-7B-0225-preview)
wanglch's avatar
wanglch committed
142
143


wanglch's avatar
wanglch committed
144
## 源码仓库及问题反馈
wanglch's avatar
wanglch committed
145

wanglch's avatar
wanglch committed
146
- https://developer.sourcefind.cn/codes/modelzoo/olmocr_pytorch
wanglch's avatar
wanglch committed
147
148
149

## 参考资料

wanglch's avatar
wanglch committed
150
151
- https://github.com/allenai/olmocr

wanglch's avatar
wanglch committed
152
153