OCR訓練中文樣本庫和識別

ICH發表於2018-11-23

簡述

光學字元識別(英語:Optical Character Recognition,OCR)是指對文字資料的影象檔案進行分析識別處理,獲取文字及版面資訊的過程。關於中文的識別最好的開源庫應該就是Tesseract OCR了。本文則重點介紹訓練出一份自己需要的樣本庫並識別(本文預設你已經會直接匯入官方訓練庫識別)

準備工作

1)安裝tesseract ocr引擎

以Mac為例,直接選擇homebrew命令安裝 brew install --with-training-tools tesseract

2)下載chi_sim.traindata(中文識別庫,直接放在tesseract安裝目錄的tessdata目錄下,例如/usr/local/Cellar/tesseract/4.0.0/share/tessdata))

3)下載jTessBoxEditor2.2.0

訓練步驟

1)把樣本圖片或者文字轉換成tif格式(圖片轉tif 可以直接網上搜)這裡講文字轉tif

雙擊解壓後的jTessBoxEditor.jar檔案,選擇工具欄TIFF/Box Generator,把需要轉換的文字直接拷貝到下面空白處

Output為tif檔案輸出目錄,其他基本無需修改,然後點選Generate稍等片刻即可生成生成tif檔案。

2)生成box檔案

把第二步生成的tif檔案改名 sll.normal.exp0.tif ,官網的寫法~ 然後進入tif檔案目錄下執行命令

tesseract sll.normal.exp0.tif sll.normal.exp0 -l chi_sim batch.nochop makebox1

3)選擇工具欄Box Editor,點選Open匯入第一步生成的tif檔案(會自動繫結第二步生成的box檔案)

點選文字之後可以修改識別區域寬高,x,y座標等,修改完成點選save儲存

4)執行指令碼

Mac執行 sh 指令碼檔名.sh,然後回車依次輸入sll(語言)normal(字型)

!/bin/sh

read -p "輸入你語言:" lang
echo {lang}
read -p "輸入你的字型:" font
echo {font}
echo "所以完整檔名為:"
echo {lang}.{font}.exp0.tif
echo "開始。。。"
echo {font} 0 0 0 0 0 >font_properties
tesseract  {lang}.{font}.exp0.tif {lang}.{font}.exp0  nobatch box.train
unicharset_extractor {lang}.{font}.exp0.box
shapeclustering -F font_properties -U unicharset {lang}.{font}.exp0.tr
mftraining -F font_properties -U unicharset -O unicharset {lang}.{font}.exp0.tr
cntraining {lang}.{font}.exp0.tr
echo "開始重新命名檔案"
mv inttemp {font}.inttemp
mv normproto {font}.normproto
mv pffmtable {font}.pffmtable
mv shapetable {font}.shapetable
mv unicharset {font}.unicharset
echo "生成最終檔案"
combine_tessdata ${font}.

echo "完成"
複製程式碼

執行成功之後就會生成.traineddata檔案,這個檔案即只能識別我們訓練的“識別”倆字,所以說在大小,識別速度上會大大優於官網的中文包,當然本文只是例子,實踐專案中不可能只是“識別”兩個字那麼簡單,比如中文簡體3500字,那在修改box檔案的時候確實是需要花費很久的時間的

相關文章