OCR2.0--General OCR Theory

news/2024/9/19 8:19:45/ 标签: ocr, 人工智能

引领光学字符识别(OCR)的新篇章

引言:OCR技术进化的必要性

光学字符识别(OCR)是一项广泛应用的技术,它能够从图像中提取字符并将其转换为可编辑格式。虽然OCR-1.0在过去取得了广泛应用,但传统的系统在处理现代复杂任务方面遇到了很多挑战,包括文档、复杂图表以及乐谱等多种文本格式的处理。本文讨论了OCR技术的进化方向,重点介绍了通用OCR理论(General OCR Theory)以及新提出的GOT模型。

OCR-1.0的局限性

传统的OCR系统通常采用多模块流水线式的架构,包括元素检测、区域裁剪和字符识别。然而,这种模块化方式存在显著的缺陷,如局部最优问题、高维护成本以及缺乏通用性。传统OCR方法往往针对特定任务进行优化,可能适合处理文档OCR,但在场景文本或结构化数据任务中表现不佳,用户需要频繁切换模型。

OCR-2.0的愿景

随着智能光学字符处理需求的不断增长,OCR-2.0应运而生。新的理论强调一个统一的、端到端的模型,能够在同一个框架内处理多种字符形式,包括文本、图表、几何图形,甚至乐谱。为此,作者提出了通用光学字符识别理论(General Optical Character Recognition Theory, OCR-2.0)及其核心模型GOT(General Optical Text)。

GOT模型引入了高压缩率的编码器和长上下文解码器,使得GOT能够在多种OCR任务中表现出色。GOT模型具有端到端结构,计算成本低,且具备强大的通用性,能够处理英文和中文文本,并支持用户交互,如通过坐标或颜色进行区域识别。

GOT模型:统一的OCR解决方案

GOT采用了编码器-解码器架构,专为应对现代OCR任务而设计。编码器将输入图像压缩为一系列token,而解码器则将这些token转换为文本或结构化输出。GOT的编码器约有8000万参数,能够处理高分辨率输入(如整页文档),解码器则有5亿参数,支持长上下文场景,使得它在需要识别大量文本的文档处理任务中表现尤为出色。

该模型的高压缩比使其即便在消费级GPU上也能高效运行,相较传统OCR系统的高硬件要求,GOT无疑具有更大的优势。

Framework

在这里插入图片描述

GOT模型的整体设计包含了三个模块,分别是图像编码器、线性层和解码器。通过这三大模块的协同工作,GOT模型能够高效地处理各种OCR任务。

首先,预训练视觉编码器时,通过选择小型解码器和适当的数据输入,确保模型在提高效率的同时不会浪费GPU资源。在此过程中,系统通过学习常见的文本编码特征,提升了对常用字符的处理能力。

接着,模型进入第二阶段,将已经训练好的视觉编码器连接到新的更大解码器。这一步骤不仅仅是扩大模型容量,更重要的是通过增加多种数据类型如乐谱、数学公式和几何图形来丰富模型的应用范围,从而扩展了GOT的知识库。

最后,通过细粒度的数据和多页面合成数据,进一步增强了模型的泛化能力,使其在处理不同类型的OCR任务时表现更为出色。GOT能够处理区域提示OCR、超大图像OCR和批量PDF OCR,这意味着它不仅仅适用于传统的文本识别,还可以处理更加复杂和多样化的光学字符识别任务。

总的来说,GOT模型为OCR技术的发展提供了一个完整的、统一的解决方案,具备出色的多任务处理能力。

创新的训练策略

GOT的训练过程分为三个阶段:

  1. 编码器预训练:首先对GOT的视觉编码器进行预训练,处理场景文本和文档样式图像,通过全页文档和文本片段的组合,使编码器能够适应不同的输入格式。
  2. 联合训练:预训练完成后,编码器与更大的语言解码器连接,扩展GOT的OCR能力,以处理更复杂的字符,如数学公式和图表。
  3. 解码器后期训练:最后阶段是对解码器进行微调,增加对多页文档处理、细粒度区域OCR以及高分辨率图像的支持。

数据生成助力OCR-2.0

GOT成功的关键在于其合成数据的生成。在预训练阶段,使用了约500万对图像-文本数据,包括英文和中文的数据集。为进一步增强其能力,还生成了诸如数学公式、分子结构和几何图形等特定任务的合成数据。这些数据的加入使得GOT的OCR-2.0知识得到了显著扩展,确保其在各种应用中的通用性。

OCR-2.0的实际应用:性能与结果

GOT模型在多个OCR任务中表现优异:

  1. 文档OCR:GOT在中英文PDF文档OCR任务中表现突出,精确度超过了多款OCR模型,展现了出色的文档文本感知与识别能力。
  2. 场景文本OCR:在自然场景图像中,GOT也同样表现出色,进一步证明了其多任务处理能力。
  3. 格式化OCR:GOT能够将光学PDF图像转换为结构化的输出格式(如Markdown格式),特别适用于学术和技术文档。
  4. 细粒度OCR:GOT具备交互式OCR功能,用户可以指定感兴趣的区域进行文字提取,这在精确性方面表现优异。
  5. 通用OCR:除了文本,GOT还能够识别更加复杂的光学字符,如几何图形、乐谱,甚至是图表,展现了更广泛的适用性。

GOT模型在场景文本OCR任务中的表现

在这里插入图片描述

在表2中,展示了不同模型在场景文本OCR任务中的性能表现。这些模型包括了从UReader到GOT在内的多种最新OCR技术。表中的性能指标涵盖了编辑距离(Edit Distance)、F1分数、精度(Precision)、召回率(Recall)、BLEU分数和METEOR分数等。

性能对比:

  • GOT模型的优势:GOT模型以580M参数的规模,表现出优异的性能,尤其是在英文和中文的场景文本OCR任务中均获得了最高的F1分数(0.926 en,0.928 zh)。此外,GOT在精度和召回率方面也领先于其他模型,分别达到了0.934和0.927(en),以及0.914和0.954(zh)。
  • 编辑距离:GOT的编辑距离为0.112(en)和0.096(zh),远远优于其他较大的模型,如Qwen-VL-Max (>72B参数) 和InternVL-ChatV1.5 (26B参数)。
  • 综合评价:从BLEU和METEOR分数来看,GOT在中英文的表现也十分强劲,特别是在METEOR得分方面,GOT的分数分别为0.896(en)和0.928(zh),显示了极高的文本质量预测能力。

收集了400张自然场景图像,分别为200张中文图像和200张英文图像,作为场景文本OCR的基准数据集。该数据集中的所有真实标签均通过人工校正。在这些场景文本图像中,文本相对较短,因此使用字符级别的分割来计算各项指标。

从表2可以看出,GOT在处理自然场景图像时也表现出色,证明了其在大多数基本OCR任务(包括文档和场景文本)的卓越性能。特别是对于复杂的场景文本,GOT模型的表现无论是在英文还是中文任务中,均遥遥领先于其他较大规模的模型。

结论:迈向OCR的新纪元

通用OCR理论和GOT模型代表了OCR技术的一次重大飞跃。OCR-2.0抛弃了过去碎片化、任务特定的OCR模型,提出了一种更统一、高效、通用的字符识别方式。无论是处理密集的文档文本,还是复杂的结构化数据,GOT在各个领域的出色表现为未来OCR创新铺平了道路。

这款统一的模型在多个行业中展现出巨大的潜力,从学术研究到法律文件处理,GOT无疑是通向下一代OCR技术的关键一步。


http://www.ppmy.cn/news/1526915.html

相关文章

华为初级认证HCIA怎么样?

想在网络技术领域实现职业突破吗?华为HCIA初级认证是专为网络领域的新手与初学者设计的一项入门级认证。它旨在评估并确认个人对网络基本原理和技术知识的扎实掌握,是步入华为认证体系大门的基石。 一、华为HCIA 初级认证概述 华为初级认证网络工程师&am…

【ESP32】Arduino开发 | 中断矩阵+按键输入中断例程

对于中断矩阵的详细介绍会放在ESP-IDF开发文章中,跳转栏目目录可以找到对应文章。 1. API 1.1 绑定GPIO中断 attachInterrupt(uint8_t pin, voidFuncPtr handler, int mode); pin:管脚号;handler:中断处理函数;mode…

【百日算法计划】:每日一题,见证成长(014)

题目 奇偶链表 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起 示例: 输入: 2->1->3->5->6->4->7->NULL 输出: 2->3->6->7->1->5->4->NULL 思路 构建两个结果链表,分别存储奇偶节点 使用一个辅助变…

初识爬虫1

学习路线:爬虫基础知识-requests模块-数据提取-selenium-反爬与反反爬-MongoDB数据库-scrapy-appium。 对应视频链接(百度网盘):正在整理中 爬虫基础知识: 1.爬虫的概念 总结:模拟浏览器,发送请求,获取…

vue项目本地可以访问接口,浏览器输入接口可以访问数据,部署到服务器无法报接口404

需求变动,原本访问python的后端接口,现在新增Java的接口 新增的接口在服务器上一直404 ,本地正常,浏览器输入路径正常。 两个后端不同端口,前端配置了两个转发如下: dev: {// PathsassetsSubDirectory: st…

uni-app plus.runtime.arguments 获取参数

uni-app plus.runtime.arguments 获取参数 问题 在 app.vue 中 onShow 获取 应用启动的参数:plus.runtime.arguments 这个是可行的. APP打开以后, 进入到了后台 然后再恢复到前台 仍然会走一次 onShow的生命周期 然后获取到plus.runtime.arguments 中的参数&#x…

Linux:vim编辑技巧

命令模式 光标跳转 输入18,再输入G,可以跳转到18行。 复制、粘贴、删除 P是往上一行粘贴 小写u可以撤销 查找/撤销/保存 大写U可能失效,用CTRLr 末行模式 保存/退出/文件操作 字符串替换 开关参数的控制

CentOS入门宝典:从零到一构建你的Linux服务器帝国

目录 引言 一、CentOS简介与版本选择 1.1 CentOS是什么? 1.2 版本选择 二、安装CentOS 2.1 准备安装介质 2.2 安装过程 三、基础配置与优化 3.1 更新系统 3.2 配置防火墙 3.3 配置SELinux 3.4 系统监控与日志 四、网络配置与管理 4.1 配置静态IP 4.…

解决LineageOS提示网络受限问题

版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ 问题原因 由于 LineageOS 源码里默认是使用 google captive连接验证服务,所以国内会一直提示网络受限,但是实际上是可以访问网络的。 …

nginx安装及vue项目部署

安装及简单配置 在usr/local下建好nginx文件夹,下载好nginx-1.26.2.tar.gz压缩文件.安装编译工具及库文件 yum -y install make zlib zlib-devel gcc-c libtool openssl openssl-devel pcre-devel gcc、gcc-c # 主要用来进行编译相关使用 openssl、ope…

MAVEN如何导入项目

工作中经常需要导入他人的项目,那么如何导入呢? 1, 选择Maven面板,点 2,选中对应项目的pom.xml,双击即可 3,如果没有maven面板,可以选择view->Appearnce->Tool Window Bars…

C#使用TCP-S7协议读写西门子PLC(三)

接上篇 C#使用TCP-S7协议读写西门子PLC(二)-CSDN博客 这里我们进行封装读写西门子PLC的S7协议命令以及连接西门子PLC并两次握手 新建部分类文件SiemensS7ProtocolUtil.ReadWrite.cs 主要方法: 连接西门子PLC并发送两次握手。两次握手成功后,才真正连…

Invoke-Maldaptive:一款针对LDAP SearchFilter的安全分析工具

关于Invoke-Maldaptive MaLDAPtive 是一款针对LDAP SearchFilter的安全分析工具,旨在用于对LDAP SearchFilter 执行安全解析、混淆、反混淆和安全检测。 其基础是 100% 定制的 C# LDAP 解析器,该解析器处理标记化和语法树解析以及众多自定义属性&#x…

【HarmonyOS】Beta最新对外版本IDE下载和环境配置

【HarmonyOS】Beta最新对外版本IDE下载和环境配置 前言 目前华为HarmonyOS的系统版本已经从Develop Beta升级为Beta预览版,全面开放。再也不需要白名单限制,才能下载使用最新的IDE和预览最新的开放文档了。 IDE下载和安装 Beta IDE下载地址 1.根据你…

matlab在控制台输出某个变量的值

在 MATLAB 中,要在控制台(命令窗口)输出变量的值,可以使用几种不同的方法: 1. 使用 disp 函数 disp 函数用于显示变量的值,适用于简洁的输出。 % 创建一个变量 x 42;% 在控制台输出变量值 disp(x);2. 使…

transformer模型进行英译汉,汉译英

上面是在测试集上的表现 下面是在训练集上的表现 上面是在训练集上的评估效果 这是在测试集上的评估效果,模型是transformer模型,模型应该没问题,以上的是一个源序列没加结束符和加了结束符的情况。 transformer源序列做遮挡填充的自注意力,这就让编码器的输出中每个token的语…

Kamailio-超强dispatcher负载均衡模块

Kamailio 负载均衡的功能主要依靠 Dispatcher 模块完成,模块官方文档参看 为什么要引入负载均衡?如何使用? 引入和配置功能路由调用命令行指令 为什么要引入负载均衡? Q: 如果单台VOIP服务的性能不能满足业务需求了&#xff0…

【图像匹配】基于SURF算法的图像匹配,matlab实现

博主简介:matlab图像代码项目合作(扣扣:3249726188) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 本次案例是基于基于SURF算法的图像匹配,用matlab实现。 一、案例背景和算法介绍 前…

RabbitMQ(高阶使用)死信队列

文章内容是学习过程中的知识总结,如有纰漏,欢迎指正 文章目录 一、什么是死信队列? 二、死信队列使用场景 三、死信队列如何使用 四、打车超时处理 1.打车超时实现 以下是本篇文章正文内容 一、什么是死信队列? 先从概念解释上搞…

在grafana上配置显示全部node资源信息概览

在grafana上配置显示全部node资源信息概览,便于巡检 1,注册grafana官网账号:Grafana dashboards | Grafana Labs 2、寻找可以展示所有node资源概览信息的dashboard,并下载支持prometheus数据源的dashboard&#xff…