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

第十七天计算机视觉之光学字符识别基础理论

目 录

  • 光学字符识别(OCR)
    • 一、基本理论
      • 1. 什么是OCR
        • 1)定义
        • 2)一般步骤
        • 3)OCR的难点
        • 4)OCR与目标检测的区别
        • 5)评估指标
        • 6)应用
      • 2. 常用数据集
        • 1)ICDAR
        • 2)CTW
        • 3)MSRA-TD

光学字符识别(OCR)

一、基本理论

1. 什么是OCR

1)定义

OCR (Optical Character Recognition,光学字符识别)是指对图片中的文字进行查找、提取、识别的一种技术,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程。

2)一般步骤

  • 文字检测:解决的问题是哪里有文字,文字的范围有多少
  • 文字识别:对定位好的文字区域进行识别,主要解决的问题是每个文字是什么,将图像中的文字区域进转化为字符信息。
    在这里插入图片描述
    在这里插入图片描述

3)OCR的难点

文本检测,尤其是复杂自然场景下的文本检测,非常具有挑战性,主要难点有:

  • 文本存在多种分布,文本排布形式多样;
  • 文本大小、长度不固定;
  • 文本存在多个方向;
  • 多种语言混合;
  • 精度要求极高,比如银行票据识别中,要求根本不允许有错。

4)OCR与目标检测的区别

  • 文本大多数以长矩形形式存在,即长宽比一般较大或较小,这与普通的目标检测中的物体不一样(这些长宽比较接近1)
  • 普通物体(比如猫)存在明显的闭合边缘轮廓,而文本没有
  • 文本中包含多个文字,而文字之间是有间隔的,如果检测做得不好,我们就会把每个字都当成文本行给框出来而非整行作为文本框,这与我们的期望不一样

5)评估指标

  • 拒识率:把应该识别的文字,当成不能识别的文字
  • 误识率:不应该作为文字的作为文字来识别
  • 识别速度:一般可接受范围在50~500ms
  • 稳定性:识别结果稳定性

6)应用

  • 文档/书籍扫描、车牌识别、证件识别、卡识别、票据识别
  • 教育场景文字识别(例如拍照搜题)
  • 文字识别笔
  • 旅游翻译APP
  • 盲人相机
  • 自动导航

2. 常用数据集

1)ICDAR

ICDAR是进行场景文本检测和识别(Scene Text Detection and Recognition)任务最知名和常用的数据集。ICDAR 2017 RCTW[1](Reading Chinest Text in the Wild),由Baoguang Shi等学者提出。RCTW主要是中文,共12263张图像,其中8034作为训练集,4229作为测试集。使用四边形框标注文本行。数据集绝大多数是相机拍的自然场景,一些是屏幕截图;包含了大多数场景,如室外街道、室内场景、手机截图等等。官网链接:http://rctw.vlrlab.net/dataset/

  • 分辨率。图像分辨率大小不等,小则300+,大则3000+;图像清晰程度不一,绝大多数背景和文字很清晰,极少数模糊

  • 场景

    • 街道场景:主要是建筑、标志牌、条幅等带有文字的图像,这类场景占据大多数
    • 截图:主要是网络上带有文字的图像截图、手机上带有文字的图像截图、带文字的表情包图像
    • 室内:主要是商场、墙壁等带有文字的图像
    • 证件类:主要是车牌照、驾驶证、身份证等带有文字的图像
  • 文本

    • 方向(multi-oriented):绝大多数是水平方向,垂直、倾斜均有,弯曲方向极少数
    • 大小(multi-scale):由于图像拍照远近,图像有近距离或远距离的,因此文本大小不等,有较多的长文
    • 质量:少数文本存在模糊、光照不均匀、低分辨率等情况
    • 字体:绝大多数字体为楷书,极少数艺术字,几乎没有手写字体
    • 遮挡:绝大多数文本没有遮挡,极少数有遮挡
  • 标注:数据集的标注保存在<image_nam>.txt文件中,其中格式如下:

    x1,y1,x2,y2,x3,y3,x4,y4,<识别难易程度>,<"文本">
    x1,y1,x2,y2,x3,y3,x4,y4,<识别难易程度>,<"文本">
    x1,y1,x2,y2,x3,y3,x4,y4,<识别难易程度>,<"文本">
    

    八个坐标点分别是:左上、右上、右下、左下。示例图片如下:
    在这里插入图片描述

2)CTW

CTW(Chinese Text in the Wild,自然场景下中文字符数据集)是腾讯和清华大学一起制作的数据集,包含32,285 张高分辨率图像,1,018,402 个字符实例,3,850 种字符种类,6 种属性(“occluded(被遮挡的)” | “bgcomplex(复杂背景)” | “distorted(扭曲)” | “raised(3D浮雕)” | “wordart(艺术字)” | "handwritten(手写体))

  • 数据集划分。训练集75%,验证集5%,分类测试集10%,检测测试集10%
  • 主页:https://ctwdataset.github.io/
  • 论文:A Large Chinese Text Dataset in the Wild
  • 示例图片
    在这里插入图片描述

3)MSRA-TD

MSRA-TD是一个小型、支持中英文的倾斜文本检测的数据集,包含500幅自然图像,使用袖珍相机从室内(办公室和商场)和室外(街道)场景中拍摄。室内图像主要是标志牌、门牌和警示牌,室外图像主要是复杂背景下的引导牌和广告牌。图像的分辨率从1296x864到1920x1280不等。

数据集分为两部分:训练集和测试集。训练集包含从原始数据集中随机选择的300幅图像,其余200幅图像构成测试集。该数据集中的所有图像都进行了完全注释。该数据集中的基本单位是文本行,而不是ICDAR数据集中使用的单词,因为很难根据间距将中文文本行划分为单个单词;即使对于英文文本行,在没有高级信息的情况下执行单词分割也是非常重要的。以下是示例图片与标注方式:
在这里插入图片描述

相关文章:

  • 混迹职场10多年的数据开发老鸟,居然被一个职场新人上了一课
  • PHP - AJAX 与 PHP
  • 微服务项目调用外部接口
  • 【Python】第八课 异常处理
  • Atomic Mail Sender 9.6.X 中文版Crack
  • 【重识云原生】第六章容器6.1.4节——Docker核心技术LXC
  • mysql—自增长和索引
  • 【C语言】带你深入剖析字符串相关知识(详细讲解+源码展示)
  • PostgreSQL 常用管理命令
  • Canny边缘检测数学原理及Python代码实现
  • 代码解析MixFormer: Mixing Features across Windows and Dimensions
  • 墨者-网络安全
  • Thread类的基本用法
  • Vue——方法与事件、 样式绑定、数据绑定、面试题、笔试题
  • DCDC Bootstrap自举电路
  • Fabric架构演变之路
  • jdbc就是这么简单
  • JS数组方法汇总
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • vue自定义指令实现v-tap插件
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 计算机在识别图像时“看到”了什么?
  • 批量截取pdf文件
  • 区块链分支循环
  • 数据可视化之 Sankey 桑基图的实现
  • 智能网联汽车信息安全
  • 最简单的无缝轮播
  • postgresql行列转换函数
  • 移动端高清、多屏适配方案
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​iOS安全加固方法及实现
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • #LLM入门|Prompt#3.3_存储_Memory
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (solr系列:一)使用tomcat部署solr服务
  • (附源码)springboot教学评价 毕业设计 641310
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (过滤器)Filter和(监听器)listener
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • ../depcomp: line 571: exec: g++: not found
  • .Net 6.0 处理跨域的方式
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .net 反编译_.net反编译的相关问题
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .net6+aspose.words导出word并转pdf
  • .NET设计模式(11):组合模式(Composite Pattern)
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • .NET中统一的存储过程调用方法(收藏)
  • ::
  • [ai笔记9] openAI Sora技术文档引用文献汇总
  • [C++]拼图游戏
  • [C++]四种方式求解最大子序列求和问题
  • [CSAWQual 2019]Web_Unagi ---不会编程的崽
  • [leetcode 数位计算]2520. 统计能整除数字的位数
  • [LeetCode]—Longest Palindromic Substring 最长回文子串