【原創】利用騰訊和百度的AI接口識別驗證碼

  眾所周知,驗證碼在大部分的實際運用中是繞不開的問題,包括驗證,爬蟲,測試等等,然后解決驗證碼的方法也有不少,但大多數都會運用OCR。(這里說的驗證碼,是字符類型的驗證碼)

  目前要解決驗證碼,有以下幾種方法:

  1、用OCR工具,比如tesseract-ocr;

  2、利用各類語言編寫的識別庫;

  3、想方法繞過驗證碼,這種測試中運用的多;

  前些天看見騰訊和百度都在已經搞自己的 AI LAB(實際上他們很早就開始了,并且對開發者開放了不少接口,提供使用),AI LAB包含語音識別、文字識別、圖像識別,人臉識別、內容審核、數據法分析等等,然后也看到文字識別可以用來識別(字符)驗證碼,就想著能不能用文字識別的接口來識別驗證碼,也稱“在線OCR”。

  說著就動手實現了,剛好公司的系統后臺在登錄的時候有個驗證碼,于是就利用selenium框架寫了一個自動登錄系統后臺的python腳本,騰訊和百度的AI方法都可以實現了。

  首先是利用騰訊 AI 的文字識別方法(騰訊 AI:https://ai.qq.com/),選擇通用識別(https://ai.qq.com/product/ocr.shtml),查看技術文檔(https://ai.qq.com/doc/ocrgeneralocr.shtml),下載SDK(https://ai.qq.com/doc/sdk.shtml)(SDK只支持Python2,需要支持Python3的下載文章后面鏈接的代碼。),目前只支持PHP和Python。這里注意下,在使用接口之前,需要注冊成為開發者,創建應用獲得AppID、AppKey,后面會有用到。

  實現方法和思路是截取當前的驗證碼,然后將截取下來的驗證碼傳給OCR接口識別,待返回識別結果后,就將結果保存,顯示在當前窗口。以下是實現方法和具體步驟:

  1)、先訪問后臺網站,截取驗證碼;

  驗證碼需要截取保存,不要點擊,也不要刷新,不然每次請求登錄的驗證碼都會變化。

  

  2)、截取驗證碼之后,傳送給OCR接口;

  

  3)、在輸入框中輸入驗證碼;

  

  4)、這里需要用到的SDK,在后面的代碼鏈接下載查看。

  利用騰訊 AI 的文字識別方法就是這樣了,之后就是用百度 AI?的文字識別方法了。

  利用百度 AI 的文字識別方法(百度 AI:https://ai.baidu.com/),選擇通用文字識別(https://ai.baidu.com/tech/ocr/general),查看技術文檔(https://ai.baidu.com/docs#/OCR-API/top),下載SDK(https://ai.baidu.com/sdk#ocr),支持的語言要比騰訊多一些,這里選擇用Python實現。使用之前一樣要申請成為開發者,創建應用獲得Access Token(APP_ID,API_KEY,SECRET_KEY)。

  實現方法和前面利用騰訊?AI 一樣,截取和保存都是一樣的,不一樣的就是OCR接口傳參和方法不一樣,區別比較大。

  OCR驗證碼接口識別方法:

  

  以上就是利用騰訊和百度 AI?的文字識別在線OCR識別驗證碼的方法了,實現過程和方法不復雜,比本地安裝一些OCR軟件簡單多了,而且識別率和準確率也比本地化的OCR要高不少。

  騰訊和百度的?AI?接口目前都是免費使用的,不過在使用次數上,兩者有區別,但還是能夠完全保證日常使用的,下面的鏈接的是實現的代碼,IP地址和開發者賬號已做了模糊化處理。

  (PS.注意騰訊 Ai 提供的SDK只支持Python2,鏈接下的代碼已修改為Python3實現。百度的SDK支持Python3,不需要修改。)

  以上內容屬于原創,轉載需授權,有問題可留言。

轉載于:https://www.cnblogs.com/Start12/p/9209839.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/538431.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538431.shtml
英文地址,請注明出處:http://en.pswp.cn/news/538431.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在java中5 % 3_Java基礎5

Java多線程:進程:進行中的程序線程:就是進程中一個負責程序執行的控制單元(執行單元)一個進程中可以多執行路徑,稱之為多線程一個進程至少一個線程開啟多個線程是為了同時運行多部分代碼每個線程都有自己運行的內容,這個內容成為線程要執行的任務多線程的…

scala中:: , +:, :+, :::, +++的區別

原文鏈接:https://segmentfault.com/a/1190000005083578 ------------------------------------------------------------- 4種操作符的區別和聯系 :: 該方法被稱為cons,意為構造,向隊列的頭部追加數據,創造新的列表。用法為 x::…

python包管理機制_Go 1.5之前的多種包管理機制簡介(

在 Go 語言中,我們可以使用go get命令安裝遠程倉庫中托管的代碼,不同于 Ruby Gem、pypi 等集中式的包管理機制, Go 語言的包管理系統是去中心化的。簡單來講,go get命令支持任何一個位置托管的 Git 或 Mercurial 的倉庫&#xff0…

nc命令簡介

nc介紹 ncat/nc 既是一個端口掃描工具,也是一款安全工具,還能是一款監測工具,甚至可以做為一個簡單的 TCP 代理。 在大多數 Debian 發行版中,nc 是默認可用的,它會在安裝系統的過程中自動被安裝。 但是在 CentOS 7 / R…

java時間日期工具類_java工具類--日期相關;

日期相關Date類1.通常使用的是java.util包2.導包 拿來使用 構建對象3.通常使用無參數的構造方法 或者帶long構造方法4.Date類中常用的方法before(); after();setTime() getTime()compareTo(); -1 1 0;5.可以處理一個Date類型的格式DateFormat類1.包java.text 需要導包使用2.此類…

/* compiled code */ ?

原因:這是所用的ide自帶了反編譯工具,反編譯的。不是具體的源碼 具體的源碼需要手動關聯源碼包

python判斷矩陣是否對稱_Python創建對稱矩陣的方法示例【基于numpy模塊】

本文實例講述了Python創建對稱矩陣的方法。分享給大家供大家參考,具體如下:對稱(實對稱)矩陣也即:step 1:創建一個方陣>>> import numpy as np>>> X np.random.rand(5**2).reshape(5, 5)>>> Xarray([…

重新學習Ubuntu -- 截圖軟件的選擇和安裝

前面兩篇完成了:系統的安裝和系統安裝后的優化。 截圖軟件 shutterflameshot 這個根據自己原來的學習經驗和網上的相關資料來完成截圖軟件的安裝。參照文章: shutter :Ubuntu 18.04/LinuxMint 19中啟用Shutter編輯功能 flameshot:Flameshot:你…

Scala-Actor并行wordcount

scala-2.10.6 文件: "d://word.txt", "d://word.log" 文件內容: 代碼: package cn.zengmg.day26.actorimport scala.actors.{Actor, Future} import scala.collection.mutable.ListBuffer import scala.io.Sourcecase c…

小程序測試用例模板_微信小程序樣式:高質量小程序樣式模板大全

新手想要制作出美觀的小程序,你需要多參考一些好看的微信小程序樣式。今天就帶大家分析幾個高質量小程序的樣式,看看別是怎么把小程序做得美觀又吸引人的:1.電商小程序樣式電商小程序首頁一般是按照“圖片banner - 快捷按鈕 - 商品及分類”的…

Sql Server 2016數據庫生成帶數據的腳本

步驟:右鍵點擊對應數據庫->任務->生成腳本 在彈出的會話框中選擇需要的對象,點擊下一步,在設置和編寫腳本選項中,點開高級按鈕(如圖)選擇架構和數據點擊確定就可以了。 提醒:如果你在數據…

深入理解Scala的隱式轉換系統

原文鏈接:http://www.cnblogs.com/MOBIN/p/5351900.html----------------------------------------------摘要:通過隱式轉換,程序員可以在編寫Scala程序時故意漏掉一些信息,讓編譯器去嘗試在編譯期間自動推導出這些信息來&#xf…

python123輸出最大值_Python:運行另一列的最大值?

我有一個像這樣的數據幀,它跟蹤特定項(ID)的值隨時間的變化:mytimenp.tile( np.arange(0,10) , 2 )myidsnp.repeat( [123,456], [10,10] )myvaluesnp.random.random_integers(20,30,10*2)dfpd.DataFrame()df[myids]myidsdf[mytime]mytimedf[myvalues]myv…

Java連接MySQL

2019獨角獸企業重金招聘Python工程師標準>>> <1> 在navicat中創建一個MySQL連接&#xff0c;填寫連接名和密碼&#xff08;密碼為你配置MySQL設置的密碼&#xff09; <2> 在該連接中新建一個數據庫&#xff0c;填寫數據庫名。字符集選擇&#xff08;gb-…

ssm實訓報告心得_Java開發學習心得(一):SSM環境搭建

Java開發學習心得&#xff08;一&#xff09;&#xff1a;SSM環境搭建有一點.NET的開發基礎&#xff0c;在學校學過基礎語法&#xff0c;對JAVA有點興趣&#xff0c;就簡單學習了一下&#xff0c;記錄一下從哪些方面入手的&#xff0c;暫時不打算深入到原理方面&#xff0c;先簡…

Java中boolean類型占用多少個字節

原文地址&#xff1a;http://www.cnblogs.com/wangtianze/p/6690665.html?utm_sourceitdadao&utm_mediumreferral ----------------------- 為什么要問這個問題&#xff0c;首先在Java中定義的八種基本數據類型中&#xff0c;除了其它七種類型都有明確的內存占用字節數外…

java虛引用作用_深入理解Java中的引用(二)——強軟弱虛引用

深入理解Java中的引用(二)——強軟弱虛引用在上一篇文章中介紹了Java的Reference類&#xff0c;本篇文章介紹他的四個子類&#xff1a;強引用、軟引用、弱引用、虛引用。強引用(StrongReference)強引用是我們在代碼中最普通的引用。示例代碼如下&#xff1a;Object o new Obje…

SQL查詢表的列名

SELECT COLUMN_NAME FROM DBA_TAB_COLUMNS WHERE TABLE_NAME DT4_JOB_CHECK_MATRIX;SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE TABLE_NAME DT4_JOB_CHECK_MATRIX;SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME DT4_JOB_CHECK_MATRIX;

java老鳥123怎么樣_java入門123——一個老鳥的java學習心得.doc

java入門123——一個老鳥的java學習心得java入門123——一個老鳥的java學習心得篇一&#xff1a;java初學者學習心得學習Java心得體會學習了一學期的Java課程,覺得是該總結自己的心得體會了。開始學習任何一門課(包括java)&#xff0c;興趣最重要。一直覺得自己在學計算機編程語…

ruby 爬蟲爬取拉鉤網職位信息,產生詞云報告

思路&#xff1a;1.獲取拉勾網搜索到職位的頁數 2.調用接口獲取職位id 3.根據職位id訪問頁面&#xff0c;匹配出關鍵字 url訪問采用unirest&#xff0c;由于拉鉤反爬蟲&#xff0c;短時間內頻繁訪問會被限制訪問&#xff0c;所以沒有采用多線程&#xff0c;而且每個頁面訪問時間…