【爲生活開發系列之五】開源Android福彩號碼對比助手

前言

前兩天去吃飯,回來的路上經過賣彩票的,順手就買了幾張,想着萬一運氣好中個500萬呢!哈哈,今天早上想起來這件事,看了一下藍號,沒有一個是一樣的,然後,我想着6+0還想也還不錯,對着中獎號碼一個一個比對,看着我頭都大了,我這暴脾氣,XXXXXXX,然後他就成這樣了。

我這暴脾氣

爲了以後對彩票的時候不這麼痛苦,於是着手開發了一個專門檢查彩票有沒有中獎的App-【福彩號碼對比助手】,這樣以後就不用傻頭傻腦的對着中獎號碼比對了,哈哈,經過大半天的努力,成果如下:
效果圖

功能及流程介紹

  • 拍照及裁剪
    調用相機將購買的彩票拍下來,然後對拍成的照片進行裁剪,裁剪的目的是爲了突出重點,我們的重點就是購買的彩票的號碼區域和開獎期,縮小範圍的目的是提高圖片的識別成功率,包含開獎期是爲了自動識別開獎期,這樣可以少讓用戶手動輸入開獎期(這個後面會提到)。

  • 圖片文字識別
    對剛剛裁剪的圖片進行文字識別,文字的識別還是使用百度雲的文字識別,傳送門–百度雲文字識別快速入門,鏈接是 https://cloud.baidu.com/doc/OCR/OCR-Java-SDK.html#.E5.BF.AB.E9.80.9F.E5.85.A5.E9.97.A8

  • 識別後的文字處理
    這一塊比較麻煩,因爲調用百度雲的文字識別之後,返回的數據比較亂,我們需要篩選出我們需要的文字,並對文字進行處理。
    首先百度雲識別的文字會以字符串集合的方式返回給我們,它主要是以塊來進行文字識別,每一小塊識別的文字作爲一個整體返回,所以我們要從這些塊兒中選出我們需要的內容。
    我們只關注兩個點,一個是購買的幾組號碼,另外一個是開獎期。
    單注號碼
    首先我們發現,不論單張購買幾注號碼,每一注號碼都會按照如下的格式輸出:
    A.02 03 07 12 13 17 + 16 X1
    首先是以大寫字母加.開頭 然後是連着6組兩位數的紅色號碼,然後是「+」,「+」後面是兩位數的藍號,再後面是「x」+購買的注數。有了這些規律,我們就可以書寫對應的正則表達式了:
    ^[A-Z].[0-9]{12}+?[0-9]{2}x?[0-9]+$,我們首先對這個正則做一個簡單的解釋:字符串以A-Z中一個字母加.開始,接着有12位0-9的數字(這個是6個紅號),然後有0個或者1個「+」(爲什麼是0到1個呢,因爲經過測試,有時候可能會識別不出「+」號,爲了識別的準確率,我們不對這個「+」做強制處理),然後是2位的0-9的數字(這個是藍號),然後是0個或者1個「x」(跟前面的「+」是一樣的,爲了提高識別率),最後就是購買這個號碼的注數了,1到多個0-9的數字(指1到n)。
    這個正則表達式可以過濾出我們需要的文字,如果滿足這個正則表示這一條數據是我們買的一組號碼。
    開獎期
    對於開獎期來說就比較簡單了,只需要字符串的前三個字符是「開獎期」就好了,因爲如果識別不出來,用戶也可以手動輸入,都ok,無傷大雅,如果識別出來了,我們就直接幫用戶填入輸入框中,這樣用戶就不用自己輸入了,如gif所示。

  • 獲取本期彩票中獎號碼
    我們已經識別出我們彩票上的號碼了,現在需要獲取到本期中獎的號碼,然後進行比對,看是否中獎。我們使用的是showapi上的一個免費的接口,彩票開獎查詢,鏈接:https://www.showapi.com/api/lookPoint/44,使用這個接口我們可以獲取最新的開獎信息,也可以獲取到指定期號的中獎號碼。具體使用大家可以點鏈接進去悄悄。

  • 比對號碼獲取中獎信息
    中獎號碼和你購買的號碼都已經拿到了,剩下的就是對比號碼是不是符合的了,這個比較簡單了,就不再贅述,下面貼出福彩中獎規則:
    一等獎:7個號碼相符(6個紅色球號碼和1個藍色球號碼)(紅色球號碼順序不限,下同)
    二等獎:6個紅色球號碼相符;
    三等獎:5個紅色球號碼和1個藍色球號碼相符;
    四等獎:5個紅色球號碼,或4個紅色球號碼和1個藍色球號碼相符;
    五等獎:4個紅色球號碼,或3個紅色球號碼和1個藍色球號碼相符;
    六等獎:1個藍色球號碼相符(有無紅色球號碼相符均可)。

相關鏈接

項目已經開源,希望能幫到你,也希望愛買彩票的你早日中獎。
LotteryHelper 鏈接是 https://github.com/MZCretin/LotteryHelper

另外大家也可以直接下載APK體驗一波,Apk下載地址,請複製鏈接在瀏覽器中打開進行下載,鏈接 http://jokesimg.cretinzp.com/common/lotteryhelper/apk/fcdhzs.apk,也可以用手機掃描下方二維碼進行下載體驗:
apk下載二維碼,瀏覽器掃一掃

今天晚上九點等到開獎之後,我興奮的用App檢測了我買的15注號碼,就中了一注藍號的,只有5塊錢,僅以最開頭的那張圖紀念年少無知的我買了5張彩票,哈哈哈。

關於我的

我就是比較喜歡用代碼解決生活中的問題,感覺很開心,哈哈哈。也喜歡大家關注我的簡書,掘金,Github和CSDN。

簡書首頁,鏈接是 https://www.jianshu.com/u/123f97613b86

掘金首頁,鏈接是 https://juejin.im/user/5838d57fac502e006c1708bc

Github首頁,鏈接是 https://github.com/MZCretin

CSDN首頁,鏈接是 http://blog.csdn.net/u010998327

我是Cretin,一個可愛的小男孩。