1. 程式人生 > >Tesseract-OCR訓練實現對模糊身份證號碼的識別

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

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

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

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

1.1  安裝Tesseract-OCR

            

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

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檔案:

  

相關推薦

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

      根據公司專案需求,需要通過掃描實現身份證號碼的提取,使用官方提供的識別庫,在正常情況下都能夠正確提取出身份證號碼,但是在身份證拍攝模糊的情況下,識別效果並不理想。根據需求,我接觸瞭解到Tesseract,它是一個開源的OCR(Optical Character

Tesseract-OCR 訓練教程(一)

MF 根據 echo 實際應用 temp sse 自己 文件 替換 實際應用中[font]替換為你自己的字體名,比如newfont、hehe等 1.根據tif生成box文件(位置寬高等信息)tesseract [font].font.exp0.tif [font].font

tesseract-ocr訓練

參考文件: http://my.oschina.net/lixinspace/blog/60124 http://blog.csdn.net/shuzui1985/article/details/8188993 https://code.google.com/p/tesseract-oc

詳解正則表示式實現二代身份證號碼驗證

最近專案需要對身份證進行比較合理的篩選,並不想用到第三方介面,所以寫了個方法: 包括支援身份證號合法性驗證, 支援18位身份證號,支援地址編碼、出生日期、校驗位驗證. 基本上這樣就可以了. IdCodeValid:function(code){ //身份證號合法性驗證 //支援15位和18位

正則實現二代身份證號碼驗證詳解

最近專案需要對身份證進行比較合理的篩選,並不想用到第三方介面,所以寫了個方法: 包括支援身份證號合法性驗證, 支援18位身份證號,支援地址編碼、出生日期、校驗位驗證. 基本上這樣就可以了. IdCo

[python]Tesseract OCR訓練

因為工作中需要自動的識別驗證碼,起初,我們採用市面上的打碼服務,可是隨著量越來越大,打碼服務給我們帶來了很大的成本。經過觀察,有很大一部分的驗證碼還是比較簡單的,因此我們準備自己研發一個驗證碼識別服務,用來識別簡單的驗證碼。 經過本人調研(其實就是google一頓亂

身份證號碼識別

       我們的錄單系統中,除了上傳身份證外,還需要手動填寫身份證和銀行卡號,特別是銀行卡號,那些凹凸效果和特殊字型實在是人眼不友好的,之前系統老的訂單中不少卡號輸入錯誤的。先看下身份證識別。 對於身份證內容的識別,輸入OCR技術,有一些收費和開源的實現。          開源實現中,比較著名的是t

iOS之身份證號碼識別

##Begin 這裡使用到兩個C++的庫 OpenCV Tesseract OpenCV在這裡實現影象處理,Tesseract在這裡實現數字識別 先上效果圖:隱私打碼謝謝 ###0x00 獲取視訊流 iOS裡獲取視訊流比較簡單,當然OpenCV裡也有這功能,這裡只說前一種。大家可以直接搜 

JAVA識別身份證號碼,H5識別身份證號碼tesseract-ocr識別(二)

背景介紹 上一篇博文介紹瞭如何使用JAVA識別身份證號碼,假設在截取了身份證號碼資訊的情況下,這一篇博文主要討論一下思路吧,技術方面都是大家會的。 思路分析 H5拍照上傳 —> 服務端擷取身份證號碼 —–> 識別號碼 —–>

Tika結合Tesseract-OCR 實現光學漢字識別(簡體、宋體的識別率百分之百)—附Java原始碼實現及真實測試資料和訓練集下載地址

   OCR(Optical character recognition) —— 光學文字識別,是影象處理的一個重要分支,中文的識別具有一定挑戰性,特別是手寫體和草書的識別,是重要和熱門的科學研究方向。可惜國內的科研院所,基本沒有大量的高識別率的訓練集&mdash

Java實現身份證號碼驗證源碼分享

分隔 toc bst nbsp port birt random exti 一位數 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar;

使用 tesseract-ocr生成訓練庫全部指令

rain pen 修改 sha works 文件 conf har charset coding:utf-8 import copyfrom PIL import Image,ImageEnhance im = Image.open(‘d:/workspace/captch

mysql身份證號碼進行脫敏處理

select * from test 後四位脫敏 select name, insert(id_number,15,18,'****') as '身份證號' from test   中間6位脫敏 select name, insert(id_number,

Python 實現判斷身份證號碼的有效性

import re def check_id_card(id_card): errors = ['驗證通過!', '身份證號碼位數不對!', '身份證號碼出生日期超出範圍或含有非法字元!', '身份證號碼校驗錯誤!', '身份證地區非法!'] area = {"11": "北京"

tesseract-ocr使用以及訓練方法

本人最近在做字元識別,所以自行在網上尋找方法,接觸到tesseract,自己按照網上方法做的時候,也遇到一些問題,解決了一些。所以我決定寫下我第一個部落格,一是方便自己以後檢視,更新學習。二是方便和網友交流學習。 Tesseract介紹          Tesserac

Tesseract-OCR識別中文與訓練字型檔例項

關於中文的識別,效果比較好而且開源的應該就是Tesseract-OCR了,所以自己親身試用一下,分享到部落格讓有同樣興趣的人少走彎路。 文中所用到的身份證圖片資源是百度找的,如有侵權可聯絡我刪除。 一、準備工作 1、下載Tesseract-OCR引擎,注意要3.0以

Tesseract-OCR 在烏班圖下訓練教程

一、Tesseract訓練 1.下載Tesseract-OCR(相關版本自行選擇)     這個就不多說了,可以百度一下。 2.下載jTessBoxEditor(執行環境為java虛擬機器)     下載百度下載,有很多。開啟資料夾,目錄如下。 把檔案下載到

python實現caffe的訓練,初始權重訓練和繼續訓練

1、直接訓練 直接訓練比較簡單,幾行程式碼就可以搞定 import caffe caffe.set_device(0) caffe.set_mode_gpu() #solver root caffe_root = 'D:/caffe-ssd-micros

java中實現list的模糊查詢

比如我有下面這樣一個List,裡面存放的是多個Employee物件。然後我想對這個List進行按照Employee物件的名字進行模糊查詢。有什麼好的解決方案麼?比如我輸入的查詢條件為“wang”,那麼應該返回只包含employee1的List列表。 List list = new ArrayList(

基於Eclipse下的 tesseract -OCR實現圖片文字識別過程簡單介紹

前言:最近忙於考研複習,好久沒有敲程式碼了,本人目前只是學生,寫部落格的目的只是為了記錄自己的學習過程,當然,如果能為他人提供一些幫助,那更好了。 一.Tesseract 簡介 Tesseract 是Ray Smith 在1985 - 1995年間在惠普布里斯托實驗室開發的一個ocr引擎(O