Tesseract-OCR訓練實現對模糊身份證號碼的識別

      根據公司項目需求,需要通過掃描實現身份證號碼的提取,使用官方提供的識別庫,在正常情況下都能夠正確提取出身份證號碼,但是在身份證拍攝模糊的情況下,識別效果並不理想。根據需求,我接觸瞭解到Tesseract,它是一個開源的OCR(Optical Character Recognition,光學字符識別)引擎,可以識別多種格式的圖像文件並將其轉換成文本。接着通過進一步學習,訓練了一些模糊的身份證號碼樣本,提高了對模糊身份證號的識別準確度。

下面,我們將在Windows環境下安裝Tesseract實現對身份證號的識別及訓練工作。


1、Tesseract使用官方庫識別身份證號

  1.1  安裝Tesseract-OCR

    通過下載地址:http://code.google.com/p/tesseract-ocr/,下載安裝tesseract-ocr-setup-3.02.02.exe。安裝成功後會生成如下目錄:

            

  1.2  使用官方庫識別

    準備一張待識別的身份證號圖片test.jpg


    打開cmd.exe,進入到test.jpg文件目錄,執行:tesseract  test.jpg  output_test -l eng

【語法】:  tesseract imagename outputbase [-l lang] [-psm pagesegmode] [configfile…]

 imagename爲目標圖片文件名,需加格式後綴;outputbase是轉換結果文件名;lang是語言名稱(在Tesseract-OCR中  tessdata文件夾可看到以eng開頭的語言文件eng.traineddata),如不標-l eng則默認爲eng。

    在當前目錄下會生成output_test.txt文件

   

  對比發現,通過官方庫識別的結果並不理想,因此訓練自己的庫來完成識別。

2、Tesseract訓練自己的身份證號識別庫

  2.1 安裝jTessBoxEditor

  下載jTessBoxEditor,地址爲:https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/,解壓後放到Tesseract-OCR目錄下。這裏需要事先安裝了JRE。

  2.2 製作訓練樣本文件

  這裏製作了十張模糊化後的身份證號圖片,圖片格式爲tif/tiff格式


  2.3 合併樣本文件

  打開jTessBoxEditor,Tools->Merge TIFF,將上述樣本全部選上,合併保存爲num.font.exp0.tif。這裏通過這種方式合併可能會出現Couldn't Seek錯誤,可以通過下載TIF/TIFF合併工具進行合併。下載地址:http://download.csdn.net/download/u010782875/10033600

合併後的文件如下:


  2.4 字符矯正

  打開jTessBoxEditor,Box Editor ->Open,打開num.font.exp0.tif,各頁上字符值和相應的座標信息


  2.5 生成box文件

  將num.font.exp0.tif放入到一指定目錄,打開命令行切換到num.font.exp0.tif所在目錄,執行: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中,一定要注意格式。

  

  2.6 配置font_properties文件

  在上述文件夾中新建一個名爲font_properties的文本文件,內容爲:


【語法】:<fontname> <italic> <bold> <fixed> <serif> <fraktur>  

fontname爲字體名稱,italic爲斜體,bold爲黑體字,fixed爲默認字體,serif爲襯線字體,fraktur德文黑字體,1和0代表有和無,精細區分時可使用。

  2.7 生成.tr訓練文件

  在上述命令行界面執行:tesseract.exe num.font.exp0.tif num.font.exp0 nobatch box.train

  

  生成num.font.exp0.tr文件

  2.8 生成unicharset字符集文件

  接着執行:unicharset_extractor.exe num.font.exp0.box 

  

  生成unicharset文件

  2.9 生成shape文件

  執行:shapeclustering.exe -F font_properties.txt -U unicharset num.font.exp0.tr

  

  生成shapetable文件

  2.10 生成聚集字符特徵文件

  執行:mftraining.exe -F font_properties.txt -U unicharset -O unicharset num.font.exp0.tr

  

  生成inttemp、pffmtable文件

  2.11 生成字符正常化特徵文件

  執行:cntraining.exe num.font.exp0.tr 

  

  生成normproto文件

  2.12 更改文件名

  手動將生成的inttemp、normproto、pffmtable、shapetable、unicharset五個文件更改成如下文件名:

  

  2.13 合併訓練文件

  執行:combine_tessdata.exe num.

  

  生成num.traineddata文件(不要忘記指令後面的那個“.”),將該文件放到../Tesseract-OCR/tessdata目錄下進行接下來的測試

3、使用自己訓練的字符庫識別身份證號

 還是使用上面的測試圖片進行對比測試,在命令窗口執行如下指令:tesseract test.jpg output_test -l num

  

 這裏-l num就是使用了自己訓練的字符庫,打開生成的output_test.txt文件:

  

  

參考博客:http://www.cnblogs.com/cnlian/p/5765871.html

                    http://blog.csdn.net/yasi_xi/article/details/8763385

                    http://blog.csdn.net/gx_489587482/article/details/52686156

                    http://blog.csdn.net/why200981317/article/details/48265621


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章