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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Tesseract-OCR 字符识别---样本训练 [转]

發布時間:2024/10/12 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Tesseract-OCR 字符识别---样本训练 [转] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

?

使用默認的語言庫識別

1.安裝Tesseract

從http://code.google.com/p/tesseract-ocr/downloads/list下載Tesseract,目前版本為Tesseract3.02。因為只是測試使用,這里直接下載winodws下的安裝文件tesseract-ocr-setup-3.02.02.exe。安裝成功后會在相應磁盤上生成一個Tesseract-OCR目錄。通過目錄下的tesseract.exe程序就可以對圖像字符進行識別了。 2.準備一副待識別的圖像,這里用畫圖工具隨便寫了一串數字,保存為number.jpg,如下圖所示: ? ? ? ??

3. ?打開命令行,定位到Tesseract-OCR目錄,輸入命令:

?

[plain] view plaincopyprint?
  • tesseract.exe?number.jpg?result?-l?eng??
  • tesseract.exe number.jpg result -l eng

    ? ? ?其中result表示輸出結果文件txt名稱,eng表示用以識別的語言文件為英文。

    3. ?打開Tesseract-OCR目錄下的result.txt文件,看到識別的結果為7542315857,有3個字符識別錯誤,識別率還不是很高,那有沒有什么方法來提供識別率呢?Tesseract提供了一套訓練樣本的方法,用以生成自己所需的識別語言庫。下面介紹一下具體訓練樣本的方法。

    ?

    ? ? ?

    ?

    訓練樣本

    關于如何訓練樣本,Tesseract-OCR官網有詳細的介紹http://code.google.com/p/tesseract-ocr/wiki/TrainingTesseract3。這里通過一個簡單的例子來介紹一下如何進行樣本訓練。

    1.下載工具jTessBoxEditor.?http://sourceforge.net/projects/vietocr/files/jTessBoxEditor/,這個工具是用來訓練樣本用的,由于該工具是用JAVA開發的,需要安裝JAVA虛擬機才能運行。

    2. 獲取樣本圖像。用畫圖工具繪制了5張0-9的文樣本圖像(當然樣本越多越好),如下圖所示:

    ??

    ??


    3.合并樣本圖像。運行jTessBoxEditor工具,在點擊菜單欄中Tools--->Merge TIFF。在彈出的對話框中選擇樣本圖像(按Shift選擇多張),合并成num.font.exp0.tif文件。4.生成Box File文件。打開命令行,執行命令:

    [plain] view plaincopyprint?
  • tesseract.exe?num.font.exp0.tif?num.font.exp0?batch.nochop?makebox??
  • tesseract.exe num.font.exp0.tif num.font.exp0 batch.nochop makebox

    ? 生成的BOX文件為num.font.exp0.box,BOX文件為Tessercat識別出的文字和其坐標。

    注:Make Box File的命令格式為:

    [plain] view plaincopyprint?
  • tesseract?[lang].[fontname].exp[num].tif?[lang].[fontname].exp[num]?batch.nochop?makebox??
  • tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop makebox

    其中lang為語言名稱,fontname為字體名稱,num為序號,可以隨便定義。

    5.文字校正。運行jTessBoxEditor工具,打開num.font.exp0.tif文件(必須將上一步生成的.box和.tif樣本文件放在同一目錄),如下圖所示。可以看出有些字符識別的不正確,可以通過該工具手動對每張圖片中識別錯誤的字符進行校正。校正完成后保存即可。

    ?


    ?

    6.定義字體特征文件。Tesseract-OCR3.01以上的版本在訓練之前需要創建一個名稱為font_properties的字體特征文件。

    font_properties不含有BOM頭,文件內容格式如下:

    [plain] view plaincopyprint?
  • <fontname>?<italic>?<bold>?<fixed>?<serif>?<fraktur>??
  • <fontname> <italic> <bold> <fixed> <serif> <fraktur>

    其中fontname為字體名稱,必須與[lang].[fontname].exp[num].box中的名稱保持一致。<italic> 、<bold> 、<fixed> 、<serif>、 <fraktur>的取值為1或0,表示字體是否具有這些屬性。

    這里在樣本圖片所在目錄下創建一個名稱為font_properties的文件,用記事本打開,輸入以下下內容:

    ?

    [plain] view plaincopyprint?
  • font?0?0?0?0?0??
  • font 0 0 0 0 0

    這里全取值為0,表示字體不是粗體、斜體等等。 7.生成語言文件。在樣本圖片所在目錄下創建一個批處理文件,輸入如下內容。

    [plain] view plaincopyprint?
  • rem?執行改批處理前先要目錄下創建font_properties文件??
  • ??
  • 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.??
  • rem 執行改批處理前先要目錄下創建font_properties文件echo Run Tesseract for Training.. tesseract.exe num.font.exp0.tif num.font.exp0 nobatch box.trainecho Compute the Character Set.. unicharset_extractor.exe num.font.exp0.box mftraining -F font_properties -U unicharset -O num.unicharset num.font.exp0.trecho Clustering.. cntraining.exe num.font.exp0.trecho 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.

    將批處理通過命令行執行。執行后的結果如下:

    需確認打印結果中的Offset 1、3、4、5、13這些項不是-1。這樣,一個新的語言文件就生成了。

    num.traineddata便是最終生成的語言文件,將生成的num.traineddata拷貝到Tesseract-OCR-->tessdata目錄下??梢杂盟鼇磉M行字符識別了。

    ?

    使用訓練后的語言庫識別

    ?

    用訓練后的語言庫識別number.jpg文件,?打開命令行,定位到Tesseract-OCR目錄,輸入命令:

    ?

    [plain] view plaincopyprint?
  • tesseract.exe?number.jpg?result?-l?eng??
  • tesseract.exe number.jpg result -l eng

    識別結果如如圖所示,可以看到識別率提高了不少。通過自定義訓練樣本,可以進行圖形驗證碼、車牌號碼識別等。感興趣的朋友可以研究研究。

    轉載于:https://www.cnblogs.com/samlin/p/Tesseract-OCR.html

    總結

    以上是生活随笔為你收集整理的Tesseract-OCR 字符识别---样本训练 [转]的全部內容,希望文章能夠幫你解決所遇到的問題。

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