最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

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

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

識別結(jié)果為:519}       該識別準(zhǔn)確率遠(yuǎn)遠(yuǎn)達(dá)不到預(yù)期

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

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

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

1)jTessBoxEditor->Tools->Merge TIFF

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

3)進(jìn)行數(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)確率,但是驗證碼圖片中的雜質(zhì)沒有清除,導(dǎo)致會識別出多余內(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)很精確

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

相關(guān)文章

  • 舉例簡單講解Python中的數(shù)據(jù)存儲模塊shelve的用法

    舉例簡單講解Python中的數(shù)據(jù)存儲模塊shelve的用法

    這篇文章主要介紹了舉例簡單講解Python中的數(shù)據(jù)存儲模塊shelve的用法,shelveshelve模塊與pickle模塊的功能相近,比pickle用起來更為簡單,需要的朋友可以參考下
    2016-03-03
  • 使用Python實現(xiàn)查找PDF中的指定文本并高亮顯示

    使用Python實現(xiàn)查找PDF中的指定文本并高亮顯示

    在處理大量PDF文檔時,有時我們需要快速找到特定的文本信息,本文將提供三個Python示例來幫助你在PDF文件中快速查找并高亮指定的文本,希望對大家有所幫助
    2024-03-03
  • python安裝dlib庫報錯問題及解決方法

    python安裝dlib庫報錯問題及解決方法

    這篇文章主要介紹了python安裝dlib庫報錯問題及解決方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • 教你如何利用python進(jìn)行數(shù)值分析

    教你如何利用python進(jìn)行數(shù)值分析

    今天教大家如何利用python進(jìn)行數(shù)值分析,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴們很有幫助,需要的朋友可以參考下
    2021-06-06
  • Python異常模塊traceback用法實例分析

    Python異常模塊traceback用法實例分析

    這篇文章主要介紹了Python異常模塊traceback用法,結(jié)合實例形式分析了Python異常模塊traceback的基本功能、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2019-10-10
  • Python大數(shù)據(jù)之從網(wǎng)頁上爬取數(shù)據(jù)的方法詳解

    Python大數(shù)據(jù)之從網(wǎng)頁上爬取數(shù)據(jù)的方法詳解

    這篇文章主要介紹了Python大數(shù)據(jù)之從網(wǎng)頁上爬取數(shù)據(jù)的方法,結(jié)合實例形式詳細(xì)分析了Python爬蟲爬取網(wǎng)頁數(shù)據(jù)的相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • Python 轉(zhuǎn)換文本編碼實現(xiàn)解析

    Python 轉(zhuǎn)換文本編碼實現(xiàn)解析

    這篇文章主要介紹了Python 轉(zhuǎn)換文本編碼實現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值
    2019-08-08
  • django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)問題的解決

    django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t e

    這篇文章主要給大家介紹了關(guān)于執(zhí)行python manage.py migrate時報錯:django.db.utils.ProgrammingError: (1146, "Table 'test.model_student' doesn't exist" )問題的解決方法,文中將解決的方法介紹的非常詳細(xì),需要的朋友可以參考下
    2018-07-07
  • Python機(jī)器學(xué)習(xí)庫scikit-learn使用詳解

    Python機(jī)器學(xué)習(xí)庫scikit-learn使用詳解

    scikit-learn是Python中最流行的機(jī)器學(xué)習(xí)庫之一,它提供了各種各樣的機(jī)器學(xué)習(xí)算法和工具,包括分類、回歸、聚類、降維等
    2023-03-03
  • Python何時應(yīng)該使用Lambda函數(shù)

    Python何時應(yīng)該使用Lambda函數(shù)

    這篇文章主要介紹了Python何時應(yīng)該使用Lambda函數(shù),Python 中定義函數(shù)有兩種方法,一種是用常規(guī)方式 def 定義,函數(shù)要指定名字,第二種是用 lambda 定義,不需要指定名字,稱為 Lambda 函數(shù),需要的朋友可以參考下
    2019-07-07

最新評論

红河县| 徐水县| 富平县| 禄丰县| 临汾市| 永定县| 西安市| 凤凰县| 岑巩县| 土默特左旗| 澎湖县| 静安区| 利辛县| 内江市| 灵川县| 新丰县| 正阳县| 阳山县| 公安县| 浦江县| 汶川县| 确山县| 余江县| 呼伦贝尔市| 运城市| 靖边县| 乌苏市| 镇远县| 政和县| 海淀区| 榆中县| 兴宁市| 全椒县| 余姚市| 永靖县| 中西区| 建水县| 平湖市| 南部县| 双辽市| 武胜县|