成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

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

yibinnn / 2865人閱讀

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

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

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

2、利用AppKey、SecretKey生成access_token
向授權(quán)服務(wù)地址https://aip.baidubce.com/oaut...發(fā)送請求(推薦使用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、請求百度orc通用文字識別API(下面以百度通用識別api識別為例)
請求API的URL https://aip.baidubce.com/rest...
請求方法 POST
請求URL參數(shù) access_token
請求頭 (Header) Content-Type application/x-www-form-urlencoded
Body中放置請求參數(shù),主要參數(shù)詳情如下:

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

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

/**
 * 獲取識別驗證碼
 * @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("請求識別失??!", e);
        }
    }
    return VCode;
}

對圖片進行base64編碼字符

/**
 * 將本地圖片進行Base64位編碼
 * @param imageFile
 * @return
 */
public static String encodeImgageToBase64(String imageFile) {
    // 其進行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();
    }

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

項目github地址:https://github.com/xwlmdd/ipP...
注:orc圖片識別模塊在這個項目里的一個工具類

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

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

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/70312.html

相關(guān)文章

  • node識別驗證

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

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

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

    wemall 評論0 收藏0
  • OCR識別驗證

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

    Yangyang 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<