怎么样用tesshttp t.cn ractdz5训练新字库

下次自动登录
现在的位置:
& 综合 & 正文
tesseract训练字库
tesseract 训练字库先做两个准备工作
1.下载工具cowboxer
http://download.csdn.net/detail/cxf5519
2. 下载tesseract-ocr.exe
/p/tesseract-ocr/downloads/list
3. 安装tessract-ocr
我直接安装在了D:\\下面
现在可以开始了,训练步骤包括以下几步:
1. 识别图片
打开cmd,cd 至D:\\tesseract\\下面,拷贝一张图片1.tif至该目录下,执行下面的命令
1.tif 1 –l chi_sim batch.nochopmakebox
2.在cowbox中调整方框大小
在D:\\tesseract\\下会生成一个文件1.box,用cowboxer工具打开1.box,会显示如下图的内容,纠正不正确的文字框,如果是中文,先输入拼音,所有修改完之后,保存。然后用记事本打开1.box,再改成汉字。
3. 训练字库,在这里是对两张图片进行了处理,也就是说这个工具可以把多张图片的字训练至一个字库中,过程如下:
1 nobatch box.train
2 nobatch box.train
training\unicharset_extractor 1.box 2.box
training\mftraining -U unicharset -O test.unicharset 1.tr 2.tr
training\cntraining
rename normproto test.normproto
rename Microfeat test.Microfeat
rename inttemp test.inttemp
rename pffmtable test.pffmtable
..\training\combine_tessdata test.
最后出现如下的结果,第 2,4,5,6,行出现非-1数字时说明生成了新的字库。
&&&&推荐文章:
【上篇】【下篇】Tesseract3.02中文字库训练_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Tesseract3.02中文字库训练
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢转载自:http://blog.csdn.net/why/article/details/
首先体验一下tesseract的强大功能,先安装 tesseract_ocr ,下载地址为/p/tesseract-ocr/,请务必下载3.0.1版本,我前面下的最新3.0.2版本,生成字符特征命令不能通过,最后勉强解决了,生成的字典识别出来的都是空字符
安装完成之后 看下根目录
tessdata文件夹主要存放字典文件,只要把字典文件放进去,就可以用tesseract 识别相关语言的文字
现在先来识别一张图片
把他放入任意一个文件夹,cmd 命令cd到图片放置的目录,然后执行
可以看到文件夹下 生成了一个txt文本,发现识别的效果并不是很理想。为啥呢,因为我所用的这个图片中的字有所变形,我们的图片和 tesseract 存在的 字做匹配,找相近的,但是字典中没有这种变形的字体,自然识别容易出错,为了
提高识别率,所以我们需要 训练一套 字体来提高识别率
训练 字库还需要一个工具jTessBoxEditor,下载地址为&http://sourceforge/projects/vietocr/files/jTessBoxEditor/
现在我们来实战一下,首先要生成一个 .tif 的图片集,我们使用&jTessBoxEditor 来合并多张 格式为tif的图片
1、打开&jTessBoxEditor,选择tools-&merge tif ,选择 tif图片,生成一个 格式为tif的 图片集
2、我生成一个名为 why4.tif 的图片集, 进入 cd进入 why4.tif 所在的目录,生成对应的 .box 文件
这个文件是通过 tesseract 识别出来的,标示了图片集中 文字的位置,大小,识别后的字符结果。
3、调整,因为 tesseract 识别的不准确,所以我们用&jTessBoxEditor来调整识别文字的位置、结果。
用&jTessBoxEditor打开生成的图片集why4.tif ,注意 why4.tif 对应的box文件一定要和他处于同一个文件夹下(请保持文件名),否则,用jTessBoxEditor打开没有
位置、识别结果等信息,然后就可以调整了,调整完之后保存
4、生成.tr文件
5、计算字符集,从生成的 box文件中提取&
6、生成字体特征文件,现在文件夹下新建任意文件名的 特征文件,里面的内容格式为&
fontname为字体名称,保持和 图片集文件 .tif 和.box文件的前缀名一致 ,italic& 、&bold& 、&fixed& 、&serif&、 &fraktur&的取值为1或0,表示字体是否具有这些属性。
例如我新建了一个 名为 font,内容 为
7 、聚集tesseract 识别的训练文件
执行完这一步之后发现文件夹下生产了许多文件,把unicharset,
inttemp, normproto, pfftable这几个文件加上前缀 why4.
8、最后一步,合并相关文件,生成字典文件
好了,至此字典文件就生产了,我们把生成的字典文件why4.traineddata放入到 tesseract_ocr 根目录下的 tessdata文件夹下
开始使用我们训练过得字体库
随便找一张图片一下
可以看到,效果好了许多
说了这么多,生成一个字库还是挺麻烦的,尤其是调整,看得我眼睛都花了,心情烦躁,好不容易做好了一个字库,但是不够 ,还要多添加一些训练内容进去该怎么办呢,经过我的研究,终于找到了3.0.1版本合并字库的方法
首先,需要 生成的字符集.tif文件,位置文件 .box ,只要有这两个文件在,就可以合并字典
好了,我现在有三个 需要合并的字典 why3 why4 why5,他他们的名字修改为 name.num 的形式,分别改为 why.3 why.4 why.5
1、先生成相对应的 .tr 文件
2、从所有文件中提取字符
3、生成字体特征文件
新建的font文件中 把所有box文件对应的 字体特征都加进去
4 、聚集所有.tr 文件
6 、重命名文件,我把unicharset, inttemp, normproto, pfftable
这几个文件加了前缀why.
7、合并所有文件 生成一个大的字库文件
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:336830次
积分:4730
积分:4730
排名:第6435名
原创:56篇
转载:547篇
评论:19条
(2)(4)(2)(10)(15)(8)(7)(19)(17)(16)(20)(53)(66)(25)(9)(12)(23)(7)(10)(18)(13)(7)(6)(5)(33)(24)(16)(12)(25)(18)(4)(18)(7)(14)(21)(20)(17)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'[转]Tesseract 3.02中文字库训练
我的图书馆
[转]Tesseract 3.02中文字库训练
下载chi_sim.traindata字库下载tesseract-ocr-setup-3.02.02.exe&下载地址:/p/tesseract-ocr/downloads/list下载jTessBoxEditor用于修改box文件下载地址:http://download.csdn.net/detail/a96893 里面自带java运行库,安装后 然后启动命令行 java -jar jTessBoxEditor.jar即可打开为了方便 tif文面命名格式[lang].[fontname].exp[num].tiflang是语言 fontname是字体&比如我们要训练自定义字库 image 字体名MyFont那么我们把tif文件重命名 image.MyFont.exp0.tif下面开始训练字库:1、tesseract image.MyFont.exp0.tif image.MyFont.exp0 -l chi_sim batch.nochop makebox该步骤会生成一个image.MyFont.exp0.box文件把tif文件和box文件放在同一目录,用jTessBoxEditor.jar打开tif文件,然后根据实际情况修改box文件&2、tesseract image.MyFont.exp0.tif image.MyFont.exp0 nobatch box.train该步骤生成一个image.MyFont.exp0.tr文件3、unicharset_extractor image.MyFont.exp0.box该步骤生成一个unicharset文件4、新建一个font_properties文件里面内容写入MyFont 0 0 0 0 0 表示默认普通字体5、运行命令shapeclustering -F font_properties -U unicharset image.MyFont.exp0.trmftraining -F font_properties -U unicharset -O image.unicharset image.MyFont.exp0.trcntraining image.MyFont.exp0.tr6、把目录下的unicharset、inttemp、pffmtable、shapetable、normproto这五个文件前面都加上image.7、执行combine_tessdata image.然后把image.traineddata放到tessdata目录8、用新的字库对图片进行分析tesseract test.tif output -l image
TA的最新馆藏[转]&
喜欢该文的人也喜欢tesseract-ocr 第四课 如何训练新语言
版权所有,转载请注明出处,并标明链接
作者:jolly wang
tesseract 3.0x是完全可训练的。该页描述了训练过程,提供了一些指南来应用到各语言中。
背景和权限
tesseract原先只为English文本而设计。后来经过努力,可以处理其它语言,以及 utf8字符。tesseract 3.0可以处理任何unicode字符,但只限于已经成功的字符集。
tesseract 3.01 新增了 从上到下 阅读顺序的语言, tesseract 3.02 添加了希伯来语 Hebrew (从右到左)。tesseract当前只有一个辅助引擎cube来处理阿拉伯语(Arabic)。(在3.0+中新增)
tesseract在一些大语种语言中进展缓慢,比如中文,但是目前可以运行。
任何语言都有不同的标点和数字,很难被只认ASCII标点和数字的 硬编码算法识别 。该问题将在3.0x中解决。x&=2
4.1:需要的数据
为了训练另一种语言,你可以在tessdata子目录下创建一些数据文件,接着使用combine_tessdata将它们融合进一个文件,命名规范为: languagecode.file_name。语言码可以遵从ISO 639-3标准。3.00使用的English文件有:
tessdata/eng.config
tessdata/eng.unicharset
tessdata/eng.unicharambigs
tessdata/eng.inttemp
tessdata/eng.pffmtable
tessdata/eng.normproto
tessdata/eng.punc-dawg
tessdata/eng.word-dawg
tessdata/eng.number-dawg
tessdata/eng.freq-dawg
接着融合成一个文件:
tessdata/eng.traineddata
然后提供另一个独立文件:
tessdata/eng.user-words
traineddata文件通常是一个输入文件的连接,带有目录表,并包含了已知文件类型的偏移。在源代码中见ccutil/tessdatamanager.h,可以看到当前接受的文件名列表。注意, traineddata 文件不同于3.00版本以上的列表,并且很可能在以后版本中变动。
4.2 准备文本输入文件
文本输入文件( lang.config, lang.unicharambigs, font_properties, box files, wordlists for dictionaries.. )需要满足以下需求:
ASCII 或者 utf8 编码,没有
uinx行结尾符('\n')
文件尾空行(否则:将得到错误信息:last_char == '\n':Error:Assert failed..)
4.2.1 How little can you get away with?
你必须使用下面的过程来创建 unicharset, inttemp, normproto, pfftable。如果你只尝试识别一个受限范围的字体(例如:单一字体),那么一个简单的训练页就足够了。在你的应用程序中不再需要提供 另外的文件 ,但是必须更精确。老的DangAmbigs已经被替换成 unicharambigs。
4.3 训练过程
一些过程不可避免是人工的。尽可能提供自动化帮助。在将来,会出来许多自动化工具,但需要更复杂的install/build过程。以下的工具是自带的:
4.3.1 生成训练图像
第一步是决定使用完整的字符集,准备一个包含了许多样本集的文本或词处理文件。重点要注意的是,当创建一个训练文件时:
确保每个字符的最小数目的样本。10很好,但5只对少数字符有效。
常用字符的样本应更多:至少20个。
不要将所有非字母组合在一起。让文件更实际化。例如,“The quick brown fox jumps over the lazy dog.
!@#$%^&(),.{}&&/?”,这个就很糟糕。而这个则更好:“The (quick) brown {fox} jumps! over the $3,456.78&lazy& #90 dog & duck/goose, as 12.5% of E-mail from
is spam?” ,这个给出了文本行查找码,来获取特定字符的基标语义。
当打印时,文本空格绝对安全。。。。。。
训练数据应该按字体分组。。。。。
没必要训练多个size的文本。。。。。
不要在一个image文件混合多种字体(确切的说:在单个.tr文件中),它将造成丢弃一些特征,导致识别错误
下载页的boxtiff文件将帮助你如何格式化你的训练数据。
接着,打印和扫描(使用一些电子渲染方法)来创建你的训练页的image。直到32个训练文件都被使用。它交创建一个混合的字体和样式,包含italic和bold。
注意:由于间距,训练真实的image是相当困难的,这个将在未来改善。对于现在,更容易打印和扫描你自己的训练文本。
你也可以保存你的文本成为一个utf8文本文件,用来在下一步中,将代码插入到另一个文件。
对于大量训练数据的识别,对于多数字体, 限制 32个图像。每个字体都应被放到单个 多页tiff(只有你正使用libtiff),和boxfile中,可以通过修改指定页数来为每个字符做协调。。。。。
4.3.2 制作box file
接下来,tesseract需要一个‘box’文件来定位每个训练图像。box文件是一个文本文件,它在每行列出了训练图像的字符,以及围绕 bounding box 的坐标。tesseract 3.0有一个模式,可以用来输出一个需要格式的文本文件,但是如果字符集不同于当前训练,它将自然地具有不对的文本。因此,这里的关键是,需要人工编辑正确的文本进去。
命令行下运行tesseract你的训练图片:
tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop makebox
tesseract eng.timesitalic.exp0.tif eng.timesitalic.exp0 batch.nochop makebox
接下来是最困难的部分。你需要编辑文件
[lang].[fontname].exp[num].box ,并为每个字符放至utf8编码在文件是每行起始处。例如:发行版包含了一个图像:eurotext.tif. 运行以上的命令来生成一个文本文件,可 以包含下面的行:
s 734 494 751 519 0 p 753 486 776 518 0 r 779 494 796 518 0 i 799 494 810 527 0 n 814 494 837 518 0 g 839 485 862 518 0 t 865 492 878 521 0 u 101 453 122 484 0 b 126 453 146 486 0 e 149 452 168 477 0 r 172 453 187 476 0 d 211 451 232 484 0 e 236 451 255 475 0 n 259 452 281 475 0
因为 Tesseract
以英文模式运行 ,它不能正确识别元音(umlaut)。这种字符需要使用一个合适的编辑器来纠正。可以使用能识别utf8的编辑器。HTML 编辑器是个不错的选择。。。。
理论上,boxfile中的每行都表示了你训练文件中的每个字符,如果你需要水平分隔字符,比如双逗号 ,, 它将具有两个box需要合并。
示例: lines 116-129:
D 101 504 131 535 0 e 135 502 154 528 0 r 158 503 173 526 0 , 197 498 206 510 0 , 206 497 214 509 0 s 220 501 236 526 0 c 239 501 258 525 0 h 262 502 284 534 0 n 288 501 310 525 0 e 313 500 332 524 0 l 336 501 347 534 0 l 352 500 363 532 0 e 367 499 386 524 0 ” 389 520 407 532 0
你将看到, 最下面的双引号字符被表达成两个单一的逗号。bounding box必须按以下方式合成:
第一个数(左)采用两行中最小的(197)
第二个数(下)采用两行中最小的(496)
第三个数(右)采用两行中最大的(214)
第四个数(上)采用两行中最大的(508)
于是,给出:
D 101 504 131 535 0 e 135 502 154 528 0 r 158 503 173 526 0 ? 197 497 214 510 0 s 220 501 236 526 0 c 239 501 258 525 0 h 262 502 284 534 0 n 288 501 310 525 0 e 313 500 332 524 0 l 336 501 347 534 0 l 352 500 363 532 0 e 367 499 386 524 0 ” 389 520 407 532 0
如果你不能成功地在训练图像中将字符分隔开,其中一些会被圈进另一个box中。在一些情况下,你可以使用更好的空格和起点,重新标注图像。(比如:2.04,有24个字节来描述一个字符的限制,这将允许你 根据你的unicode字符集, 在6到24个unicode间来描述这个字符。如果达到该限制,请编写一个issue描述你的情况)
注意:在box 文件中的坐标系统,在左下边有(0,0)。
如果你的编辑器支持utf8,该过程将更简单,每个utf8字符都最高支持4字节来编写它,使用dumb功能可以查看所有字节。
一些支持编辑box文件的可视化工具:
4.3.3 自引导一个新的字符集
如果你尝试一个新的字符集,将它们使用单字体来获取一个新的box文件会很合适,运行其余的训练过程,接着使用tesseract来生成其它的box文件:
tesseract fontfile.tif fontfile -l yournewlanguage batch.nochop makebox
这将使得第二个box文件更容易生成,一种较好的选择是,tesseract将识别出大多数正确文本。你可以总是重复这个过程,来添加更多的字体到训练集中(比如:命令行工具 mfTraining 和 cnTraining)来制作它们,但是注意,还没有增量模式来允许你添加新的训练数据到存在的字符集中。这意味着每次你运行mfTraining和cnTraing工具,你可以从tr文件中制作新的数据文件,这些工具不会将采用已经存在的intproto/pffmtable/normproto并将它们直接添加进去。
4.3.4 全新提供Tif/Box pair!!
Tif/Box 对在新的下载页提供。(注意:tiff文件采用G4压缩以便节省空间,因此,你必须首先具有libtiff或者未压缩的数据)。你可以遵从以下过程,来为你的语言生成更好的训练数据或添加不同的字符形状到已经存在的语言中:
过滤box文件,只保持你想要的字符。
运行tesseract来训练。
对于每种字体,从多个语言中cat出.tr文件,来获取你想要的字符休,并从你有的字体或字符中添加.tr文件
以相同的方式cat出已经过滤的box文件到.tr文件中,以便在unicharset_extractor中处理
运行训练过程的其它步骤
注意!这听起来并不简单!cntraining和mftraining只能最多采用32个.tr文件,因此,对于相同的字体,你必须从多种语言中,以字体独立的方式,将所有的文件 cat到一起来让32种语言结合在一起。cntraining/mftraining以及unicharset_extractor命令行工具必须各自由给定的.tr和.box文件,以相同的顺序,为不同的字体进行不同的过滤。可以提供一个程序来完成以上的事情,并在字符集表中挑出相同字符集。这样会将事情更简单些。
4.3.5 运行 tesseract进行训练
对于你的训练图像,box文件对,以训练模式运行tesseract:
tesseract fontfile.tif junk nobatch box.train
tesseract fontfile.tif junk nobatch box.train.stderr
在版本2.03及以下,第一种方式发送所有错误给 tesseract.log(在所有平台上)。而使用box.train.stderr,将发送错误到stderr 上。
注意,box文件名必须匹配tif文件名,包含路径,否则tesseract将找不到它。这一步的输出是fontfile.tr,它包含了训练页的每个字符的特征。注意,输出名从输入的图像名中派生出来,而非正常的输出名,这里的junk. junk.txt将被使用单个不带文本的新行来写。
非常重要 在apply_box中确认输出错误。如果报告了FATALITIES,没必要继续训练过程, 直到你你修正box文件。新的box.train.stderr配置文件使得它很选择输出的位置。一个FATALITY通常标明这一步错误。如果该坐标错误,那么关注的特征图像也将错误。如果一个字符没有工作样本不能被识别,那么生成的inttemp文件将不会茶杯unicharset文件,接着tesseract 将中止。
另一个错误:box file format error on line n.。。。。。。。
没必要编辑fontfile.tr文件的内容。里面的字体名不必设置。出于好奇,以下是该格式的信息:
Every character in the box file has a corresponding set of entries in the .tr file (in order) like this UnknownFont &utf8 code(s)& 2 mf &number of features& x y length dir 0 0 ... (there are a set of these determined by &number of features& above) cn 1 ypos length x2ndmoment y2ndmoment The mf features are polygon segments of the outline normalized to the 1st and 2nd moments. x= x position [-0.5.0.5] y = y position [-0.25, 0.75] length is the length of the polygon segment [0,1.0] dir is the direction of the segment [0,1.0] The cn feature is to correct for the moment normalization to distinguish position and size (eg c vs C and , vs ')
5 计算字符集
tesseract需要知道可能要输出的字符集。为了生成unicharset数据文件,在相同的页bounding box文件上使用unicharset_extractor程序进行聚类:
unicharset_extractor fontfile_1.box fontfile_2.box ...
tesseract需要访问字符属性
( isalpha, isdigit, isupper, islower. ).该数据而可以以unicharset的数据形式被编码。每行都是一个字符。utf8的字符是按照十六进制数表达。每位表示一个属性。如果相应位置1,它意味着属性是真的。这些位(从最小位到最大位): isalpha, islower, isupper, isdigit。
';' 为非字母字符,小写字符,大小字符,而非数字。它的属性通过二进制数 10000表示(16进制的10表示 )
'b'是一个字母字符,小写字符。它的属性通过二进制数00011表示(3)
'W'是一个字母字符,大写字符。它的属性通过二进制数00101表示(5)
'7'只是一个数字。它的属性通过二进制数01000表示(8)
‘=’非数字或字母字符。它的属性通过二进制数字00000表示(0)
; 10 Common 46 b 3 Latin 59 W 5 Latin 40 7 8 Common 66 = 0 Common 93
日文或中文字母字符属性由二进制数00001表示(1)
如果你的系统支持wctype函数,这些值都将通过unicharset_extractor自动设置,并且没必要通编辑unicharset文件。在一些老的系统中,unicharset文件必须通过手动添加属性描述代码。
注意, 当 inttemp, normproto
和 pffmtable被生成时, unicharset文件必须重新生成 (比如:当box文件被更改时,它们必须被重新创建)。必须以正确的方式,随着inttemp存储成索引到unicharset中时,实际的字符将通过给定索引的unichaset分类器返回。
最后两列表示脚本类型( Latin, Common, Greek, Cyrillic, Han, null ),以及相应语言的字符id。
5.1 字体属性(3.01 中新)
3.01中的新需求是font_property文件。该文件的目的是提供字体形式信息,当字体被识别时,将出现在输出中。font_properties 文件是一个文本文件,通过 -F filename 选项指定来进行mftraining.
每行的font_properties文件都以如下进行格式化:
&fontname& &italic& &bold& &fixed& &serif& &fraktur&
当&fontname&是一个字体的字符串名,并且&italic&, &bold&, &fixed&, &serif& and &fraktur&
是所有简单的0 或 1标记,表示字体具有命名属性。
当运行mftraining时,每个.tr文件名必须有相关entry在font_properties文件中,否则将中止mftraining。。。。。
font_properties文件如下:
timesitalic 1 0 0 1 0
shapeclustering -F font_properties -U unicharset eng.timesitalic.exp0.tr mftraining -F font_properties -U unicharset -O eng.unicharset eng.timesitalic.exp0.tr
当所有训练页的字符特征被抽取出来时,我们需要将它们聚集起来创建prototype文件。这些字符形状特性可以通过使用shapeclustering(在3.02版本之后提供)、mftraining 和 cntraining 程序进行聚焦。
shapeclustering -F font_properties -U unicharset lang.fontname.exp0.tr lang.fontname.exp1.tr ...
shapeclustering通过形状聚集创建了主形状表,并将它写到一个文件中:shapetable.
mftraining -F font_properties -U unicharset -O lang.unicharset lang.fontname.exp0.tr lang.fontname.exp1.tr ...
-U 文件表示unicharset,由上面的 unicharset_extractor
lang.unicharset是输出unicharset,它将由 combine_tessdata给出。Mftraining将输出两个其它的数据文件:inttemp(形状原型)和pffmtable(每个字符所希望的特征)。
cntraining lang.fontname.exp0.tr lang.fontname.exp1.tr ...
它将输出normproto 数据文件(character normalizati on sensitivity prototypes )
6.字典数据(可选)
tesseract为每种语言使用三个字典文件。两种文件被编码成 有向非循环字图. DAWG (
Directed Acyclic Word Graph ).其它是普通utf8文本文件:
Description
A dawg made from punctuation patterns found around words. The "word" part is replaced by a single space.
A dawg made from dictionary words from the language.
number-dawg
A dawg made from tokens which originally contained digits. Each digit is replaced by a space character.
A dawg made from the most frequent words which would have gone into word-dawg.
fixed-length-dawgs
Several dawgs of different fixed lengths —— useful for languages like Chinese.
bigram-dawg
A dawg of word bigrams where the words are separated by a space and each digit is replaced by a ?.
unambig-dawg
TODO: Describe.
为了生成DAWG字典文件,你首先需要为你的语言提供一个wordlist。你需要找到一个合适的字典文件,用来作为一个 spellcheckers
的 wordlist的基础 (ispell aspell hunspell)== 注意lincense. wordlist格式化成一个utf8的文本文件,每行都有一个词。将wordlist分割成需要的集合: 比如:常用词,其它剩下的词,接着使用worldlist2dawg来生成DAWG文件:
wordlist2dawg frequent_words_list lang.freq-dawg lang.unicharset wordlist2dawg words_list lang.word-dawg lang.unicharset
对于从右向左的语言(RTL)使用选项 "-r 1".
其它选项参照: 。
注意:wordlist必须包含至少一个单词!在合并的traineddata文件中不允许存在。
如果单词总是具有标点在其中,比如: , 那么在字典中包含它们很合适。
最后的字典文件称为:user-words,通常为空。
如果你需要字典wordlists的样本文件,解合并(使用
)已经存在的语言数据文件(比如:eng.traineddata),接着使用
抽取wordlists.
7、最后的文件(unicharambigs)
tesseract最后使用的数据文件称为: unicharambigs 。它表示了在字符或字符集间固有的模糊,这通常整个都是以人工方式生成。为了理解文件格式,查看以下示例:
第一行是一个版本标识符。剩下的行包含了5个以tab分隔的字段。第一个字段表示的是第二个字段的字符串数。第三个字段表示的是第四个字段的字符串数。第5个字段是一个类型标识符。第二和第四个字段表示了空格分隔的字符串。这可以是一个utf8格式的文件,因此,每个字符串是一个utf8字符串。每个这样的字符串必须匹配unicharset文件中一些行的第一个字段,比如,它必须是一个可识别单元。
类型表示符的值如下:
Description
the ngram pair is not ambiguous
REPLACE_AMBIG
ocred ngram should always be substituted with correct
DEFINITE_AMBIG
add correct ngram to the classifier results (1-1)
SIMILAR_AMBIG
use pairwise classifier for ocred/correct pair (1-1)
CASE_AMBIG
this is a case ambiguity (1-1)
替代规则是,
如果第5个字段为1, 在第二字段中的 字符串集联总会被第4字段中的字符串联连替代。
如果第5个字段为0,那么没必要替换。
它扮演着hint的角色,如果替换将一个非字典词替换为一个字典词,那么,这个词就应该用来训练该适配性分类器,分段搜索可以提高识别第4个字段的可能性。主要影响是,第5个字段为0的主要影响是,减少错误适配,它不会使用更高的hint来替代。
当为2时,第一行显示了双引号('')应该被替换单引号(')。(第5个字段标是是否标准替换)。第二行表示的是,pair 'rn'可能有时被识别成'm'。而第三行表示,字母‘m ’可能有时被识别成序列'iii'。第4行表示, 埃纳德语符号“ ?? ”,常被误识别,因为符号“ ?? ”后面跟着的数字‘6’,接着的序列常常被替换。最后一行可以是空行('\n')。
注意, 两边的 字符应出现在 unicharset中。该文件不能用来从一种字符翻译成另一种字符。
unicharambigs文件应该为空,或者不存在。
8.将它们放在一起
所有都合在一起!你需要做的所有事情是将它们收集在一起(shapetable, normproto, inttemp, pffmtable),并且重命名为一个lang.prefix,lang可以是3个字符的编码(
),接着以如下方式运行:
combine_tessdata lang.
注意,不要忘记加句点。
接着将生成lang.traineddata。tesseract可以识别文本:
tesseract image.tif output -l lang
实际上,你可以使用语言码中的任何字符串,但是,如果你想任何人能轻易理解,按ISO 639的方式命名。
关于 combine_tessdata 更多选项,在
或者源码注释中(
/p/tesseract-ocr/wiki/TrainingTesseract2
/p/tesseract-ocr/wiki/TrainingTesseract3
Copyright (C) , All Rights Reserved.
版权所有 闽ICP备号
processed in 0.053 (s). 12 q(s)

我要回帖

更多关于 幻兽契约cryptract 的文章

 

随机推荐