当前位置: 首页 > news >正文

一文理清OCR的前世今生

AI应用开发相关目录

本专栏包括AI应用开发相关内容分享,包括不限于AI算法部署实施细节、AI应用后端分析服务相关概念及开发技巧、AI应用后端应用服务相关概念及开发技巧、AI应用前端实现路径及开发技巧
适用于具备一定算法及Python使用基础的人群

  1. AI应用开发流程概述
  2. Visual Studio Code及Remote Development插件远程开发
  3. git开源项目的一些问题及镜像解决办法
  4. python实现UDP报文通信
  5. python实现日志生成及定期清理
  6. Linux终端命令Screen常见用法
  7. python实现redis数据存储
  8. python字符串转字典
  9. python实现文本向量化及文本相似度计算
  10. python对MySQL数据的常见使用
  11. 一文总结python的异常数据处理示例
  12. 基于selenium和bs4的通用数据采集技术(附代码)
  13. 基于python的知识图谱技术
  14. 一文理清python学习路径
  15. Linux、Git、Docker常用指令
  16. linux和windows系统下的python环境迁移
  17. linux下python服务定时(自)启动
  18. windows下基于python语言的TTS开发
  19. python opencv实现图像分割
  20. python使用API实现word文档翻译
  21. yolo-world:”目标检测届大模型“
  22. 爬虫进阶:多线程爬虫
  23. python使用modbustcp协议与PLC进行简单通信
  24. ChatTTS:开源语音合成项目
  25. sqlite性能考量及使用(附可视化操作软件)
  26. 拓扑数据的关键点识别算法
  27. python脚本将视频抽帧为图像数据集
  28. 图文RAG组件:360LayoutAnalysis中文论文及研报图像分析
  29. Ubuntu服务器的GitLab部署
  30. 无痛接入图像生成风格迁移能力:GAN生成对抗网络
  31. 一文理清OCR的前世今生

文章目录

  • AI应用开发相关目录
  • 简介
  • 技术架构
  • 技术变迁
    • 阶段1:基于图像处理和统计机器学习的OCR
      • 该阶段下,OCR特点:
    • 阶段2:基于深度学习的OCR
      • 阶段2下的OCR特点:
    • 阶段3:基于多模态大模型的OCR


简介

什么是OCR?

计算机文字识别,光学字符识别,英文全称Optical Charater Recognition,简称OCR.

是利用光学技术和计算机技术把印刷在或者写在图纸上的文字以文本形式提取出来,并转换成一种计算机能够接受、人又可以理解的格式的技术。OCR技术是实现文字快速录入的一项关键技术。在信息社会时代,每天会产生大量的票据、表单、证件数据,这些数据要电子化,需要利用OCR技术进行提取录入。

简而言之,OCR其本质是一种信息提取手段,也是一种工作提效方法。

技术架构

在这里插入图片描述
图像预处理:这一步骤主要是对输入的图像进行优化,以便更好地进行文字检测和识别。预处理可能包括以下步骤:
二值化:将图像转换为黑白两种颜色,便于后续处理。
降噪:去除图像中的噪声,如随机点、划痕等。
校正:对图像进行倾斜校正,使其文字行水平或垂直。
归一化:统一图像的尺寸和分辨率,便于后续算法处理。
文字检测:这一步骤是在预处理后的图像中定位文字区域。文字检测的方法有很多,包括:
基于连通区域的方法:通过分析图像中的连通区域来寻找文字。
基于特征的方法:利用文字的笔画、角点等特征进行检测。
基于深度学习的方法:使用卷积神经网络(CNN)等深度学习模型进行文字区域的检测。
文字识别:在检测到文字区域之后,需要对区域内的文字进行识别。文字识别的方法主要有两种:
基于规则的方法:通过分析文字的笔画结构和排列规则进行识别。
基于深度学习的方法:使用循环神经网络(RNN)、卷积神经网络(CNN)或结合这两种网络的模型进行文字识别。
后处理:在文字识别之后,可能需要进行一些后处理步骤来提高识别结果的准确性。后处理可能包括:
校对:利用语言模型和规则对识别结果进行校对和纠正。
格式化:将识别出的文本按照原文的格式进行排版。
结构化:提取文本中的关键信息,如标题、段落、表格等,并进行结构化处理。

技术变迁

OCR技术主要包括图像预处理、文字检测、文字识别以及后处理等几个关键环节。
而OCR技术的历史变迁,也集中于此,其中文字检测和文字识别两个环境变化最为明显。
在这里插入图片描述

阶段1:基于图像处理和统计机器学习的OCR

在这里插入图片描述
该阶段中,预处理手段包括:
图像低照度处理、图像倾斜校正、文字倾斜校正、文字扭曲校正等等内容,其解决方法包括图像二值化、最小面积矩形轮廓查询、霍夫线变换、比例缩放等技术。
在这里插入图片描述

文字检测则可以通过投影法实现分割实现。
在这里插入图片描述
文字识别则可通过图像匹配。

该阶段下,OCR特点:

1.文字提取时,面对不同的需求,需要专门设计不同的算法加以解决。

2.文字提取时,要完成需求,提取步骤较多,步骤间耦合性强,整体算法鲁棒性差。

3.文字提取时,其效果较差,精度低。

4.文字提取后,结果需进行大量后处理,如结果的拼接、格式化等。

5.算法具备高度可解释性。

阶段2:基于深度学习的OCR

其中预处理可通过GAN等生成对抗网络进行图像清晰度复原等工作。
在这里插入图片描述
在这里插入图片描述
文字检测和文字识别通用可以通过深度学习算法进行实现,不再依赖简单的图像学和统计算法。
其中最具代表性的是百度飞桨平台推出的OCR模型。
在这里插入图片描述
其模型功能涵盖了文字检测、方向检测、内容提取三项。
此外,飞桨针对具体场景,如数码管、表单、表格等数据更是研究了数码管专项识别、版面识别、文本超分等内容。

阶段2下的OCR特点:

1.文字提取时,采用深度学习技术完成文字检测和识别,依赖神经网络完成对图像特征的提取。

2.文字提取时,其效果较强,精度较高,具备一定的鲁棒性。

3.文字提取后,结果需进行大量后处理,如结果的拼接、格式化等。

4.算法具备高度一定的解释性。

阶段3:基于多模态大模型的OCR

该阶段内容我曾在往期博客中多次提到,本次进行总结。

https://blog.csdn.net/qq_43128256/article/details/139685113
https://blog.csdn.net/qq_43128256/article/details/138574623
https://blog.csdn.net/qq_43128256/article/details/138163078
https://blog.csdn.net/qq_43128256/article/details/138337768

传统OCR采用深度学习模型通过文字检测、方向检测、文字识别的步骤完成文字的抽取工作,在应用落地上的困难,从效果上存在一定缺陷,本案例如右图所示,以PaddleOCR开源模型为例,总结表述如下:
在这里插入图片描述

1.检测能力不足,如上图圆圈信息未能识别。
2.识别精度不足,如上图橙框内容,为误识内容。
3.冗余信息较多,如上图蓝框内容,50%无意义内容。
4.结果分布紊乱,如上图黑框内容,各参数无有效区分,且掺入了误识内容;此外结果整体与无意义内容错落分布,可用性较差。
5.智能化水平低,如上图绿框内容,传统模式无语义理解和逻辑推理能力,对于“广东电网”的广字无补全能力。

在这里插入图片描述
大模型OCR方案的主要创新点包括:
(1)灵活的OCR赋能分治方案:在不同资源场景下,采用不同的赋能方式。资源受限时,采用传统识别模式配合通用大语言模型能力实现信息的智能提取;否则,利用多模态大模型将信息识别、内容分析、格式整合等步骤一站式完成。
(2)多类型图像的Agent识别策略:LLM的引入Agent策略,可使模型面向不同类型图像时可自主决定使用不同的工具进行处理,这种端到端优化但有定制化优点的策略,可在拓充OCR泛用性的同时保持系统性能。
(3)复杂图像的鲁棒性识别:面对复杂的图像,传统OCR识别能力不足,识别错误率高,识别结果分布杂乱。LLM能够理解复杂的语言结构和图像语义,为LLM进行知识注入可有效提高OCR在复杂场景下的识别准确率。
(4)碎片化结果的格式化整合:传统OCR的识别结果往往是结果碎片化的,可用性低。LLM通过上下文理解和语义分析可改善OCR的后处理流程,提高文本的连贯性和可用性。
(5)多语言和多字体支持:LLM在多语言和多字体上的训练和应用,为OCR技术提供了更广泛的语言和字体支持,有助于实现更广泛的应用场景,具备更强的实用性。
(6)交互式OCR:LLM的生成能力可以用于提供交互式OCR结果,提高用户体验。

相关文章:

  • 【千帆AppBuilder】你有一封邮件待查收|未来的我,你好吗?欢迎体验AI应用《未来信使》
  • 查看服务器端口,如何查看服务器端口是多少并修改
  • 深度解析“科技信贷”:构建科技支行的五维模型
  • 【AI-5】Pointnet
  • 【BFS算法】广度搜索·由起点开始逐层向周围扩散求得最短路径(算法框架+题目)
  • Boost 网络库
  • 【植物大战僵尸杂交版】最新版2.1下载链接
  • 线程池的艺术:深度解析Java多线程并发性能的优化之道
  • 【AIGC】MetaGPT原理以及应用
  • 创建activity中的context
  • 什么是SLA
  • SAP-ABAP-03-课上代码
  • 【车载开发系列】汽车嵌入式开发常用工具介绍
  • 功能测试 之 单模块测试----抢购模块
  • [BFS广搜]迷阵
  • avalon2.2的VM生成过程
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • in typeof instanceof ===这些运算符有什么作用
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • Java-详解HashMap
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 编写高质量JavaScript代码之并发
  • 从tcpdump抓包看TCP/IP协议
  • 技术:超级实用的电脑小技巧
  • 前端面试题总结
  • 前端之React实战:创建跨平台的项目架构
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 微信开源mars源码分析1—上层samples分析
  • 阿里云API、SDK和CLI应用实践方案
  • ​马来语翻译中文去哪比较好?
  • !!Dom4j 学习笔记
  • #laravel部署安装报错loadFactoriesFrom是undefined method #
  • #WEB前端(HTML属性)
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (1)无线电失控保护(二)
  • (11)MSP430F5529 定时器B
  • (Windows环境)FFMPEG编译,包含编译x264以及x265
  • (二)斐波那契Fabonacci函数
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (利用IDEA+Maven)定制属于自己的jar包
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • (最新)华为 2024 届秋招-硬件技术工程师-单板硬件开发—机试题—(共12套)(每套四十题)
  • ***检测工具之RKHunter AIDE
  • .NET 依赖注入和配置系统
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • .NET中 MVC 工厂模式浅析
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • .php文件都打不开,打不开php文件怎么办
  • [20161101]rman备份与数据文件变化7.txt
  • [AX]AX2012开发新特性-禁止表或者表字段
  • [BJDCTF2020]The mystery of ip1