Tesseract-ocr c#文字識別簡單入門

一 .簡單使用Tesseract文字識別git

1.建立項目github

2.引用Tesseract-ocr庫測試

3.下載語言文件字體

 下載地址 https://github.com/tesseract-ocr/tesseract/wiki/Data-Files#data-files-for-version-302spa

 目前下載中文作實驗.net

    

 

4.代碼部分3d

static void Main(string[] args)
{
var img = new Bitmap(@"F:\1557288016(1).png");    //須要識別的圖片orm

//F:\test\ConsoleApp1\TesseractDemo\tessdata 爲語言包存放路徑blog

var ocr = new TesseractEngine(@"F:\test\ConsoleApp1\TesseractDemo\tessdata", "chi_sim", EngineMode.Default);    //使用chi_sim中文語言包作測試圖片

var page = ocr.Process(img);
Console.Write(page.GetText());
Console.ReadKey();

}

5.運行結果

圖片:

 

識別結果:

 

6.在原圖沒任何處理 字庫沒訓練下的結果識別率還不是很理想.

 

二. 使用 jTessBoxEditor 進行簡單數訓練

1.安裝 jTessBoxEditor

  下載jTessBoxEditor,地址https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/

   

 

   解壓後獲得jTessBoxEditor

   

2.因爲這是由Java開發的,因此要先安裝JRE 這裏不闡述

3.準備樣本圖片 兩個不一樣字體的字母

    

    

4.將圖片轉換成tif\tiff格式 可百度在線圖片轉換tiff

5.合併tiff樣本圖片

 剛解壓的目錄找到一個【train.bat】打開 jTessBoxEditor >【Tools】>【Merge TIFF】 打開對話框選擇兩個tiff樣本圖片

點擊打開彈出保存合併後圖片路徑選擇 這裏咱們命名爲num.font.exp0.tif

6.生成BOX文件

因爲沒有設置環境變量暫時把全部樣本圖片放到jTessBoxEditor\tesseract-ocr 方便cmd命令

cmd定位到樣本圖片位置執行 命令:tesseract num.font.exp0.tif num.font.exp0 batch.nochop makebox 出現下面說明成功

語法說明

【語法】:tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop makebox

【語法】:lang爲語言名稱,fontname爲字體名稱,num爲序號;在tesseract中,必定要注意格式

 

 7.定義字符配置文件

還在在jTessBoxEditor\tesseract-ocr文件夾內,新建一個文本文件,名爲font_properties,刪掉.txt,用記事本打開,寫入內容爲:

font 0 0 0 0 0

 語法說明

【語法】:<fontname> <italic> <bold> <fixed> <serif> <fraktur>
【語法】:fontname爲字體名稱,italic爲斜體,bold爲黑體字,
fixed爲默認字體,serif爲襯線字體,fraktur德文黑字體,
1和0表明有和無,精細區分時可以使用

 

8.字符矯正

打開 jTessBoxEditor>【BOX Editor】> 【Open】,打開num.font.exp0.tif;矯正【Char】上的字符 每頁沒個樣本字體藍色框都要包含一個完整的字符一一對應

調整每頁後保存

9.生成訓練字包

還在在jTessBoxEditor\tesseract-ocr文件夾內,新建一個批處理文件do.bat (命名隨意) 內容:

echo Run Tesseract for Training..
tesseract.exe num.font.exp0.tif num.font.exp0 nobatch box.train

echo Compute the Character Set..
unicharset_extractor.exe num.font.exp0.box
mftraining -F font_properties -U unicharset -O num.unicharset num.font.exp0.tr


echo Clustering..
cntraining.exe num.font.exp0.tr

echo Rename Files..
rename normproto num.normproto
rename inttemp num.inttemp
rename pffmtable num.pffmtable
rename shapetable num.shapetable

echo Create Tessdata..
combine_tessdata.exe num.

echo. & pause

 

而後cmd 執行do.bat文件

以後生成多個文件

紅色框框即是咱們要的訓練庫

 

最後測試結果 

var img = new Bitmap(@"F:\1557288016(1).png");
var ocr = new TesseractEngine(@"F:\test\ConsoleApp1\TesseractDemo\tessdata", "num", EngineMode.Default);
var page = ocr.Process(img);
Console.Write(page.GetText());

相關文章
相關標籤/搜索