1. 程式人生 > >tesseract-ocr 3.02 信心值 字元座標 學習筆記

tesseract-ocr 3.02 信心值 字元座標 學習筆記

在使用字元識別的過程中,需要辨別一些字元本身是否殘缺或與標準字元是否有形變又或者想知道其在截圖上面的座標是什麼,這樣就需要用到tesseract-ocr 輸出的HTML檔案的功能了.

命令列為

tesseract -l eng outtext hocr


其中hocr 引數是本身自帶的一個配置檔案,裡面包含內容  tessedit_create_hocr 1,表示輸出Htmlde 意思

這時候當前工作目錄中就會出現 outtext.html檔案了. 

但用3.02版本的同學可能會看到,html裡面只有bbox的座標資料,沒有信心值啊.原來3.02

版已經把該內容刪減掉了.見下面 有加號的程式碼,把它們加進去,重新編譯一下就可以了.

	Modify	/trunk/api/baseapi.cpp	diff
...			
1103	1103		
1104	1104		    // Now, process the word...
1105	1105		    hocr_str.add_str_int("<span class='ocrx_word' id='word_", wcnt);
1106		-	    AddBoxTohOCR(res_it, RIL_WORD, &hocr_str);
1106	+		int left, top, right, bottom;
1107	+	    res_it->BoundingBox(RIL_WORD, &left, &top, &right, &bottom);
1108	+	    hocr_str.add_str_int("' title=\"bbox ", left);
1109	+	    hocr_str.add_str_int(" ", top);
1110	+	    hocr_str.add_str_int(" ", right);
1111	+	    hocr_str.add_str_int(" ", bottom);
1112	+	    hocr_str.add_str_int("; x_wconf ", res_it->Confidence(RIL_WORD));
1113	+	    hocr_str += "\">";
1107	1114		    const char *font_name;
1108	1115		    bool bold, italic, underlined, monospace, serif, smallcaps;
1109	1116		    int pointsize, font_id;

這時問題又遇到了,在編譯時出現很多錯誤,說某個字元缺少了啊之類,實際上這大多跟內碼有關,VS2010以上的把有問題的轉成unicode就搞定了,換行符的也一樣.

有的人可能做到這步,但編譯出來的程式又執行不了. 不要急,這主要跟兩個地方有關:

1、libtesseract302d.dll 沒有成功編譯,或沒有擺在剛剛編譯出來的tesseract程式同一目錄.

2、 liblept168d.dll不是用VS2010編譯的,這個上網下一個編譯好的就行了。

最後,程式終於正常運行了。看看輸出檔案 outtext.html,裡面想要的那句話已經變成了這樣

<span class='ocrx_word' id='word_1' title="bbox 64 21 110 45 ;x_wconf 92">200</span> 

其中x_wconf 92 就是信心值了,bbox 後面的就是其相對截圖左上角的座標了

至此,通過一些文書處理的演算法,就能把他們提出來比較了。