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合併工具進行合併。下載地址:
合併後的檔案如下:
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