特殊字符語(yǔ)言包訓(xùn)練流程

本篇文章是舊版本的訓(xùn)練教程氛驮,適應(yīng)于新版本的訓(xùn)練流程請(qǐng)查看:http://www.reibang.com/p/7a2c40dd6560

題庫(kù)特殊字符語(yǔ)言包訓(xùn)練流程

題庫(kù)中會(huì)出現(xiàn)很多Tesseract無(wú)法識(shí)別的特殊字符腕柜,例如:≤ ≥ ×等等济似。本教程旨在訓(xùn)練新的語(yǔ)言包改善這些特殊字符的識(shí)別效果。訓(xùn)練思路為盏缤,利用Tesseract認(rèn)識(shí)的字符替代這些特殊字符(與特殊字符外形相近砰蠢,比如,‘,’替代‘唉铜,’台舱,或者題庫(kù)中沒(méi)有的字符替換原有字符)。

準(zhǔn)備訓(xùn)練依賴項(xiàng)

git clone https://github.com/tesseract-ocr/tesseract.git
git clone https://github.com/tesseract-ocr/langdata.git
git clone https://github.com/tesseract-ocr/tessdata.git
cp ./tessdata/eng.traineddata ./tesseract/tessdata
cp ./tessdata/chi_sim.traineddata ./tesseract/tessdata

下載tesseract包后需要本地安裝潭流,可看前面發(fā)布的安裝教程:Tess4.0 windows編譯與使用竞惋,tesseract linux 安裝與編譯

添加新的字體

打開(kāi)./training/language-specific.sh文件灰嫉,在CHI_SIM_FONTS欄目下添加Times New Roman字體內(nèi)容拆宛,添加后內(nèi)容如下:

CHI_SIM_FONTS=( \
    "AR PL UKai CN" \
    "AR PL UMing Patched Light"
    "AR PL UKai TW" \
    "AR PL UMing TW MBE Light" \
    "AR PL UKai Patched" \
    "Arial Unicode MS" \
    "Arial Unicode MS Bold" \
    "WenQuanYi Zen Hei Medium" \
    "Times New Roman, Bold" \
    "Times New Roman, Bold Italic" \
    "Times New Roman, Italic" \
    "Times New Roman," \
    )

外形相近的字符替換

應(yīng)用Times New Roman字體中現(xiàn)有的字符替換外形相近的字符,見(jiàn)以下是替換代碼:

text_line.replace('(','(').replace(')',')').replace('﹣','-').replace('.','.')\
         .replace(':', ':')

替換其他特殊字符

訓(xùn)練流程

第一步

將文件training/tesstrain.sh復(fù)制備份training/tesstrain0.sh讼撒,并在tesstrain0.sh中將54行以下的內(nèi)容添加注釋浑厚,注釋后的代碼為:

source "$(dirname $0)/tesstrain_utils.sh"

ARGV=("$@")
parse_flags
echo $WORKSPACE_DIR

mkdir -p ${TRAINING_DIR}
# tlog "\n=== Starting training for language '${LANG_CODE}'"
#
# source "$(dirname $0)/language-specific.sh"
# set_lang_specific_parameters ${LANG_CODE}
#
# initialize_fontconfig
#
# phase_I_generate_image 8
# phase_UP_generate_unicharset
# phase_D_generate_dawg
# if ((LINEDATA)); then
#   phase_E_extract_features "lstm.train" 8 "lstmf"
#   make__lstmdata
# else
#   phase_E_extract_features "box.train" 8 "tr"
#   phase_C_cluster_prototypes "${TRAINING_DIR}/${LANG_CODE}.normproto"
#   if [[ "${ENABLE_SHAPE_CLUSTERING}" == "y" ]]; then
#       phase_S_cluster_shapes
#   fi
#   phase_M_cluster_microfeatures
#   phase_B_generate_ambiguities
#   make__traineddata
# fi
#
# tlog "\nCompleted training for language '${LANG_CODE}'\n"

執(zhí)行以下命令:

training/tesstrain0.sh --fonts_dir /usr/share/fonts \
--training_text ../training_data/input_data0.txt \
--langdata_dir ../langdata --tessdata_dir ./tessdata \
--lang chi_sim --linedata_only --noextract_font_properties \
--exposures "0" --fontlist "SIMSUN" \
--output_dir ~/tesstutorial/chitest

第二步

按照以下步驟對(duì)shell文件進(jìn)行修改:

  1. 查看系統(tǒng)/tmp目錄下的文件夾股耽,找到格式為'tmp.*'的文件夾,并將此文件夾名進(jìn)行復(fù)制钳幅。
  2. 將文件training/tesstrain_utils.sh復(fù)制備份training/tesstrain_utils0.sh物蝙,并將tesstrain_utils0.sh中的WORKSPACE_DIR變量名賦值為'tmp.*'(/tmp目錄下相應(yīng)的文件夾名稱)
  3. 將training/tesstrain0.sh文件中source "$(dirname $0)/tesstrain_utils.sh"語(yǔ)句改成source "$(dirname $0)/tesstrain_utils0.sh"
  4. 將training/tesstrain0.sh文件的注釋內(nèi)容進(jìn)行更改,更改后的內(nèi)容如下:
source "$(dirname $0)/tesstrain_utils0.sh"

ARGV=("$@")
parse_flags
echo $WORKSPACE_DIR

mkdir -p ${TRAINING_DIR}
tlog "\n=== Starting training for language '${LANG_CODE}'"

source "$(dirname $0)/language-specific.sh"
set_lang_specific_parameters ${LANG_CODE}

initialize_fontconfig

phase_I_generate_image 8
# phase_UP_generate_unicharset
# phase_D_generate_dawg
# if ((LINEDATA)); then
#   phase_E_extract_features "lstm.train" 8 "lstmf"
#   make__lstmdata
# else
#   phase_E_extract_features "box.train" 8 "tr"
#   phase_C_cluster_prototypes "${TRAINING_DIR}/${LANG_CODE}.normproto"
#   if [[ "${ENABLE_SHAPE_CLUSTERING}" == "y" ]]; then
#       phase_S_cluster_shapes
#   fi
#   phase_M_cluster_microfeatures
#   phase_B_generate_ambiguities
#   make__traineddata
# fi
#
# tlog "\nCompleted training for language '${LANG_CODE}'\n"

執(zhí)行以下命令:

training/tesstrain0.sh --fonts_dir /usr/share/fonts \
--training_text ../training_data/input_data0.txt \
--langdata_dir ../langdata --tessdata_dir ./tessdata \
--lang chi_sim --linedata_only --noextract_font_properties \
--exposures "0" --fontlist "SIMSUN" \
--output_dir ~/tesstutorial/chitest

第三步

在系統(tǒng)桌面進(jìn)入"/tmp/tmp.J8JYbdYYrv/chi_sim"目錄敢艰,修改后綴名為.box文件诬乞,將此文件中的特殊字符修改為想要替換的其他字符,注意:每個(gè)字符的替換需要保持一致哦钠导。

例如:本文例將所有的'≤'符號(hào)替換成"小"丽惭。

第四步

修改training/tesstrain0.sh文件中的注釋內(nèi)容,修改后如下:

source "$(dirname $0)/tesstrain_utils0.sh"

ARGV=("$@")
parse_flags

# mkdir -p ${TRAINING_DIR}
# tlog "\n=== Starting training for language '${LANG_CODE}'"
#
# source "$(dirname $0)/language-specific.sh"
# set_lang_specific_parameters ${LANG_CODE}
#
# initialize_fontconfig
#
# phase_I_generate_image 8
echo $TRAINING_DIR
phase_UP_generate_unicharset
phase_D_generate_dawg
if ((LINEDATA)); then
  phase_E_extract_features "lstm.train" 8 "lstmf"
  make__lstmdata
else
  phase_E_extract_features "box.train" 8 "tr"
  phase_C_cluster_prototypes "${TRAINING_DIR}/${LANG_CODE}.normproto"
  if [[ "${ENABLE_SHAPE_CLUSTERING}" == "y" ]]; then
      phase_S_cluster_shapes
  fi
  phase_M_cluster_microfeatures
  phase_B_generate_ambiguities
  make__traineddata
fi

tlog "\nCompleted training for language '${LANG_CODE}'\n"

執(zhí)行以下命令:

training/tesstrain0.sh --fonts_dir /usr/share/fonts \
--training_text ../training_data/input_data0.txt \
--langdata_dir ../langdata --tessdata_dir ./tessdata \
--lang chi_sim --linedata_only --noextract_font_properties \
--exposures "0" --fontlist "SIMSUN" \
--output_dir ~/tesstutorial/chitest

第五步

按步驟執(zhí)行以下命令:

  1. mkdir -p ~/tesstutorial/chituned_from_chisim
  2. combine_tessdata -e ../tessdata/chi_sim.traineddata ~/tesstutorial/chituned_from_chisim/chi_sim.lstm
  3. lstmtraining --model_output ~/tesstutorial/chituned_from_chisim/chituned --continue_from ~/tesstutorial/chituned_from_chisim/chi_sim.lstm --train_listfile ~/tesstutorial/chitest/chi_sim.training_files.txt --eval_listfile ~/tesstutorial/chitest/chi_sim.training_files.txt --target_error_rate 0.01
  4. lstmtraining --model_output ~/tesstutorial/chituned_from_chisim/chituned.lstm
    --continue_from ~/tesstutorial/chituned_from_chisim/chituned_checkpoint
    --stop_training
  5. combine_tessdata -o ./tessdata/chi_sim.traineddata
    ~/tesstutorial/chituned_from_chisim/chituned.lstm
    ~/tesstutorial/chitest/chi_sim.lstm-number-dawg
    ~/tesstutorial/chitest/chi_sim.lstm-punc-dawg
    ~/tesstutorial/chitest/chi_sim.lstm-word-dawg

新生成的traineddata在tesseract/tessdata目錄下辈双。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末责掏,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子湃望,更是在濱河造成了極大的恐慌换衬,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件证芭,死亡現(xiàn)場(chǎng)離奇詭異瞳浦,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)废士,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門叫潦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人官硝,你說(shuō)我怎么就攤上這事矗蕊。” “怎么了氢架?”我有些...
    開(kāi)封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵傻咖,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我岖研,道長(zhǎng)卿操,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任孙援,我火速辦了婚禮害淤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拓售。我一直安慰自己窥摄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布邻辉。 她就那樣靜靜地躺著溪王,像睡著了一般腮鞍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上莹菱,一...
    開(kāi)封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天移国,我揣著相機(jī)與錄音,去河邊找鬼道伟。 笑死迹缀,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蜜徽。 我是一名探鬼主播祝懂,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼拘鞋!你這毒婦竟也來(lái)了砚蓬?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤盆色,失蹤者是張志新(化名)和其女友劉穎灰蛙,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體隔躲,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡摩梧,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了宣旱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片仅父。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖浑吟,靈堂內(nèi)的尸體忽然破棺而出笙纤,到底是詐尸還是另有隱情,我是刑警寧澤买置,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布粪糙,位于F島的核電站强霎,受9級(jí)特大地震影響忿项,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜城舞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一轩触、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧家夺,春花似錦脱柱、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)惨好。三九已至,卻和暖如春随闺,著一層夾襖步出監(jiān)牢的瞬間日川,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工矩乐, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留龄句,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓散罕,卻偏偏與公主長(zhǎng)得像分歇,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子欧漱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 題庫(kù)特殊字符語(yǔ)言包訓(xùn)練流程(新) 上篇文章介紹了一些特殊字符語(yǔ)言包的訓(xùn)練流程职抡,然而沒(méi)過(guò)幾天,github上的tes...
    RobertY閱讀 6,968評(píng)論 11 6
  • Tesseract中英文正體斜體混合訓(xùn)練 當(dāng)我們識(shí)別數(shù)據(jù)中包含中文正體误甚,英文斜體字符時(shí)繁调,Tess4.0識(shí)別英文斜體...
    RobertY閱讀 4,814評(píng)論 1 8
  • 注:目前僅說(shuō)明windows下的情況 前言 網(wǎng)上已經(jīng)有大量的tesseract的識(shí)別教程,但是主要有兩個(gè)缺點(diǎn): 大...
    aliyu閱讀 39,199評(píng)論 30 30
  • 故事的開(kāi)始: 某年的一個(gè)暑期靶草,初戀在學(xué)校找了個(gè)兼職蹄胰,內(nèi)容是把圖書館中舊一點(diǎn)的書籍打字錄到電腦。她高興的和我說(shuō)...
    graphic_zhang閱讀 1,359評(píng)論 0 0
  • 結(jié)束了緊張的驗(yàn)收和備案工作后奕翔,今天可以放松的休息不用加班了裕寨。已經(jīng)很久很久沒(méi)有這樣加過(guò)班啦,一天接一天派继,連續(xù)一個(gè)多月...
    流浪的喵記閱讀 164評(píng)論 0 2