记录我训练tesseract4.0时遇到的问题

一、创建培训数据


training/tesstrain.sh 

--fontlist 'font1' 'font2' #要训练的字体名称列表。

--fonts_dir /path/to/fonts   #字体文件的路径。

--lang LANG_CODE 

--linedata_only  #仅为训练生成训练数据。

--noextract_font_properties 

--langdata_dir /path/to/langdata # / langdata目录的路径。

 --tessdata_dir /path/to/tessdata  #指定现有的受训数据文件的位置,如果没有指定会从TESSDATA_PREFIX定义的路径中查找)

--output_dir ~/path/to/output #输出的训练数据文件的位置。

--wordlist  /path/to/wordlist file#排序的语言的单词列表 

--training_text /path/to/text file #要用于训练的文本。(如果 没有指定wordlist和trainingtext,tesseract会从langdata里查找)

还有一些其他的参数可以在这里看到。

1.字体

在使用tesstrain.sh创建训练数据的时候,必须先安装所需字体!!

所需要的字体可以在字体 tesseract/training/language-specific.sh 文件中看到,比如想知道训练中文字典的时候需要哪些字体,在这个文件中找到以下的代码(296行):

CHI_SIM_FONTS=( \

"AR PL UKai CN"\

"AR PL UMing Patched Light"\

"Arial Unicode MS"\

"Arial Unicode MS Bold"\

"WenQuanYi Zen Hei Medium"\

)

上面列出来的字体就是你系统中必须有的字体,不然在创建训练数据的时候会报无法加载字体的错误。

想要知道自己的系统里已有的字体可以使用text2image --fonts_dir /usr/share/fonts --list_available_fonts命令来查看。

上面的字体列表你可以删除其中的任一字体,也可以往里添加你想要的字体,如果添加了一种字体,比如SIMSUN(简体宋),还需要在langdata/font_properties文件中添加一行数据:SIMSUN 0 0 0 0 0(如果langdata/font_properties文件中没有关于SIMSUN的配置的话)

2.langdata文件

tesstrain.sh在培训过程中会使用到某些文件,比如 [lang] .training_text (要训练的文本,也可以通过--training_text /路径/文件.txt指定)、[lang].wordlist等等都在langdata文件夹里,下载地址:https://github.com/tesseract-ocr/langdata

每个文件具体的意义可以在这里查看。

(其实我并不知道这个文件夹下的那些文件到底是不是必须的,官网上只说必须有[lang].training_text这个文件,其他文件有没有不知道会不会有什么影响阿。。还有就是如果我自己指定了一个--training_text,那是不是连[lang].training_text都可以不要了。。)

3.训练文本太大

training/tesstrain_utils.sh文件中,代码215行:common_args+=" --outputbase=${outbase} --max_pages=3"

--max_pages=3 限制了在创建训练数据的时候最多只能生成3页的文档图像,如果训练文本很大,超过3页的内容就会没了,可以自己修改这个值,例如修改为--max_pages=100。

(似乎有一个设置图像大小的参数,暂时想不起来了)

还有一次在训练的时候,成功的生成训练数据后开始训练的时候报了一个图片尺寸太大什么的错误,记不得了。。原因是训练的文本每行的文字太多,行宽太长,截成几行就好了。。

4.字典

在创建训练数据的时候,如果还没有从官网上下载任何字典,那么会报一个

Failed loading language 'eng'

Tesseract couldn't load any languages!

Could not initialize tesseract.

的错误(虽然我训练的是中文)。。似乎是eng.traineddata这个字典是默认需要加载的。。反正下一个就好了。。

还有一个 Failed loading language 'chi_sim_vert'

这。。。我看了一下。。。langdata/chi_sim/chi_sim.config这个文件打开,第一句:tessedit_load_sublangs chi_sim_vert

如果把这一句注释掉了,就没问题了。。或者你再下一个chi_sim_vert.traineddata。。

所以问题又来了。。为什么要加载这个字典。。

5.乱七八糟的提示

在创建训练文本的时候还会有很多不是很明白的提示,虽然看上去好像不影响(因为并没有因为这些提示而停止创建),但心里很方。。

比如:

Fontconfig error: line 1: no element found

Fontconfig error: Cannot load default config file

这个好像是最近刚跑出来的(之前没注意过。。),不知道是为什么。。

还有:

Setting unichar properties

Other case a of A is not in unicharset

Other case t of T is not in unicharset 

........

Setting script properties

Warning: properties incomplete for index 727 = +

Warning: properties incomplete for index 808 = =

Warning: properties incomplete for index 956 = ,

Config file is optional, continuing...

Null char=2

之类的。。似乎没有什么影响。。

好了,创建数据这个步骤就到这里,进行下一步。

二、Training From Scratch


开心,可以开始训练了!!

先是按照官网上的教程训练了英文,过程和结果与官网的差不多,然后就想试着去训练中文。

结果!!!!中文的训练效果极差!!!!同样的训练数据比官方的中文字典差的不知道哪里去了!!!

命令:

mkdir -p ~/tesstutorial/chisimoutput

training/lstmtraining --debug_interval 100 \ 

(使用这个参数要先构建ScrollView.jar工具)

--traineddata ~/tesstutorial/chisimtrain/chi_sim/chi_sim.traineddata \

--net_spec '[1,48,0,1Ct3,3,16Mp3,3Lfys64Lfx96Lrx96Lfx512O1c1]' \

--model_output ~/tesstutorial/chisimoutput/base --learning_rate 20e-4 \

--train_listfile ~/tesstutorial/chisimtrain/chi_sim.training_files.txt \

--eval_listfile ~/tesstutorial/chisimeval/chi_sim.training_files.txt \

--max_iterations 5000 &>~/tesstutorial/chisimoutput/basetrain.log

迭代5000次后发现,非常的差!!!无敌的差!!!

因为中文的训练样本字符比较多,我想可能是训练的次数太少所以效果才太差,

所以我就把 --max_iterations 改成了--target_error_rate 0.01让它继续训练

然后在迭代了13万次之后,效果依旧非常的差。。而且花费的时间非常的多。。所以我放弃了。。放弃了。。弃了。。了。。

然后在tesseract群里面看见 有人说训练了250W次效果都比官方的差很多,所以不要纠结的去开启新的篇章吧。

三、Fine Tuning


Fine tuning 训练就是从现有的训练语言开始,训练特定的附加数据。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341