1. 程式人生 > >鋤禾日當午,啥都不靠譜。閒來沒事做,不如寫部落格。

鋤禾日當午,啥都不靠譜。閒來沒事做,不如寫部落格。

由於最近迷上了嗶哩嗶哩的直播,人窮沒錢買瓜子,據說這個js能識別語音,和圖片,剛好領取瓜子需要做一道數學題,又於是激動準備著手自己搞個外掛自動領瓜子,哇咔咔咔~~~廢話不說,表示尊重,
上git:https://github.com/naptha/tesseract.js
還有:http://tesseract.projectnaptha.com/

一、安裝:

1.標籤式:

用下面這個cdn地址或者在git中下載下來找到tesseract.js引入就行了
<script src='https://cdn.rawgit.com/naptha/tesseract.js/1.0.10/dist/tesseract.js'
>
</script>

2.其他的就不說了,其實是我不會

二、使用:

/* recognize()啟動識別的方法
 * "getCaptcha.jpg" 可以傳入檔案路徑,檔案物件,2d影象,二進位制物件等
 * lang  識別的語言種類,下面再詳細說
 * classify_bln_numeric_mode  識別過程中需要用到一些引數,類似一些常量的東東,也可以不填
 * progress() 執行識別過程中要進行的操作,簡單的識別可以省略這個
 * packet 這個物件包含狀態等內容,詳細請console.info()
 * then()  相當於識別成功後的回撥吧
 * data 自己console.info()
 */
Tesseract.recognize("getCaptcha.jpg"
, { lang: "eng", classify_bln_numeric_mode: 1 }) .progress(function(packet){ //progressUpdate(packet) }) .then(function(data){ alert(data.text); //progressUpdate({ status: 'done', data: data }) });

當然,這裡有個問題,直接用上面的簡單例子是可以識別,但是速度是個問題
因為Tesseract.js還依賴其他包,識別的時候會線上載入相應的東東,有在git下載同學就知道了,dist裡面還有worker.js這個檔案,以及另外的index.js檔案
所以如果要加速的話可以這樣,引入本地檔案

//這裡面都引入本地的包就行了,langPath是存放語言包的路徑
window.Tesseract = Tesseract.create({
    workerPath: '/path/to/worker.js',
    langPath: 'https://cdn.rawgit.com/naptha/tessdata/gh-pages/3.02/',
    corePath: 'https://cdn.rawgit.com/naptha/tesseract.js-core/0.1.0/index.js',
})
.recognize("getCaptcha.jpg", {
    lang: "eng",
    classify_bln_numeric_mode: 1
})
.progress(function(packet){
    //progressUpdate(packet)
    })
.then(function(data){
    alert(data.text);
    //progressUpdate({ status: 'done', data: data })
});
好了,除了這個還發現有ocrad.js這個,有興趣的可以研究研究
最後:識別嗶哩嗶哩數學題自動領瓜子的外掛做不成,因為這無論用什麼語言都識別不出來,引數微調部分也不行,識別率太低,20個能準確識別出一個左右,還是改用其他方法吧~~~~寫完看直播去~