【基础介绍】【OCR】

embedded/2024/10/11 4:54:22/

注:若有冒犯,请问候留言,会尽快删除。

文章目录

      • 注:若有冒犯,请问候留言,会尽快删除。
      • 背景介绍
      • OCR基本概念介绍
      • 基础实现算法
      • 深度学习方法
        • 1. CNN(卷积神经网络)
        • 2. RNN(循环神经网络) & LSTM(长短期记忆网络)
        • 3. Attention机制
      • 顶尖算法组合拳:CRNN + CTC
      • 未来发展:Transformer登场(Vision Transformer,ViT)
      • 总结
      • END

背景介绍

  • 知乎上看到一篇写的不错的文章,介绍了OCR 的基本概念和历史实现思路。
  • 在此进行笔记摘录,笔记性质,无意冒犯。
  • 原文链接:https://www.zhihu.com/question/366685668/answer/3608456631

OCR基本概念介绍

  • OCR(Optical Character Recognition),光学字符识别。
  • 目的:用计算机看图识字。
    • 这活儿听上去不难,小时候上课抄作业咱不也靠眼睛一扫一抄吗?不过计算机就得靠算法来做这个活儿。(原作者描述的很形象,哈哈)

基础实现算法

  • 最早的OCR算法基本都是基于图像处理的。(预处理+模板匹配)
    • 边缘检测、灰度处理。
    • 然后配上模式识别算法,比如模板匹配、特征提取啥的。
      • 你可以理解成就是把字形切成一块一块的,然后跟它数据库里存的样本对比,看看哪个像,哪个不像。
  • 这些传统的算法好处是速度快,资源占用少。
  • 但缺点也明显:一碰到字歪了、字模糊了、或者字形不规则了,它就开始抓瞎,结果基本上就是“一看就是字,但就是不认识”。所以这玩意儿在应付像咱们手机拍的这种歪歪扭扭的图像时,基本等于玩儿完。

深度学习方法

1. CNN(卷积神经网络)
  • CNN算是深度学习里的一员猛将了,大家都用它来做图像处理,OCR当然也不例外。CNN能干的活就是搞图像特征提取,它能自动从图像里找出那些有用的信息,比如边缘、线条、曲线啥的,再经过几层卷积,把这些信息逐层抽象,最后变成对字符的理解。
  • 就像你拍一张图,CNN能从图像的不同部分提取到不同的特征,然后把这些特征汇总,搞出个“这玩意儿是个字”的结论来。
2. RNN(循环神经网络) & LSTM(长短期记忆网络)
  • 光提取特征还不够,因为OCR不只是识别单个字符,还得考虑字符的顺序,这时候RNN就上场了。RNN擅长处理序列数据,比如文字、语音啥的,它能记住前面的信息,用来影响后面的识别。这就像你在看一段文字时,前后的字有关系嘛。
  • LSTM是RNN的加强版,主要解决RNN容易忘事儿的问题。用了LSTM后,网络就能记住更长的上下文信息,识别结果更准了。
3. Attention机制
  • 最后,还有个神器叫Attention机制,这玩意儿能让模型自动关注图像里那些重要的部分,比如一张图里哪儿有字,它就盯着哪儿看,不重要的地方一笔带过。这就像你在开会时,重点内容多看两眼,废话直接略过。
  • Attention机制的加入让OCR模型在处理复杂图像时,识别效率和准确度都有了质的飞跃。

顶尖算法组合拳:CRNN + CTC

  • 现在说说最顶尖的OCR算法,那肯定少不了CRNN(卷积循环神经网络)+ CTC(连接时序分类)。这套组合拳可是当前OCR领域的标杆,很多大厂的OCR引擎背后都是它。
  • CRNN结合了CNN和RNN的优点,前面用CNN提取图像特征,后面用RNN处理字符序列,简直就是天作之合。而CTC呢,专门处理序列对齐的问题,因为有时候识别结果跟输入长度对不上,这时候CTC就能帮助网络在不需要手工对齐的情况下,搞定文字识别。
    你用 OCR时,哪怕图片模糊不清或者字儿东倒西歪,这套算法组合依然能搞出个准儿来。

未来发展:Transformer登场(Vision Transformer,ViT)

  • 不过话说回来,科技是不断进步的。现在Transformer架构
  • (对,你没看错,就是那个火遍NLP的Transformer)也开始在OCR领域展露头角。比如Vision Transformer(ViT)就是用来处理图像的Transformer变种,这玩意儿比传统的CNN + RNN组合更牛,可以更好地处理复杂图像和长序列。
  • 未来几年,估计Transformer架构会成为OCR的新宠,反正现在大厂都在疯狂搞这套东西,谁家搞得快,搞得好,谁就能在OCR领域继续称王。

总结

  • 现在最顶尖的OCR算法,一定是深度学习的天下,像CRNN + CTC这种组合是目前的主流,但未来Transformer架构肯定会慢慢抢占市场。

END


http://www.ppmy.cn/embedded/125712.html

相关文章

openpnp - 吸嘴校正失败的opencv参数分析

文章目录 openpnp - 吸嘴校正失败的opencv参数分析概述笔记阶段验证 - N2吸嘴校验完NT1NT2 阶段验证 - 底部相机高级校验完NT1NT2 参数比对保存 “阶段验证 - N2吸嘴校验完” 的NT1/NT2图像重建参数检测环境NT1ok的3个参数值NT1err的3个参数值NT2ok的3个参数值NT2err的3个参数值…

React 高阶组件

高阶组件(Higher-Order Component,简称 HOC)是 React 中的一种设计模式,它是一个函数,接受一个组件作为参数,并返回一个新的组件。高阶组件可以用于抽象和重用组件之间的通用逻辑,从而提高代码的…

使用Conda管理python环境的指南

1. 准备 .yml 文件 确保你有一个定义了 Conda 环境的 .yml 文件。这个文件通常包括环境的依赖和配置设置。文件内容可能如下所示: name: myenv channels:- defaults dependencies:- python3.8- numpy- pandas- scipy- pip- pip:- torch- torchvision- torchaudio2…

SAP_FI_表ACDOCA取代的表

在 SAP S/4HANA 系统中,ACDOCA(通用分录表,Universal Journal)引入了全新的数据结构,取代了原先 ERP 系统中多个财务和控制模块的表。ACDOCA 通过一个单一表格整合了财务会计(FI)和管理会计&…

新电脑 Windows 系统初始配置

文章目录 前言1 前置配置2 安装软件2.1 通讯工具2.2 后端开发工具2.3 硬件开发工具2.4 前端开发工具2.4 其它工具 3 Windows 11 优化4 写在最后 前言 分区(个人习惯):1TB SSD 分为 2 个分区,一个 256GB 分区为系统盘,剩…

萱仔求职复习系列——2 Linux的常用方法(包含基础进阶高级操作)

由于最近接了一个笔试,发现笔试可能涉及到Linux,我准备临时抱佛脚一下赶紧复习一下Linux的用法哈哈。Linux 的基础用法包含文件系统操作、权限管理、网络配置、进程管理等基本命令;进阶操作包括网络调试、包管理、服务管理和用户管理等&#…

Hive数仓操作(十三)

一、JSON 数据 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,在不同的编程语言之间进行数据传输时非常通用和常用。JSON 格式简单直观,易于阅读和编写,并且可以被大多数编程语言轻松解析和生成。 1.…

大语言模型简介

大语言模型简介 今天我们来聊一聊大语言模型。大语言模型是一种能够处理和理解自然语言的深度学习模型,专门设计用来理解、生成和处理自然语言。 人工智能、机器学习和深度学习 想要理解什么是大语言模型,我们首先要弄清楚几个经常容易被搞混的概念&a…