tesract ocr engine 中文文档

更新时间:2023-05-19 10:45:40 阅读: 评论:0

Tesract OCR(光学字符识别)引擎概述
一:Tesract OCR 简介
Tesract是惠普布里斯托实验室1985到1995年间开发的一个开源的小学四年级应用题OCR引擎,曾经在1995 UNLV精确度测试中名列前茅。但1996年后基本停止了开发。2005年,惠普将其对外开源2006由Google对Tesract进行改进、消除Bug、优化工作。项目地址为:/p/tesract-ocr
二: Tsract OCR 架构
Tesract的识别步骤大致如下:
1. 连通区域分析,检测出字符区域区域(轮廓外形),以及子轮廓。在此阶段轮廓线集成为块区域。
2. 由字符轮廓和块区域得出文本行,以及通过空格识别出单词。固定字宽文本通过字符单元分割出单个字符,而对百分号的文本(Proportional text)通过一定的间隔和模糊间隔就(fuzzy spaces)来分割;
3. 依次对每个单词进行分析,采用自适应分类器,分类器有学习能力,先分析的且满足条件的单词也作为训练样本,所以后面的字符(比如页尾)识别更准确;此时,页首的字符识别比较不准确,所以tesract会再次识别不太好的字符识别是其精度得到提高
4.最后,识别含糊不清的空格,及用其他方法,如由笔画高度(x-height),识别小写字母(small-cap)的文本。
三:文本行和单词的查找(Line and Word Finding
a. 假设页面布局分析(page layout analysis大致确定文本区域和文本尺寸一个简单百分位高度过滤器(percentile height filter)可以将跨行大写字母及纵向粘连一起的字符过滤掉,利用字符的高度信息,选取所有字符的中值高度,通过高度的比例调节去掉一些无关的块,比如标点符号,变音符和噪声等;
b. 对块区域的x坐标排序,利用坐标拟合直线(baline),拟合方法:中位数最小方差拟合(least median of squares fit)   
c. 进一步,拟合文本行的形状,利用四次多项式,将文本行看成螺线形,采用最小二乘法拟合
d. 检测出等距文本(fixed pitch text),对粘连的文本进行分割(chopping)
e. 对非等距字体如百分号,斜体等问题,利用中线、基准线之间的空白大小,来分割字符
有关函数:
1.PageIterator * tesract::TessBaAPI::AnalyLayout()页面结构分析
2.  Boxa * tesract::TessBaAPI::GetRegions(Pixa ** pixa)  获取页面结构分析结果
3. Boxa * tesract::TessBaAPI::GetConnectedComponents
(
Pixa ** 
pixa
)
连通域分析
4.
扔沙包游戏玩法
void tesract::TessBaAPI::GetBlockTextOrientations
(
int ** 
block_orientation,
bool ** 
vertical_writing 
)
获取每一块(block由页面结构分析获得)中的文字方向。
5.
Boxa * tesract::TessBaAPI::GetStrips
(
Pixa ** 
pixa,
int ** 
blockids 
)
获得strip区域
6.
腿痛是怎么回事
Boxa * tesract::TessBaAPI::GetTextlines
(
Pixa ** 
pixa,
int ** 
blockids 
)
孕早期腰酸获得文本行
7. Boxa * tesract::TessBaAPI::GetWords(Pixa ** pixa)  以Boxa格式获取文字。
8.
Boxa *tesract::TessBaAPI::GetComponentImages
(
PageIteratorLevel 
level,
bool 
text_only,
ps椭圆工具周末快乐祝福语Pixa ** 
pixa,
int ** 
blockids 
)
土豆泥
获得指定级别的元素(block,textline, word)
9.
void tesract::TessBaAPI::DeleteBlockList(BLOCK_LIST * block_list)
删除Block
四:单词的识别(word recognition
a. 分割粘连的字符,将凹进去的轮廓点作为备选分割点,分割后,进行识别,如果都失败,就认为字符破损不全,修补字符
b. 对破碎的字符,利用A*算法搜索最优的字符组合,直到达到满意的识别结果。(识别成功的基本是字符分类器可以很好的识别破碎的字符)
1.int tesract::TessBaAPI::Recognize(ETEXT_DESC * monitor)
识别 SetAndThresholdImage的图像, 产生Tesract 内部结构数据。
2.int tesract::TessBaAPI::RecognizeForChopTest(ETEXT_DESC * monitor)
识别 SetAndThresholdImageRecognize() or TesractRect().的图像,测试chopper.
3.
bool tesract::TessBaAPI::ProcessPages
(
const char * 
filename,
中考动员大会
const char * 
retry_config,
int 
timeout_millic,
STRING * 
text_out 
)
识别指定文件的所有页面
4.
bool tesract::TessBaAPI::ProcessPage
(
Pix * 
pix,
int 
page_index,
const char * 
filename,
const char * 
retry_config,
int 
timeout_millic,
STRING * 
text_out 
)
识别指定文件的单张页面
5.
int tesract::TessBaAPI::IsValidWord(const char * word)

本文发布于:2023-05-19 10:45:40,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/916734.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:字符   识别   利用   分割   文本   分析   区域
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图