从零开始使用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的环境安装和一些基本测试完结,在后续将构建起微调训练的数据集格式,并进行微调训练和从头训练的测试记录。敬请期待,谢谢。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/61059.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Golang】——Gin 框架中的表单处理与数据绑定

在 Web 应用开发中,表单是用户与服务器交互的重要手段。Gin 框架对表单处理提供了高效便捷的支持,包括数据绑定、验证等功能。在本篇博客中,我们将详细介绍如何使用 Gin 框架处理表单数据,涵盖基础操作与进阶技巧,帮助…

删除k8s 或者docker运行失败的脚本

vi delete_exited_containers.sh#!/bin/bash# 列出所有停止的容器并存储到数组 list_exited_containers() {echo -e "\nStopped containers:"containers()# 获取停止的容器信息并存入数组while IFS read -r line; docontainers("$line")done < <(do…

Linux(命令格式详细+字符集 图片+大白话)

后面也会持续更新&#xff0c;学到新东西会在其中补充。 建议按顺序食用&#xff0c;欢迎批评或者交流&#xff01; 缺什么东西欢迎评论&#xff01;我都会及时修改的&#xff01; 在这里真的很感谢这位老师的教学视频让迷茫的我找到了很好的学习视频 王晓春老师的个人空间…

Clip结合Faiss+Flask简易版文搜图服务

一、实现 使用目录结构&#xff1a; templates ---upload.html faiss_app.py 前端代码&#xff1a;upload.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content&quo…

SpringBoot 之整合gRPC

父工程中引入基本的依赖&#xff1a; <modules><module>api</module><module>client</module><module>service</module></modules><parent><artifactId>spring-boot-starter-parent</artifactId><group…

汽车资讯新篇章:Spring Boot技术启航

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1系统工作原理…

「二」体验HarmonyOS端云一体化开发模板(一)

关于作者 白晓明 宁夏图尔科技有限公司董事长兼CEO、坚果派联合创始人 华为HDE、润和软件HiHope社区专家、鸿蒙KOL、仓颉KOL 华为开发者学堂/51CTO学堂/CSDN学堂认证讲师 开放原子开源基金会2023开源贡献之星 1 前置条件 实名认证的华为开发者账号 安装DevEco Studio 5.0.0 Re…

逆向攻防世界CTF系列41-EASYHOOK

逆向攻防世界CTF系列41-EASYHOOK 看题目是一个Hook类型的&#xff0c;第一次接触&#xff0c;虽然学过相关理论&#xff0c;可以看我的文章 Hook入门(逆向)-CSDN博客 题解参考&#xff1a;https://www.cnblogs.com/c10udlnk/p/14214057.html和攻防世界逆向高手题之EASYHOOK-…

Windows文件资源管理器增强工具

引言&#xff1a; 资源管理器在我们使用电脑时是经常用到的&#xff0c;各种文件资源等的分类整理都离不开它。但是Windows Explorer确实不好用&#xff0c;不智能&#xff0c;不符合人体工程学。特别是在一些场合&#xff0c;在打开的一堆文件夹里&#xff0c;想从中找到自己要…

【Flask+Gunicorn+Nginx】部署目标检测模型API完整解决方案

【Ubuntu 22.04FlaskGunicornNginx】部署目标检测模型API完整解决方案 文章目录 1. 搭建深度学习环境1.1 下载Anaconda1.2 打包环境1.3 创建虚拟环境1.4 报错 2. 安装flask3. 安装gunicorn4. 安装Nginx4.1 安装前置依赖4.2 安装nginx4.3 常用命令 5. NginxGunicornFlask5.1 ng…

Mac系统下配置 Tomcat 运行环境

下载并解压JDK 下载 根据自己需求下载对应版本的 jdk&#xff0c;我演示使用的是最新版的 jdk23&#xff0c;其他版本过程一样。 如果你是 M 芯片可以点击这个链接下载 如果你是 Intel 芯片可以点击这个链接下载 解压 下载完成后双击解压&#xff0c;将解压出来的文件夹放…

Getx:响应式数据,实现数据的局部刷新

Flutter官网demo实现计数器 这个demo中&#xff0c;如果要更新_count&#xff0c;调用setState就会重新build&#xff0c;这样做比较耗费性能&#xff0c;此时可以使用Getx的响应式状态管理器实现局部刷新 import package:flutter/material.dart;class JiShu extends Stateful…

Dowex 50WX8 ion-exchange resin可以用于去除水中的金属离子(如钠、钾、镁、钙等)和其他杂质,提高水质,11119-67-8

一、基本信息 中文名称&#xff1a;Dowex 50WX8 离子交换树脂 英文名称&#xff1a;Dowex 50WX8 ion-exchange resin CAS号&#xff1a;11119-67-8 供应商&#xff1a;陕西新研博美生物科技 外观&#xff1a;米色至浅棕色或绿棕色粉末/微球状 纯度&#xff1a;≥95% 分子…

使用Tengine 对负载均衡进行状态检查(day028)

本篇文章对于在服务器已经安装了nginx,但却希望使用Tengine 的状态检查或其他功能时使用&#xff0c;不需要卸载服务器上的nginx,思路是使用干净服务器&#xff08;未安装过nginx&#xff09;通过编译安装Tengine&#xff0c;通过对./configure的配置&#xff0c;保证安装Tengi…

2024 - 超火的多模态深度学习公共数据纯生信5+思路分享

超火的多模态深度学习公共数据纯生信5思路分享 多模态深度学习具有处理和整合多种类型信息的优势&#xff0c;特别是在预测患者预后方面能够结合不同类型的生物医学数据&#xff0c;如临床数据、基因表达数据、蛋白质组学数据、成像数据等&#xff0c;进而提高预后预测的准确性…

深入解析大带宽服务器:性能优势与选择指南

一、大带宽服务器是什么&#xff1f; 大带宽服务器指的是具备高网络带宽能力的服务器&#xff0c;通常提供1Gbps、10Gbps甚至更高的网络连接能力。与普通带宽服务器相比&#xff0c;大带宽服务器能够在更短时间内传输大量数据&#xff0c;因此常用于高流量、高并发需求的场景&…

【MySQL】RedHat8安装mysql9.1

一、下载安装包 下载地址&#xff1a;MySQL Enterprise Edition Downloads | Oracle MySQL :: MySQL Community Downloads 安装包&#xff1a;mysql-enterprise-9.1.0_el8_x86_64_bundle.tar 官方 安装文档&#xff1a;MySQL Enterprise Edition Installation Guide 二、安装…

力扣(leetcode)题目总结——动态规划篇

leetcode 经典题分类 链表数组字符串哈希表二分法双指针滑动窗口递归/回溯动态规划二叉树辅助栈 本系列专栏&#xff1a;点击进入 leetcode题目分类 关注走一波 前言&#xff1a;本系列文章初衷是为了按类别整理出力扣&#xff08;leetcode&#xff09;最经典题目&#xff0c…

Vscode/Code-server无网环境安装通义灵码

Date: 2024-11-18 参考材料&#xff1a;https://help.aliyun.com/zh/lingma/user-guide/individual-edition-login-tongyi-lingma?spma2c4g.11186623.0.i0 1. 首先在vscode/code-server插件市场中安装通义插件&#xff0c;这步就不细说了。如果服务器没网&#xff0c;会问你要…

力扣周赛:第424场周赛

&#x1f468;‍&#x1f393;作者简介&#xff1a;爱好技术和算法的研究生 &#x1f30c;上期文章&#xff1a;力扣周赛&#xff1a;第422场周赛 &#x1f4da;订阅专栏&#xff1a;力扣周赛 希望文章对你们有所帮助 第一道题模拟题&#xff0c;第二道题经典拆分数组/线段树都…