成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

百度圖片識(shí)別orc實(shí)現(xiàn)普通驗(yàn)證碼識(shí)別

yibinnn / 2785人閱讀

摘要:在爬取網(wǎng)站的時(shí)候都遇到過(guò)驗(yàn)證碼,那么我們有什么方法讓程序自動(dòng)的識(shí)別驗(yàn)證碼呢其實(shí)網(wǎng)上已有很多打碼平臺(tái),但是這些都是需要。但對(duì)于僅僅爬取點(diǎn)數(shù)據(jù)而接入打碼平臺(tái)實(shí)屬浪費(fèi)。所以百度免費(fèi)正好可以利用。

在爬取網(wǎng)站的時(shí)候都遇到過(guò)驗(yàn)證碼,那么我們有什么方法讓程序自動(dòng)的識(shí)別驗(yàn)證碼呢?其實(shí)網(wǎng)上已有很多打碼平臺(tái),但是這些都是需要money。但對(duì)于僅僅爬取點(diǎn)數(shù)據(jù)而接入打碼平臺(tái)實(shí)屬浪費(fèi)。所以百度免費(fèi)orc正好可以利用。(每天500次免費(fèi))

1、注冊(cè)百度賬號(hào)、百度云管理中心創(chuàng)建應(yīng)用、生成AppKey、SecretKey(程序調(diào)用接口是要生成access_token)

2、利用AppKey、SecretKey生成access_token
向授權(quán)服務(wù)地址https://aip.baidubce.com/oaut...發(fā)送請(qǐng)求(推薦使用POST)并在URL中帶上以下參數(shù):
grant_type: 必須參數(shù),固定為client_credentials;
client_id: 必須參數(shù),應(yīng)用的API Key;
client_secret: 必須參數(shù),應(yīng)用的Secret Key
代碼如下:

/**
 1. 獲取AccessToken
 2. APIKey:
 3. SecretKey:
 4. @return
 */
public static String getAccessToken() {
    String accessToken = "";
    HttpRequestData httpRequestData = new HttpRequestData();
    HashMap params = new HashMap<>();
    params.put("grant_type", "client_credentials");
    params.put("client_id", "你的APIKey");
    params.put("client_secret", "SecretKey");
    httpRequestData.setRequestMethod("GET");
    httpRequestData.setParams(params);
    httpRequestData.setRequestUrl("https://aip.baidubce.com/oauth/2.0/token");
    HttpResponse response = HttpClientUtils.execute(httpRequestData);
    String json = "";
    try {
        json = IOUtils.toString(response.getEntity().getContent());
    } catch (IOException e) {
        e.printStackTrace();
    }
    if (response.getStatusLine().getStatusCode() == 200) {
        JSONObject jsonObject = JSONObject.parseObject(json);
        if (jsonObject != null && !jsonObject.isEmpty()) {
            accessToken = jsonObject.getString("access_token");
        }
    }
    return accessToken;
}

3、請(qǐng)求百度orc通用文字識(shí)別API(下面以百度通用識(shí)別api識(shí)別為例)
請(qǐng)求API的URL https://aip.baidubce.com/rest...
請(qǐng)求方法 POST
請(qǐng)求URL參數(shù) access_token
請(qǐng)求頭 (Header) Content-Type application/x-www-form-urlencoded
Body中放置請(qǐng)求參數(shù),主要參數(shù)詳情如下:

image : 圖像數(shù)據(jù),base64編碼,要求base64編碼后大小不超過(guò)4M,最短邊至少15px,最長(zhǎng)邊最大4096px,支持jpg/png/bmp格式,當(dāng)image字段存在時(shí)url字段失效

url : 圖片完整URL,URL長(zhǎng)度不超過(guò)1024字節(jié),URL對(duì)應(yīng)的圖片base64編碼后大小不超過(guò)4M,最短邊至少15px,最長(zhǎng)邊最大4096px,支持jpg/png/bmp格式,當(dāng)image字段存在時(shí)url字段失效

/**
 * 獲取識(shí)別驗(yàn)證碼
 * @param imageUrl
 * @return
 */
public static String OCRVCode(String imageUrl){
    String VCode = "";

    if (StringUtils.isBlank(ACCESS_TOKEN)) {
        logger.error("accessToken為空");
        return VCode;
    }
    OCRUrl = OCRUrl + "?access_token=" + ACCESS_TOKEN;

    HashMap headers = new HashMap<>();
    headers.put("Content-Type", "application/x-www-form-urlencoded");

    HashMap params = new HashMap<>();
    imageUrl = ImageBase64ToStringUtils.imageToStringByBase64(imageUrl);
    params.put("image", imageUrl);

    HttpRequestData httpRequestData = new HttpRequestData();
    httpRequestData.setHeaders(headers);
    httpRequestData.setRequestMethod("post");
    httpRequestData.setParams(params);
    httpRequestData.setRequestUrl(OCRUrl);
    HttpResponse response = HttpClientUtils.execute(httpRequestData);
    String json = "";
    if (response.getStatusLine().getStatusCode() == 200) {
        try {
            json = IOUtils.toString(response.getEntity().getContent());
            JSONObject jsonObject = JSONObject.parseObject(json);
            JSONArray wordsResult = jsonObject.getJSONArray("words_result");
            VCode = wordsResult.getJSONObject(0).getString("words");
        } catch (IOException e) {
            logger.error("請(qǐng)求識(shí)別失??!", e);
        }
    }
    return VCode;
}

對(duì)圖片進(jìn)行base64編碼字符

/**
 * 將本地圖片進(jìn)行Base64位編碼
 * @param imageFile
 * @return
 */
public static String encodeImgageToBase64(String imageFile) {
    // 其進(jìn)行Base64編碼處理
    byte[] data = null;
    // 讀取圖片字節(jié)數(shù)組
    try {
        InputStream in = new FileInputStream(imageFile);
        data = new byte[in.available()];
        in.read(data);
        in.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

    // 對(duì)字節(jié)數(shù)組Base64編碼
    return Base64Util.encode(data);
}
4、返回結(jié)果以json方式返回
{
    "log_id": 2471272194,
        "words_result_num": 2,
        "words_result": 
[
    {"words": " TSINGTAO"},
    {"words": "青島睥酒"}
]
}

項(xiàng)目github地址:https://github.com/xwlmdd/ipP...
注:orc圖片識(shí)別模塊在這個(gè)項(xiàng)目里的一個(gè)工具類

我的公眾號(hào),喜歡的朋友可以關(guān)注哦

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/70312.html

相關(guān)文章

  • node識(shí)別驗(yàn)證

    摘要:驗(yàn)證碼的識(shí)別成功率跟圖片質(zhì)量關(guān)系密切,一般拿到后的驗(yàn)證碼都得經(jīng)過(guò)灰度化,二值化,去噪,利用就可以很方便的做到。 了解驗(yàn)證碼 什么是驗(yàn)證碼? 所謂驗(yàn)證碼,就是將一串隨機(jī)產(chǎn)生的數(shù)字或符號(hào),生成一幅圖片,圖片里加上一些干擾象素(防止OCR),由用戶肉眼識(shí)別其中的驗(yàn)證碼信息,輸入表單提交網(wǎng)站驗(yàn)證,驗(yàn)證成功后才能使用某項(xiàng)功能,通俗說(shuō)就是一種區(qū)分用戶是計(jì)算機(jī)和人的公共全自動(dòng)程序 驗(yàn)證碼的作用 可以...

    levy9527 評(píng)論0 收藏0
  • 14、web爬蟲(chóng)講解2—Scrapy框架爬蟲(chóng)—豆瓣登錄與利用打接口實(shí)現(xiàn)自動(dòng)識(shí)別驗(yàn)證

    摘要:登錄開(kāi)發(fā)者后臺(tái)我的軟件獲得軟件軟件密鑰注意這里是普通會(huì)員賬號(hào),不是開(kāi)發(fā)者賬號(hào),注冊(cè)地址開(kāi)發(fā)者可以聯(lián)系客服領(lǐng)取免費(fèi)調(diào)試題分請(qǐng)先設(shè)置用戶名密碼一鍵識(shí)別函數(shù)正在一鍵識(shí)別例表示位字母數(shù)字,不同類型收費(fèi)不同。請(qǐng)準(zhǔn)確填寫,否則影響識(shí)別率。 【百度云搜索:http://www.bdyss.cn】 【搜網(wǎng)盤:http://www.swpan.cn】 打碼接口文件 # -*- coding: cp936...

    wemall 評(píng)論0 收藏0
  • OCR識(shí)別驗(yàn)證

    摘要:識(shí)別網(wǎng)站驗(yàn)證碼詳見(jiàn)維基百科或者百度百科識(shí)別的驗(yàn)證碼原理采集一批驗(yàn)證碼,根據(jù)圖片特點(diǎn)進(jìn)行初步處理二值化灰度化濾波降噪等處理然后分割圖片,旋轉(zhuǎn)圖片,模板選取,訓(xùn)練算法,讓它更準(zhǔn)確。 最近在爬某網(wǎng)站,老是蹦出來(lái)驗(yàn)證碼,就想著找個(gè)OCR破了這個(gè)驗(yàn)證碼,然后就開(kāi)始了OCR探索之旅。 首先簡(jiǎn)單說(shuō)一下什么是OCR OCR是(Optical Character Recognition,光學(xué)字符識(shí)別)的...

    Yangyang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<