自学内容网 自学内容网

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

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

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

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

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

8db572e8db884a7ab7fa6f4b89e61213.png

目录

一、环境安装

        1.GOT-OCR源码下载

        2.虚拟环境与Torch安装

        3.GOT依赖包安装

二、模型参数下载

三、官方模型参数实验

        1.测试报错处理

        2.从测试数据内容出发

        ①中英混搭文本

        ②表格及公式

        ③化学符图表形状

        ④繁体中文

        3.从识别模式出发

        ①Format可视化模式

​        ②兴趣区域识别模式

        ③高分辨率切图识别模式

结语


一、环境安装

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

92f5e3a5e31040d89a65b0b0bf96919f.png

        1.GOT-OCR源码下载

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

500febc887e54b46b6ec4568d7355d1e.png

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

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

58e51b67634f45469e3c0dbd772ee404.png

        2.虚拟环境与Torch安装

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

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

d6f43b1aed5d4ae19007b22719654428.png

# 创建虚拟环境
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

821bcd59331e41ad8743df7fb6c197e6.png

        3.GOT依赖包安装

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

33feb7859d304d578059b9312d2bb9ab.png

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

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

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

# 导航到pyproject.toml处
cd GOT-OCR-2.0-master

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

1712ff4e178548da98f34ddf6e13ffca.png

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

6948060446ab48518558b366dad818bc.png

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

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

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

a221e368125e495fb1b744b1d6a255f4.png

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

# 安装whl包
pip install deepspeed-0.14.3+cf8316a4-cp310-cp310-win_amd64.whl

7ae13da260b8417d919ee5821df9858d.png

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

a565a6a1336a49e7b7be1e3e1853023a.png

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

7687ab1b77674749b8172eaed705afe8.png

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

59692179c55c4f999f9c7eed5987f2be.png

二、模型参数下载

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

aaae9093005b47e8a1753cbfdf7a06ea.png

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

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

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

15687b61608f467b8e50fe60419dbad4.png

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

        320fee2457f6433ba226eb5b54bc32dc.png

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

三、官方模型参数实验

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

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

        1.测试报错处理

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

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

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

b1b31202a47942c8a8bf64d9ab35212f.png

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

8fa7bd67791b4863ab51a475e56e6346.png

        2.从测试数据内容出发

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

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

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

        ①中英混搭文本

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

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的局部识别能力)

ce82b59ac3bd42d89d2b8ad0bacf12f0.png

        ②表格及公式

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

e783df9d617b43a1ae285a4582453a1c.png

e2188e0494a74cf796ee204f66f18334.png 

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

cb401d9475f7454eb043a15e0e1498a5.png

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

a05ff4b9fc0747a2bd58ffb219f38c3d.png

        ③化学符图表形状

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

633f4f57e01940b5b0acbd4c5cf001ed.png

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

ae53f8b9e27d422a87f89479864c2adb.png

        ④繁体中文

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

a92943a0d5b34bfa80767178d9ba9b56.png

        3.从识别模式出发

        ①Format可视化模式

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

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

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’ 即可。

dcb04d40b8fb4264b265969b939c1b48.png

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

9d2bc94f0172439ab8069a44d40978e1.png

e2188e0494a74cf796ee204f66f18334.png         ②兴趣区域识别模式

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

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

# 根据区域坐标
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 GOT/demo/run_ocr_2.0_crop.py  --model-name  /GOT_weights/ --image-file  /an/image/file.png 

结语

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

 


原文地址:https://blog.csdn.net/qq_58718853/article/details/143773469

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!