日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

tesseract-ocr使用以及训练方法

發布時間:2025/4/16 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tesseract-ocr使用以及训练方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? 轉自:https://blog.csdn.net/zhou_zhu/article/details/78004131

本人最近在做字符識別,所以自行在網上尋找方法,接觸到tesseract,自己按照網上方法做的時候,也遇到一些問題,解決了一些。所以我決定寫下我第一個博客,一是方便自己以后查看,更新學習。二是方便和網友交流學習。

Tesseract介紹

? ? ? ?? Tesseract是一個開源的OCR(Optical Character Recognition,光學字符識別)引擎,可以識別多種格式的圖像文件并將其轉換成文本,目前已支持60多種語言(包括中文)。?Tesseract最初由HP公司開發,后來由Google維護,目前發布在Googel Project上。

? ? ? ?安裝Tesseract,從http://code.google.com/p/tesseract-ocr/downloads/list下載Tesseract,3.01上的版本支持中文。安裝后在電腦上會有一個Tesseract-OCR目錄,通過目錄錄下的tesseract.exe程序就可以對圖像的字符進行識別。考慮到萬一有人上不了谷歌,這個Tesseract-OCR文件夾我也上傳了,地址:點擊打開鏈接。文件夾中除了Tesseract的相應文件外,還有一個tesseract-vs2013-include-lib-dll文件,這個是VS2013用來調用API的配置文件,后面的博客會寫到。打開如圖所示。

使用默認的語言庫識別

??? ?準備一張待識別的圖片,我選取一段《成都》的歌詞。

? ? ?接著就可以打開命令行,進入Tesseract-OCR的目錄,輸入:

?

<span style="font-size:18px;">tesseract.exe gc.jpg result -l chi_sim</span>


? ??其中result表示輸出結果文件txt名稱,chi_sim表示用以識別的語言文件為英文。執行后文件夾中會多一個result.txt。

?

? ??效果非常不好,因為很多漢字是左右結構,比如:眼淚。所以我要自己訓練自己的中文庫。

訓練樣本

? ???訓練樣本需要一個工具,jTessBoxEditor,下載地址:點擊打開鏈接。這個工具是用java開發的,需要jre7以上的版本支持。 ??

? ? 1、獲取訓練的圖片,為了方便我使用了原來的圖片一張,樣本當然是越多越好。

? ? 2、合并樣本文件,打開jTessBoxEditor,點開train.bat。在菜單欄中Tools->Merge TIFF。在彈出的窗口中可以選擇多張樣本圖片(網上之前有說要.tif格式的圖片,測試.jpg格式的也行),我這邊就用了一張樣本圖片。

? ? ? 一張或者多張圖片可以合成一張tif文件。

? ? ? 3、生成box文件, 打開命令行,輸入:

?

<span style="font-size:18px;">tesseract.exe gc.font.exp1.tif gc.font.exp1 batch.nochop makebox</span>

?

? ? ? 生成的BOX文件為gc.font.exp1.box,BOX文件為Tessercat識別出的文字和其坐標。Make BOX的命名的個數為:

?

<span style="font-size:18px;">tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop makebox </span><span style="font-size: 14px;"> </span>

? ? ? 其中lang為語言名稱,fontname為字體名稱,num為序號,可以隨便定義。有些博客說對于這個命名無所謂,但是我嘗試到后免出錯了,是tr文件名的問題,在下面我會貼出報錯圖。讀者也可以試試,不知是不是我之前步驟哪里做錯了。

?

? ? ? 4、文字矯正,打開jTessBoxEditor工具,打開gc.font.exp1.tif文件(必須將上一步生成的.box和.tif樣本文件放在同一目錄),如下圖所示。可以看出有些字符分割和識別都不正確,可以通過該工具手動對每張圖片中識別錯誤的字符進行校正。校正完成后保存即可。(注:發現中文打不上去,在菜單Setting->Font中可以修改,改為宋體即可)

?

?

?

? ? ? ? ?對于標定的方框以及識別的字符進行修改。

? ? ? ? 選擇兩個或兩個以上的框,Merge可進行合并;Split將框進行拆分;Insert插入框,如果圖片上一個框也沒有,那無法進行插入;Delete刪除框。選擇要修改的字符框,在Character中輸入想要修改的字,再點擊齒輪,即可修改。修改后,如下圖所示:

? ? ? ? ?5、生成.tr文件,在命令行中輸入:

?

<span style="font-size:18px;">tesseract gc.font.exp1.tif gc.font.exp1 nobatch box.train </span>? ? ?

?

? ? ? ? ?6、計算字符集,從生成的box文件中提取,繼續輸入:

?

<span style="font-size:18px;">unicharset_extractor gc.font.exp1.box</span>

? ? ? ? ?7、生成字體特征文件,在當前文件夾中新建任意名稱的文件,里面格式為:

<span style="font-size:18px;"><fontname> <italic> <bold> <fixed> <serif> <fraktur> </span>

?

? ? ? ? 例如:我建了一個名為font的文件,里面內容為:font 0 0 0 0 0?

? ? ? ? 這個文件可以是手動生成的txt文件,也可以在在命令行中輸入:

?

<span style="font-size:18px;">echo font 0 0 0 0 0 >font</span>

? ? ? ? 即可。

?

? ? ? ? 8、特征訓練,繼續在命令行輸入:

?

<span style="font-size:18px;">mftraining -F font -U unicharset gc.font.exp1.tr</span><span style="font-size:14px;"> </span>


? ? ? ? 在這一步我出現了好幾個錯誤,如下圖

?

? ? ? ?(1)Failed to load unicharset from file uncharset,這是因為剛剛的font的文件,如果是在txt中寫的,一定要寫成font.txt,加上后綴。

? ? ? (2)feature training for Tesseract已停止工作。命令行顯現:

? ? ? Reading num.tr …
? ? ??Font id = -1/0, class id = 1/13 on sample 0

? ? ? font_id >= 0 && font_id < font_id_map_.SparseSiz..\..\classify\trainingsampleset.cpp, line 622

? ? ? ?這個問題就是上面命名所導致的,所以還是規范命名。

? ? ? ?9、聚集tesseract識別的訓練文件,命令行輸入:

?

<span style="font-size:18px;">cntraining gc.font.exp1.tr</span>


? ? ? ? 有人會說其他還有一條shapeclustering語句,說下這個步驟可有可無,這個是在3.02中新加的,主要針對印度語,所以我們在做的時候會有一個警告?warning No shape table file present。

?

? ? ? ? 這時候文件夾中會多了四個文件,在unicharset,inttemp,normproto,pfftable文件名前面加上font.。如下圖所示:

?

? ? ? 10、最后,合并相關文件,生成字典文件,輸入:

?

<span style="font-size:18px;">combine_tessdata font.</span><span style="font-size:14px;"> </span>


? ? ? ?所有輸入命令如下圖所示

?

? ? ? ? 最終,在當前目錄中會產生一個為font.traineddata文件,將其拷到tessdata文件夾中,再測試一下。

?

? ? ? ? ?雖然不是全部識別出來,但是較之前的識別率提高了很多,這個和樣本數量也是有關系的,而且這句話中左右結構的字特別多,原圖26個字,卻識別出31個字出來了,這個問題,我還沒想到什么方法,單個字訓練?。我也試了其他字符訓練,效果還可以

? ? ? ? ? 這是我第一次寫博客,想到哪里寫到哪里,如果哪些地方寫的不恰當的,還請大神指出來,謝謝。

總結

以上是生活随笔為你收集整理的tesseract-ocr使用以及训练方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。