关键词不能为空

当前您在: 主页 > 英语 >

tesseract ocr engine 中文文档

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-08 07:50
tags:

-

2021年2月8日发(作者:rather的用法)


TesseractOCR


(光学字符识别)引擎概述

< br>


一:


TesseractOCR


简介



Tesseract


是惠普布 里斯托实验室在


1985



1995< /p>


年间开发的一个开源的


OCR


引擎,


曾经在


1995 UNLV


精确度测试中名 列前茅。但


1996


年后基本停止了开发。

2005


年,惠普


将其对外开源,


2006



Google


< p>
Tesseract


进行改进、消除


Bug


、优化工作。项目地址


为:


/p/tesse ract-ocr


二:


TsseractOCR


架构



Tesseract

< p>
的识别步骤大致如下:



1.

< br>连通区域分析


,


检测出字符区域区域

(轮廓外形)


,


以及子轮廓。在此阶段轮廓线集成


为块区域。



2.


由 字符轮廓和块区域得出文本行,以及通过空格识别出单词。固定字宽文本通过字


符单元分 割出单个字符,而对百分号的文本(


Proportional text


)通过一定的间隔和模糊间


隔就(


fuzzy spaces


)来分割;



3.


依次对每个单词进行分析,采用自适应分类器,分类器有学习能力,先分析的且满

< p>
足条件的单词也作为训练样本,所以后面的字符(比如页尾)识别更准确;此时,页首的字


符识别比较不准确,所以


tesseract


会 再次对识别不太好的字符识别是其精度得到提高。



4.


最后,识别含糊不清的空格,及用其他方法,如由笔画高度(


x-he ight


),识别小写


字母(


smal l-cap


)的文本。






三:文本行和单词的查找(


Line and Word Finding




a.


假设页面布局分析(


page layout analysi s


)大致确定了文本区域和文本尺寸,一个


简单百分位高度过滤 器(


percentile height filter


)可 以将跨行大写字母及纵向粘连一起的字


符过滤掉,


利用字符的高 度信息,


选取所有字符的中值高度,


通过高度的比例调节去掉一 些


无关的块,比如标点符号,变音符和噪声等;



b.


对块区域的


x

< br>坐标排序,利用坐标拟合直线(


baseline


),拟 合方法:中位数最小


方差拟合(


least median of squares fit




c.


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


乘法拟合



d.


检测出等距文本


(fixed pitch text)


,对粘连的文本进行分割


(chopping)


e.


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


字符




有关函数:



1




PageIterator * tesseract::TessBaseAPI:: AnalyseLayout()


页面结构分析



2.



Boxa * tesseract::TessBaseAPI::GetRegions(Pixa ** pixa)


获取页面结构分析结果



3. Boxa * tesseract::TessBaseAPI::GetConnectedComponents ( Pixa ** pixa )


连通域分析



4.


void tesseract::TessBaseAPI::GetBlockTextOrientations ( int **


block_orientation,


bool ** vertical_writing


)


获取每一块(


block


由页面结构分 析获得)中的文字方向。



5.


Boxa * tesseract::TessBaseAPI::GetStrips ( Pixa ** pixa,


int **


blockids


)


6.


Boxa * tesseract::TessBaseAPI::GetTextlines ( Pixa ** pixa,


int **


blockids


)



7. Boxa * tesseract::TessBaseAPI::GetWords(Pixa ** pixa)



Boxa


格式获取文字。


8.



获得文本行



获得

strip


区域





Boxa*tesseract::TessBaseAPI ::GetComponentImages


(


PageIteratorLevel



level


,


bool


Pixa **


int **


)


获得指定级别的元素(


block



textline, word





text_only


,


pixa


,


blockids




9.


voidtesseract::TessBaseAP I::DeleteBlockList(BLOCK_LIST * block_list)


删除


Block


四:单词的识别(


word recognition




a. < /p>


分割粘连的字符,将凹进去的轮廓点作为备选分割点,分割后,进行识别,如果都


失败,就认为字符破损不全,修补字符



b.


对破碎的字符,利用


A*


算法搜索最优 的字符组合,直到达到满意的识别结果。(识


别成功的基本是字符分类器可以很好的识别 破碎的字符)




1.


inttesseract::TessBaseAPI::Recognize(ETEXT_DE SC * monitor)


识别



来自


SetAndThresholdImage


的图像,产生


Tesseract


内部结构数据。



2.


int tesseract::TessBaseAP I::RecognizeForChopTest(


ETEXT_DESC

< p>
* monitor)


识别



来自


SetAndThresholdImage


,< /p>


Recognize() or TesseractRect().

的图像,测试


chopper.


3.

< br>booltesseract::TessBaseAPI::ProcessPages ( const char *


filename,


const char *


retry_config,


int


timeout_millisec,

-


-


-


-


-


-


-


-



本文更新与2021-02-08 07:50,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/613110.html

tesseract ocr engine 中文文档的相关文章