从零开始使用GOT-OCR2.0——多模态通用型OCR(非常具有潜力的开源OCR项目):项目环境安装配置 + 测试使用

在之前精读了这个多模态的OCR项目论文,理解了其基本的模型架构,论文精读地址:

【论文精读】GOT-OCR2.0源码论文------打破传统OCR流程的多模态视觉-语言大模型架构:预训练VitDet 视觉模型+ 阿里通义千问Qwen语言模型-CSDN博客

本文在阅读论文基础上,根据官方指南安装配置其项目源码环境的过程,并且记录实际安装中可能会出现的问题及如何解决。最后在安装好的环境中,测试官方训练的模型在挑选的一些图片中的OCR效果。

在测试过程中,其通用性表现在传统OCR可能需要多个模型分别进行文字、数字、公式等功能实现,OCR2.0一个模型就够了。更令人惊奇的是,OCR2.0不仅可以提取图像中已有的文本内容,甚至可以分析图表得到"思考"后的文本信息------详见测试章节(三.2.③章节)

目录

一、环境安装

1.GOT-OCR源码下载

2.虚拟环境与Torch安装

3.GOT依赖包安装

二、模型参数下载

三、官方模型参数实验

1.测试报错处理

2.从测试数据内容出发

①中英混搭文本

②表格及公式

③化学符图表形状

④繁体中文

3.从识别模式出发

①Format可视化模式

​ ②兴趣区域识别模式

③高分辨率切图识别模式

结语


一、环境安装

Github项目源码地址给出的安装方式是先使用Git克隆项目,本文因为网络等问题暂且不使用这种方式,直接去下载源码zip包解压到自己的项目文件处。

1.GOT-OCR源码下载

Github地址:https://github.com/Ucas-HaoranWei/GOT-OCR2.0

解压完成后,GOT-OCR-2.0-master下是主运行程序源码,可以使用Pychram创建下面进入。不使用Pycharm也要在命令行进入这个目录下进行安装。PDF文件是这个开源项目的论文。

python 复制代码
# 进入主程序目录下进行安装环境操作
cd GOT-OCR2.0-main\GOT-OCR-2.0-master

2.虚拟环境与Torch安装

老规矩,首先创建虚拟环境和安装必要的 torch 环境。

根据安装指南中的记录,作者使用的是cuda11.8和torch2.0.1版本,我们也安装相同。

python 复制代码
# 创建虚拟环境
conda create -n got python=3.10 -y

# 激活
conda activate got

# 安装对应torch
pip install torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118

3.GOT依赖包安装

在之前下载好的源码处,进入GOT-OCR-2.0-master这个主运行程序目录,可以看到目录下有一个pyproject.toml 文件,按照官方指南使用pip安装命令,就会根据这个文件安装所需的依赖包,并在环境中创建一个GOT环境库。

下面开始按照官方指南pip安装GOT库。

pip install . 安装方式是在当前目录下寻找setup.py 文件或 pyproject.toml文件进行安装,-e表示是编辑开发模式,目录处的代码变化也会影响安装的包环境。

这种安装方式需要确保cd到对应pyproject.toml文件目录,在下载的源码里,其目录在GOT-OCR-2.0-master下。

python 复制代码
# 导航到pyproject.toml处
cd GOT-OCR-2.0-master

# 开发模式安装相关包
pip install -e .

在安装GOT 依赖包中的 deepspeed==0.12.3 似乎会报错。

查询网上其他博文安装都比较复杂,实验了一下使用whl包可以成功安装。

deepspeed的whl地址https://github.com/melMass/DeepSpeed/releases/tag/v0.14.3

安装方法和过程如下。先去上述官方的Github项目地址下下载其发布的whl包到本地。(没有找到默认要求里的deepspeed==0.12.3版本,安装了其最新的版本0.14.3,后续使用没有报错)

然后将安装包 .whl 放到环境的 Scripts 下,进入环境pip安装即可。

python 复制代码
# 安装whl包
pip install deepspeed-0.14.3+cf8316a4-cp310-cp310-win_amd64.whl

(注意) 安装完后,还要修改pyproject.toml 文件中的安装deepspeed版本设置(默认版本的没有在官方下找到对应whl包),再返回进行pip install -e . 才能安装成功。

最后看到打印下面这个就可以开一半的香槟了!安装GOT库算是完成了。

可以pip list 打印看一下现在安装好的库都有哪些。

二、模型参数下载

官方指南给了三种模型参数下载方式。

但建议最好用huggingface的国内镜像源,下载快速便捷,

模型在镜像源地址如下:https://hf-mirror.com/stepfun-ai/GOT-OCR2_0

模型参数偏大------model.safetensors,约1.5G,需耐心下载。

等所有下载好了,在GOT 源码主程序目录GOT-OCR-2.0-master 下新建一个GOT_weights文件夹,用于存放下载内容,到时候指令使用模型的时候只需指定到这个新建地址即可。

至此,环境配置部分基本完成,可以开香槟庆祝一下了。下面安装官方指南给出的命令指令规则测试一下在实际图片上的OCR表现效果。

三、官方模型参数实验

下面来测试一下GOT-OCR2.0强大的 "通用型" OCR能力。

推理设备要求,至少需要 6G 以上显存的GPU设备,如果是使用cuda推理的话。

1.测试报错处理

实验中可能会出现一些运行报错,将报错和解决方案记录在下。

通过官方指令可以看到,实际运行的是源码主程序GOT-OCR-2.0-master 目录GOT/demo下的py文件。

下面这个报错是因为cuda的软件版本和GPU的硬件不支持最新的 bfloat16 数据结构------(好像只有最新的H100、A100等高端性能服务级显卡在数据架构上支持这一格式)

这个只需修改对应报错地方的数据格式,改为 float16 即可,从报错信息可以看到在136行。

2.从测试数据内容出发

找了几种不同类型的文本内容进行测试,这些在传统OCR流程中可能对应不同的任务模式,需要单独构建模型。这部分是测试OCR2.0模型的"通用性"

本部分同用一个命令,即**--type ocr**,这个模式下仅识别文本内容并打印出ocr结果

python 复制代码
python GOT/demo/run_ocr_2.0.py  --model-name  "model_path"  --image-file "img_path" --type ocr

①中英混搭文本

需要注意命令行中的地址可能需要使用绝对地址路径,比如--model-name 后的模型地址最好使用本地带在哪个盘的绝对地址路径。

python 复制代码
python GOT/demo/run_ocr_2.0.py  --model-name  \GOT-OCR2.0-main\GOT-OCR-2.0-master\GOT_weights\  --image-file  \GOT-OCR2.0-main\GOT-OCR-2.0-master\test\jpg\test1.jpg  --type ocr

下面是识别结果打印(默认情况是只打印文本),可以看到是没什么问题,效果很好的。

而且不管是论文标准字体(英文部分),还是添加的中文注释,识别准确度都很高,也没有漏检,连人名上的小数字也识别在内(体现了视觉VitDet的局部识别能力)

②表格及公式

下面仍按上述模型识别方式,只是改变图片输入,可以看到对于图表格式数据,识别效果依然挺好,几乎都正确。下图没有展示完整识别结果,就单行对应基本准确,具体内容在后续format模式的可视化效果展示中可以清晰看到。

更令人振奋的是,其对于图表中的公式内容也可以提取识别出来,虽然部分其可能只是视为英文字符,但是一些特殊的数学符号(如)其也能识别出来,说明其具有一定的读取数学符号能力的。

经过可视化渲染可以更加清晰看到起结果。左侧是图片,右侧则是可以复制粘贴的OCR文本数据。足以看到其强大功能。

③化学符图表形状

本部分指令代码要参考之后章节,要使用--render保存渲染结果。直接展示结果。左侧是原图,右侧是OCR识别结果经过渲染后的html可视化结果。

另外一个令人震惊的是其图表识别能力 ,其语言模型似乎继承了LVLMs的一定能力,可以理解图片的数轴和颜色?在本例图中,就红色柱状图对应Ann的Mon类中,图中并没有标注815数值,但模型仅通过读取图片查询数轴相对位置,就得到了一个精准近似结果,这是传统OCR不敢相信的。

④繁体中文

在测试中也发现,官方训练集可能缺乏对繁体中文的数据,繁体字的识别效果没有那么好,但是也能识别出部分常见字。

3.从识别模式出发

①Format可视化模式

在上部分使用了正常的ocr打印结果,这部分使用其format,并在最后加--render即可实现可视化,可视化结果保存在项目文件 result/demo.html 文件内,直接浏览器打开就可以看到最终渲染效果了。

指令命令如下,也是最好使用绝对地址。

python 复制代码
python GOT/demo/run_ocr_2.0.py  --model-name  "model_path"  --image-file "img_path" --type format --render

本部分模式可视化中,还有一些源码简单修改。为了防止在最后可视化的中文变成乱码结果,需要在其运行保存写入html文件处加上编码格式。在GOT/demo/run_ocr2.0.py 文件的228行处, 加一个encoding='utf-8' 即可。

效果如下。 可以看到对于表格数据来说还是不错的。

②兴趣区域识别模式

模型还支持兴趣区域识别ocr,原文指出这对于点读笔来说有使用价值,具体来说可以根据区域在原图中的位置框,或者用特殊颜色进行涂色的区域进行单独识别。

其指令代码如下,受精力限制,本部分的实验在之后有时间再进行。

python 复制代码
# 根据区域坐标
python GOT/demo/run_ocr_2.0.py  --model-name  /GOT_weights/  --image-file  /an/image/file.png  --type format/ocr --box [x1,y1,x2,y2]

# 根据区域颜色
python GOT/demo/run_ocr_2.0.py  --model-name  /GOT_weights/  --image-file  /an/image/file.png  --type format/ocr --color red/green/blue

③高分辨率切图识别模式

由于模型训练采用的1024*1024的图像,超过这个比例的高清图识别效率不高(测试图片均小于这个值),因此对于高清大尺寸图,作者采用切分识别然后整合的处理方法。

指令如下,注意如果也出现第一部分报错提醒,也要修改run_ocr_2.0_crop.py对应部分。

python 复制代码
# 高清大图切分处理
python GOT/demo/run_ocr_2.0_crop.py  --model-name  /GOT_weights/ --image-file  /an/image/file.png 

结语

至此GOT-OCR2.0的环境安装和一些基本测试完结,在后续将构建起微调训练的数据集格式,并进行微调训练和从头训练的测试记录。敬请期待,谢谢。

相关推荐
deephub13 小时前
LEC: 基于Transformer中间层隐藏状态的高效特征提取与内容安全分类方法
人工智能·深度学习·transformer·大语言模型·特征提取
宝贝儿好16 小时前
【NLP】第七章:Transformer原理及实操
人工智能·深度学习·自然语言处理·transformer
Struart_R19 小时前
CogVideoX: Text-to-Video Diffusion Models with An Expert Transformer 论文解读
人工智能·深度学习·计算机视觉·transformer·视频生成
AI程序猿人1 天前
三种Transformer模型中的注意力机制介绍及Pytorch实现:从自注意力到因果自注意力
人工智能·pytorch·深度学习·自然语言处理·大模型·transformer·llms
lalahappy1 天前
Swin transformer 论文阅读记录 & 代码分析
论文阅读·深度学习·transformer
赵钰老师1 天前
遥感影像目标检测:从CNN(Faster-RCNN)到Transformer(DETR
pytorch·python·深度学习·目标检测·机器学习·cnn·transformer
通信仿真实验室2 天前
BERT模型入门(1)BERT的基本概念
人工智能·深度学习·自然语言处理·bert·transformer
西西弗Sisyphus2 天前
使用Gradio编写大模型ollama客户端 -界面版
lora·大模型·transformer·qwen2-vl
凳子花❀2 天前
CNN和Transfomer介绍
人工智能·神经网络·cnn·transformer
凳子花❀2 天前
CNN、RNN、LSTM和Transformer之间的区别和联系
rnn·yolo·cnn·lstm·transformer