欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

opencv+tesseract實現(xiàn)驗證碼識別的示例

 更新時間:2022年06月28日 10:48:27   作者:peng_wei_kang  
本文主要介紹了opencv+tesseract實現(xiàn)驗證碼識別的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

一、需要識別的內(nèi)容

需要識別的驗證碼內(nèi)容如下  驗證碼下載下載地址。

二、直接調(diào)用tesseract來完成識別(識別率很差)

識別的圖片內(nèi)容為:

在window系統(tǒng)鐘打開cmd命令窗口,執(zhí)行識別命令如下:

tesseract.exe 01.png output.txt -l eng

識別結(jié)果為:519}       該識別準確率遠遠達不到預期

三、訓練數(shù)據(jù)樣本,提升識別率

1、下載10份樣本(樣本數(shù)量越多,識別率越高),然后通過jTessBoxEditor來進行樣本數(shù)據(jù)矯正(該步驟耗時較長)。

 2、打開 jTessBoxEditor,將所有的樣本數(shù)據(jù)生成一個總的tif文件(tif就是所有圖片的集合)。操作如下:

1)jTessBoxEditor->Tools->Merge TIFF

2 )全選所有的樣本文件,之后生成的tif命名為 jtbnum.font.exp0.tif

3)進行數(shù)據(jù)識別調(diào)整,如下圖:

 四、生成樣本庫字體

將所有的樣本識別內(nèi)容都調(diào)整正確后(調(diào)整的參數(shù)保存在jtbnum.font.exp0.box文件鐘),我們需要將我們生成的樣本文件封裝成我們的 jtbnum.traineddata 字體庫,生成方式如下:

1)創(chuàng)建 font_properties 文件,內(nèi)容為 font 0 0 0 0 0

2)在同級目錄創(chuàng)建 run.bat 文件 內(nèi)容如下

rem 執(zhí)行改批處理前先要目錄下創(chuàng)建font_properties文件  
  
echo Run Tesseract for Training..  
tesseract.exe jtbnum.font.exp0.tif jtbnum.font.exp0 nobatch box.train  
  
echo Compute the Character Set..  
unicharset_extractor.exe jtbnum.font.exp0.box  
mftraining -F font_properties -U unicharset -O jtbnum.unicharset jtbnum.font.exp0.tr  
  
echo Clustering..  
cntraining.exe jtbnum.font.exp0.tr  
  
echo Rename Files..  
 
del jtbnum.normproto
rename normproto jtbnum.normproto
 
del jtbnum.inttemp
rename inttemp jtbnum.inttemp
 
del jtbnum.pffmtable
rename pffmtable jtbnum.pffmtable
 
del jtbnum.shapetable
rename shapetable jtbnum.shapetable
  
echo Create Tessdata..  
combine_tessdata.exe jtbnum. 
 
pause

 3)雙擊執(zhí)行 run.bat 文件,系統(tǒng)執(zhí)行完成后,將會生成 jtbnum.traineddata 文件。

4)將 jtbnum.traineddata 拷貝到tesseract安裝目錄下的tessdata文件夾下。

5)測試識別率:

 識別的圖片內(nèi)容為:

tesseract.exe 01.png output.txt -l jtbnum

 識別結(jié)果為:51915       識別結(jié)果已經(jīng)很準確率,但是驗證碼圖片中的雜質(zhì)沒有清除,導致會識別出多余內(nèi)容來。

五、通過Opencv清除圖片的多余雜質(zhì)(Java實現(xiàn))

if(!hasLoad){
            System.load(opencvPath+"/build/java/x64/opencv_java440.dll");
            hasLoad = true;
        }
 
        byte [] bytes = Base64Utils.decodeFromString(base64);
        String path = savePath+"/"+System.currentTimeMillis()+".png";
        try {
            OutputStream outputStream = new FileOutputStream(new File(path));
            outputStream.write(bytes);
            outputStream.flush();
            outputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
 
        Mat image0 = Imgcodecs.imread(path);
        Mat image1 = new Mat();
        //灰度處理
        Imgproc.cvtColor(image0, image1, Imgproc.COLOR_BGR2GRAY);
        Imgproc.adaptiveThreshold(image1,image1,255,Imgproc.ADAPTIVE_THRESH_MEAN_C,Imgproc.THRESH_BINARY,11, 2);
        Core.bitwise_not(image1,image1);
        Mat kernel = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(2, 2), new Point(-1, -1));
        Mat temp = new Mat();
        Imgproc.erode(image1, temp, kernel);
        Imgproc.dilate(temp, temp, kernel);
        String newPath = path.substring(0,path.lastIndexOf(".")) +"_1.png";
        Imgcodecs.imwrite(newPath,temp);

圖片處理結(jié)果如下(雜質(zhì)已經(jīng)清除):

5)測試識別率:

 識別的圖片內(nèi)容為:

tesseract.exe 01.png output.txt -l jtbnum

 識別結(jié)果為:5191       識別已經(jīng)很精確

到此這篇關于opencv+tesseract實現(xiàn)驗證碼識別的示例的文章就介紹到這了,更多相關opencv tesseract 驗證碼識別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 使用pyinstaller逆向.pyc文件

    使用pyinstaller逆向.pyc文件

    這篇文章主要介紹了使用pyinstaller逆向.pyc文件,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • 根據(jù)DataFrame某一列的值來選擇具體的某一行方法

    根據(jù)DataFrame某一列的值來選擇具體的某一行方法

    今天小編就為大家分享一篇根據(jù)DataFrame某一列的值來選擇具體的某一行方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Python為何不支持switch語句原理詳解

    Python為何不支持switch語句原理詳解

    這篇文章主要介紹了Python為何不支持switch語句原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • Python實現(xiàn)消消樂小游戲

    Python實現(xiàn)消消樂小游戲

    這篇文章主要為大家詳細介紹了Python實現(xiàn)消消樂小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Python命令行定時任務自動化工作流程

    Python命令行定時任務自動化工作流程

    本文介紹如何使用Python編寫定時任務,以自動執(zhí)行命令行任務。您將學習如何安排定期的任務,處理任務結(jié)果,以及如何使用Python自動化工作流程,從而提高工作效率。無需手動執(zhí)行重復任務,Python幫您搞定
    2023-04-04
  • python實現(xiàn)批量注冊網(wǎng)站用戶的示例

    python實現(xiàn)批量注冊網(wǎng)站用戶的示例

    今天小編就為大家分享一篇python實現(xiàn)批量注冊網(wǎng)站用戶的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Pytorch用Tensorboard來觀察數(shù)據(jù)

    Pytorch用Tensorboard來觀察數(shù)據(jù)

    這篇文章主要介紹了Pytorch用Tensorboard來觀察數(shù)據(jù),上一篇文章我們講解了關于Pytorch?Dataset的數(shù)據(jù)處理,這篇我們就來講解觀察數(shù)據(jù),下面具體相關資料,需要的朋友可以參考一下,希望對你有所幫助
    2021-12-12
  • 淺析python 通⽤爬⾍和聚焦爬⾍

    淺析python 通⽤爬⾍和聚焦爬⾍

    這篇文章主要介紹了python 通⽤爬⾍和聚焦爬⾍的相關資料,幫助大家更好的了解和使用python 爬蟲,感興趣的朋友可以了解下
    2020-09-09
  • PyQt5組件讀取參數(shù)的實例

    PyQt5組件讀取參數(shù)的實例

    今天小編就為大家分享一篇PyQt5組件讀取參數(shù)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • Python實戰(zhàn)之實現(xiàn)簡易的學生選課系統(tǒng)

    Python實戰(zhàn)之實現(xiàn)簡易的學生選課系統(tǒng)

    又到了小伙伴們最喜歡的python實戰(zhàn)環(huán)節(jié),文中對實現(xiàn)簡易的學生選課系統(tǒng)作了非常詳細的代碼示例,對正在學習python的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05

最新評論