國(guó)稅發(fā)票查驗(yàn)的驗(yàn)證碼識(shí)別率壟斷了2年杀狡,目前識(shí)別率97.5%,從未被超越酪夷。
測(cè)試接口
識(shí)別速度如上圖所示5毫秒左右榴啸,機(jī)器配置如下圖:
可見,低配1核CPU足以支撐業(yè)務(wù)日調(diào)用1.7千萬(wàn)級(jí)別的負(fù)載調(diào)用晚岭,加之識(shí)別率一直是全網(wǎng)最高鸥印,業(yè)內(nèi)不少頭部的財(cái)稅服務(wù)提供商都是使用筆者的版本,因保密協(xié)議不得透露合作關(guān)系腥例,在此不舉例辅甥,畢竟大多數(shù)公司都會(huì)說(shuō)自己并非使用爬蟲技術(shù)實(shí)現(xiàn)查驗(yàn)功能,行內(nèi)人應(yīng)該都知道的燎竖,可自行查證。敢在合同上寫下識(shí)別率指標(biāo)的不存在一絲絲水分要销。
測(cè)試地址:http://152.136.207.29:19812/preview?model_name=TAX
使用方法本篇博客就不贅述了构回,從官網(wǎng)保存驗(yàn)證碼原圖,選擇需要識(shí)別的顏色疏咐,上傳圖片識(shí)別即可纤掸。
本接口防止白嫖設(shè)立了一定的風(fēng)控,如有商業(yè)合作意愿可聯(lián)系本人QQ(27009583)或合伙人QQ(1095085167)浑塞,獲取文本接口測(cè)試借跪。
發(fā)票查驗(yàn)服務(wù)
提供全票種秒查詢的服務(wù),查驗(yàn)服務(wù)若有商業(yè)合作可以聯(lián)系我的合伙人酌壕√统睿可為高端用戶提供毫秒級(jí)的查驗(yàn)效率歇由,快至200毫秒以內(nèi)(光這個(gè)200基本上沒有對(duì)手,需要聯(lián)系合伙人QQ:1095085167果港,才提供測(cè)試)可高速并發(fā)(依賴高質(zhì)代理IP)沦泌,搭配97.5%識(shí)別率驗(yàn)證碼識(shí)別服務(wù),
連續(xù)查驗(yàn)失敗的概率低至10億分之9辛掠,可以說(shuō)失敗率為0谢谦,大型銀行年查驗(yàn)數(shù)大約千萬(wàn)量級(jí),換算一下大約100年中將發(fā)生9次查驗(yàn)失敗萝衩。穩(wěn)定性不用多說(shuō)回挽,實(shí)力在這里,放馬過(guò)來(lái)測(cè)試比對(duì)猩谊。
目標(biāo)客戶:大型財(cái)稅公司首選千劈,或者想一躍成為行業(yè)頭部的公司首選,可直接對(duì)標(biāo)市面上的任何一家公司的查驗(yàn)服務(wù)预柒,言盡于此队塘。不喜猶豫不決拖拖拉拉的客戶,加了好友不回消息的直接拉黑宜鸯,屌絲勿擾憔古。
6.19 更新(訓(xùn)練和部署源碼+JS逆向思路)
有人說(shuō)我文章沒有干貨只有思路,這里我分享一下源碼淋袖,訓(xùn)練及部署的教程:
https://blog.csdn.net/kerlomz/article/details/86706542
至于國(guó)稅總局的發(fā)票查驗(yàn)平臺(tái)JS這塊的逆向可以參考:
https://blog.csdn.net/qq_35228149/article/details/106818057
識(shí)別思路
首先有幾條道路可以通向羅馬鸿市,這里不分先后優(yōu)劣一一講述。
-
顏色提取的思路即碗,可以采用HSV/K-means聚類進(jìn)行顏色的分離提妊媲椤:效果如下:
1.png
弊端顯而易見,會(huì)有較大的特征丟失剥懒,識(shí)別率有較大的提升瓶頸内舟,經(jīng)過(guò)測(cè)試,中英文+漢字的識(shí)別率在90%左右初橘。
-
不分離顏色的思路验游,該方案有兩種處理方法:
(1)同時(shí)預(yù)測(cè)顏色和字符內(nèi)容,這種方法看起來(lái)比較正統(tǒng)保檐,但是成本較高耕蝉,需要標(biāo)注每張圖的顏色和字符內(nèi)容,這個(gè)要求有多高呢夜只,一般的打碼平臺(tái)是無(wú)法提供這樣的結(jié)果的垒在,打碼平臺(tái)只返回對(duì)應(yīng)顏色的內(nèi)容,只能人工標(biāo)注扔亥,那么需要多少樣本呢场躯?筆者訓(xùn)練的識(shí)別率98的模型用了100w左右的樣本谈为。一張這樣的樣本標(biāo)注假設(shè)需要0.1元,那么100w樣本需要10w標(biāo)注費(fèi)用推盛,假設(shè)0.01元峦阁,也要1w的標(biāo)注費(fèi)用。但是驗(yàn)證碼高質(zhì)量的人工標(biāo)注幾乎是不存在的耘成,因?yàn)楹芏鄻颖纠莆簦搜鄣淖R(shí)別率是不如機(jī)器的,總體標(biāo)注的準(zhǔn)確率大概也只能在85左右瘪菌∪龌幔看起來(lái)并不可取,有一種節(jié)約成本的辦法师妙,可以通過(guò)算法生成樣本诵肛,但是呢,生成的識(shí)別率英文數(shù)字還可以默穴,中文的識(shí)別率就低的可憐了怔檩。附上生成方法:http://www.reibang.com/p/da1b972e24f2
(2)每個(gè)顏色分別訓(xùn)練一個(gè)模型, 這種方法看起來(lái)有點(diǎn)蠢蓄诽,但是確實(shí)比較合適有效的辦法了薛训,可以輕松借助打碼平臺(tái)的返回結(jié)果標(biāo)注樣本。需要的顏色可以通過(guò)官網(wǎng)提供的字段取到仑氛,返回結(jié)果通過(guò)打碼平臺(tái)識(shí)別得到乙埃,這樣一組合,樣本就有了锯岖。這種方法的成本相對(duì)較低介袜,樣本數(shù)不變的前提下,打碼價(jià)格低于人工標(biāo)注的成本出吹。但是筆者訓(xùn)練的是一種顏色的樣本用了100w遇伞。每個(gè)顏色分別訓(xùn)練這樣成本還是下不來(lái)。四種顏色就是500w樣本捶牢。官網(wǎng)的每次獲取圖片的時(shí)候顏色隨機(jī)出現(xiàn)的概率也不一定是1/4赃额。
2.png
(3)把所有顏色都通過(guò)顏色變換為一種顏色,整體思路同(2)叫确。如下圖,筆者將黑色轉(zhuǎn)換為紅色芍锦。我們只需要訓(xùn)練紅色的圖片:藍(lán)轉(zhuǎn)紅竹勉、黃轉(zhuǎn)紅、黑轉(zhuǎn)紅娄琉,樣本成本只有采集一種顏色的成本次乓∠判看起來(lái)是目前位置最佳的方案了,事實(shí)也是如此的票腰。但是呢城看,100w的樣本對(duì)于普通人來(lái)說(shuō)也是一筆不小的花銷,即便有了樣本能做出來(lái)也需要花費(fèi)不少的時(shí)間和精力杏慰。
有些算法工作者可能會(huì)低估樣本的實(shí)際需求量测柠,3.6k分類,中文字體小缘滥,容易混淆相似的字多轰胁,不同的角度重疊干擾都會(huì)大大增加,過(guò)于復(fù)雜的網(wǎng)絡(luò)對(duì)性能的要求也高朝扼,為了平衡性能和準(zhǔn)確率赃阀,足夠數(shù)量的樣本支撐是必須的,100w樣本量其實(shí)不大擎颖,一點(diǎn)都不要驚訝
不過(guò)采集樣本不是單純的接打碼平臺(tái)就完事了榛斯,需要經(jīng)過(guò)官網(wǎng)判斷,只有通過(guò)驗(yàn)證搂捧,正確的樣本才保存下來(lái)驮俗。這樣有效的樣本對(duì)提高識(shí)別率才有幫助。
實(shí)驗(yàn)成果
筆者實(shí)時(shí)對(duì)接官網(wǎng)對(duì)實(shí)驗(yàn)?zāi)P瓦M(jìn)行檢驗(yàn)异旧,結(jié)果如上圖意述,測(cè)試了200+次,識(shí)別率達(dá)到98%以上吮蛹,識(shí)別速度的話荤崇,CPU本地識(shí)別一次大概5-8毫秒左右,(騰訊云1核1G低配機(jī)器約10ms-15ms)模型大小約3mb潮针。
附上接口僅供測(cè)試术荤,為了防止濫用,接口每天只支持請(qǐng)求500次(此接口已不返回文本識(shí)別結(jié)果每篷,采用圖片結(jié)果代替瓣戚,請(qǐng)?jiān)谏厦嫣峁┑臏y(cè)試頁(yè)面中測(cè)試):
http://152.136.207.29:19812/preview
請(qǐng)求地址 | Content-Type | 參數(shù)形式 | 請(qǐng)求方法 |
---|---|---|---|
http://152.136.207.29:19812/captcha/v1 | application/json | JSON | POST |
注:如若超過(guò)限制可聯(lián)系作者獲取備用接口。
請(qǐng)勿惡意使用焦读,若超出當(dāng)日限制將返回:
{'uid': "9b5a6a34-9693-11ea-b6f9-525400a21e62", 'message': '超出當(dāng)日請(qǐng)求限制子库,請(qǐng)聯(lián)系作者QQ:27009583', 'success': False, 'code': -555}
具體參數(shù):
參數(shù)名 | 必選 | 類型 | 說(shuō)明 |
---|---|---|---|
image | Yes | String | Base64 編碼 |
param_key | No | String | 顏色,red\blue\black\yellow |
請(qǐng)求為JSON格式矗晃,形如:
{"image": "iVBORw0KGgoAAAANSUhEUgAAAFoAAAAjCAIAAA...base64編碼后的圖像二進(jìn)制流", "param_key ": "blue"}
注意:圖片只能是 90x35 尺寸的原圖仑嗅,請(qǐng)勿截圖
也 請(qǐng)勿 使用 模擬瀏覽器 的 截圖 獲取,如果不知道如何使用協(xié)議獲取驗(yàn)證碼,可以參考這個(gè)文章的方法:
https://blog.csdn.net/kerlomz/article/details/106793781
若對(duì)最新的JS逆向感興趣可以關(guān)注作者仓技。
若以上方法都不清楚鸵贬,可以【另存為圖片】,本模型針對(duì)【原圖】訓(xùn)練脖捻。
截圖無(wú)法識(shí)別阔逼,不理解的可以先了解下深度學(xué)習(xí) 圖像識(shí)別原理 ,或咨詢 作者 地沮。
返回結(jié)果:
參數(shù)名 | 類型 | 說(shuō)明 |
---|---|---|
message | String | 識(shí)別結(jié)果或錯(cuò)誤消息 |
code | String | 狀態(tài)碼 |
success | String | 是否請(qǐng)求成功 |
該返回為JSON格式嗜浮,形如:
{'uid': "9b5a6a34-9693-11ea-b6f9-525400a21e62", "message": "xxxx", "code": 0, "success": true}
Python示例:
import requests
import base64
with open(r"C:\1.png", "rb") as f:
b = f.read()
# param_key: black-全黑色,red-紅色,blue-藍(lán)色,yellow-黃色
r = requests.post("http://152.136.207.29:19812/captcha/v1", json={
"image": base64.b64encode(b).decode(), "param_key": "yellow"
})
print(r.json())
關(guān)鍵字:
|國(guó)稅 驗(yàn)證碼識(shí)別|國(guó)稅驗(yàn)證碼識(shí)別|國(guó)稅驗(yàn)證碼|國(guó)稅 驗(yàn)證碼|發(fā)票查驗(yàn)驗(yàn)證碼|發(fā)票查驗(yàn) 驗(yàn)證碼|發(fā)票查驗(yàn)驗(yàn)證碼識(shí)別|發(fā)票查驗(yàn) 驗(yàn)證碼識(shí)別|
有問(wèn)題可以聯(lián)系作者QQ:27009583