原文地址:http://blog.csdn.net/viewcode/article/details/7790065

正文:

原文: An Overview of the Tesseract OCR Engine

下载地址http://code.google.com/p/tesseract-ocr/wiki/Documentation

Tesseract的识别步骤大致如下:

1. 连通区域分析;

2. 检测出字符区域区域(轮廓外形),以及子轮廓;

3. 由字符轮廓,得出文本行,以及通过空格识别出单词,通过字符单元分割出单个字符,而对百分号的文本(Proportional text)通过fuzzy空格来分割为单词;

4. 每个单词进行分析,采用自适应分类器,分类器有学习能力,先分析的且满足条件的字母也作为训练样本,所以后面的字符(比如页尾)的字符识别更精确;此时,页首的字符识别比较吃亏,所以tesseract会对整页的识别不太好的字符,再次进行识别。

5.最后,识别含糊不清的空格,及用其他方法,如由笔画高度(x-height),识别小写字母的文本。

small-cap:小写字母?

利用第四个步骤的特性,对单个字符识别,选用能识别的比较好的字符放在页首,将待识别的字符放在页尾,是否能提高识别率?待测试...

-------------------

1. line and word finding

a. 假定文本区域能大致确定,将跨行大写字母及纵向粘连一起的字符过滤掉,可以利用字符的高度信息,选取所有字符的中值高度

b. 对字符的x坐标排序,利用坐标拟合直线,拟合方法:中位数最小方差拟合(least median of squares fit)

c. 进一步,拟合文本行的形状,利用四次多项式,将文本行看成螺线形,采用最小方差拟合

d. 检测出等距文本(fixed pitch text),对粘连的文本进行分割(chopping)

e. 对非等距字体如百分号,斜体等问题,利用中线、基准线之间的空白大小,来分割字符

Drop-caps: 段落的首个字母,大写且跨越两行。

vertical touching character:纵向粘连一起的字符。

Proportional text:含百分号的文本

2. word recognition

a. 分割粘连的字符,将凹进去的轮廓点作为备选分割点,分割后,进行识别,如果都失败,就认为字符破损不全,修补字符

b. 对破碎的字符,利用A*算法搜索最优的字符组合,直到达到满意的识别结果

3. Static Character Classifier

特征

a. 拓扑特征:与字体及大小无关,但问题是(引用文章看不到)?

b. 将字符近似为多边形作为特征:对破碎不连通的字符无效

c. 突破性方案:训练阶段的特征与识别的特征可以不尽相同。在训练阶段,将近似多边形作为特征,而在识别阶段,抽取字符的轮廓特征并归一化,然后将训练集中的原型特征再与之,进行多对一的方式匹配

The features extracted from the unknown:待识别字符的特征,3维数据(x, y坐标,角度),每个字符一般有50-100个特征

the prototype features:原型特征(训练集中的字符特征),4维数据(x, y坐标,角度,长度)一般有10-20个特征

分类,分为两个步骤:

a. 粗分,多个特征,将每个特征相近的字符列举出来

b. 细分,对相近的字符,用特征距离进行细分

训练数据

94个字符,8种大小,4种字体(正常,粗体,斜体,斜粗体),每种20个样本,共60160个样本。

4. 语法分析

训练集中有最常用的高频词,字典中的常用词,常用数字,常用大写、小写。

将分割出的、待识别的词与这些词进行比较计算,算法采用加权最小距离。

问题:不同的分割,会识别出不同的结果。两种结果都有可能,原因在于分割的不确定。用两个指标进行量化,一个是confidence,将未知字符到原型的归一化距离为指标;第二是将未知字符的轮廓长度(归一化后的)作为指标。

5. Adaptive Classifier 自适应分类器

由于静态分类器涉及到多种字体(generalizing to any kind of font),其区分相近字符、字符与非字符的能力被削弱。此时,由于每页文档内的字符的个数有限,利用静态分类器的结果可以训练出对字体更敏感的自适应分类器,可以提高分类能力。

tesseract不用模板分类器,但使用相同的特征和分类作为静态分类器(uses the same features and classifier as the static classifier. 不解?)。静态与自适应的区别,除了训练集外,还有自适应分类器会将一行字符的基线(baseline)/x-高度(小写字母x的高度) 归一化。 归一化后,很容易区分字母大小写及噪声;而静态分类器仅利用字符归一化的一阶矩确定位置,二阶矩确定字符大小。

将字符的距 归一化最大的好处是 去除 高宽比( aspect ratio )和字体笔画宽度(stroke width)的影响,且使上标、下标的区分简单。但需要额外的分类特征来区分字母大小写。

(两种归一化:基线/x行高的归一化,单个字符距的归一化)

tesseract还有学习能力,一般来说,整页的文章的识别率要比单个字符的识别率要高,而且速度要比单个字符识别(累加时间)要好。

----------------------

在tesseract源码里,tesseract默认选取的特征是 bmp,分类器是Convolutional Neural Net classifier,即可演化的神经网络分类器(每一个结果都作为神经网络的输入,能提供反馈)。\tesseract_src\cube\conv_net_classifier.h 是分类器的描述。

不仅如此,tesseract还提供了Hybrid Neural Net Char Classifier分类器,使用Hybrid特征数据。

\tesseract_src\cube\classifier_factory.cpp

\tesseract_src\ccmain\cube_reco_context.cpp

里包含了tesseract分类器的实现。

文章比较拗口,英语功底不够,后面慢慢理解修正。

转载于:https://www.cnblogs.com/Crysaty/p/6094602.html

[转]tesseract OCR Engine overview字符识别学习相关推荐

  1. An Overview of the Tesseract OCR Engine译文

    An Overview of the Tesseract OCR Engine译文 Abstract Tesseract OCR引擎以及UNLV OCR精度第四次年度测试中的HP Research P ...

  2. Tesseract OCR论文笔记及使用说明

    1.Tesseract介绍 Tesseract是惠普布里斯托实验室在1985到1995年间开发的一一个开源的OCR引擎,曾经在1995 UNLV精确度测试中名列前茅.但1996年后基本停止了开发.20 ...

  3. 《Adapting the Tesseract Open Source OCR Engine for Multilingual OCR》论文翻译

    本文是Tesseract在多语种方面OCR改进措施,刚好最近也在做相关工作,就顺便翻译了下.总的来说,看完之后对自己的相关工作也有一定的启发,感觉还不错,就在这分享一下.目前只翻译了下ocr的版面分析 ...

  4. Tesseract OCR简介(三)--安装及参数使用

    参考:AI-Tesseract-OCR简介_花熊的博客-CSDN博客_tesseract坐标 一.windows 1.1 Tesseract安装 适用于Tesseract 3.05和Tesseract ...

  5. Tesseract OCR简介(一)

    简介 Tesseract(/'tesərækt/) 这个词的意思是"超立方体",指的是几何学里的四维标准方体,又称"正八胞体".右图是一个正八胞体绕着两个四维空 ...

  6. tesseract OCR的多语言,多字体字符识别

    识别多种字体.多种语言的字符,在实际应用中是很常见的问题. 经过测试,及查看tesseract3.01的源码,tesseract 3.01版本是不支持多语言.多种字体OCR识别的. tesseract ...

  7. 用Tesseract OCR识别图片文字

    用tesseract ocr识别图片中的文字  准备 OCR与Tesseract介绍 将图片翻译成文字一般被称为光学文字识别(Optical Character Recognition,OCR).可以 ...

  8. jTessBoxEditor for Tesseract OCR

    jTessBoxEditor下载地址 http://vietocr.sourceforge.net/training.html 以下翻译自安装(解压)后的Readme文件 jTessBoxEditor ...

  9. Tesseract OCR——Windows 10 + CMake-GUI + Visual Studio 2019下编译和使用解决方案

    基本概念 Tesseract OCR:Tesseract-OCR 引擎最先由HP实验室于1985年开始研发,至1995年时已经成为OCR业内最准确的三款识别引擎之一.然而,HP不久便决定放弃OCR业务 ...

最新文章

  1. Android:四种启动模式分析
  2. 第十六 届全国大学生智能汽车竞赛 讯飞创意组 全国 选拔赛 竞赛规则
  3. keepalived高可用集群。
  4. DNNBrain:北师大团队出品,国内首款用于映射深层神经网络到大脑的统一工具箱...
  5. TRTC助力高并发、高可用实时音视频互动场景落地(内含开发福利)
  6. arma模型平稳性和可逆性的条件_时间序列预测模型ARIMA实现
  7. 安装使用ubuntu和opensuse
  8. c# 封装“度分秒”与弧度之间的转换 以及datagridview控件的应用
  9. JUnit5 假设示例
  10. 当下最实用计算机编程语言,目前最流行的计算机编程语言是什么?
  11. 精通反激电源变压器及电路设计-自己的笔记
  12. 最新!2022 LaTeX安装教程(Windows)
  13. DUMP-CX_SY_OPEN_SQL_DB-DBSQL_DUPLICATE_KEY_ERROR
  14. 大数据技术与应用解读及案例分析(PPT)
  15. 服装收银系统 服装收银 服装收银软件 收银软件 收银系统 好用的服装软件
  16. 学习如何使用css给数字加圆圈效果
  17. 12月大学计算机二级考试时间,2020年12月计算机二级考试报名时间及考试安排
  18. 那些C++牛人的博客
  19. 【非洲秃鹫优化算法】基于非洲秃鹫优化算法求解单目标优化问题(AVOA)含Matlab源码
  20. crontab 每天凌晨12点定时器_Linux下使用crontab实现mysql数据库自动备份

热门文章

  1. Android Json解析与总结
  2. mysql 禁用密码规则校验
  3. javac 编译异常总结
  4. 编译bluez-utils-3.36,死活找不到bluez D-bus的解决方法
  5. 30 | 套路篇:如何迅速分析出系统I/O的瓶颈在哪里?
  6. std::string 收缩到合适大小_如何选择合适的自动伸缩门尺寸-深圳自动伸缩门供应商...
  7. 问题 B: 小鱼的搭配购物(并查集+01背包)
  8. 云原生 DevOps,模型化应用交付能力很重要
  9. 前端如何正确使用中间件?
  10. 趋势发展之人工智能,入行要趁早