国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python實現基于PIL和tesseract的驗證碼識別功能示例

2020-02-15 22:20:23
字體:
來源:轉載
供稿:網友

本文實例講述了Python實現基于PIL和tesseract的驗證碼識別功能。分享給大家供大家參考,具體如下:

之前搞這個搞了一段時間,后面遇到了點小麻煩,導致識別率太低了,最多也就百分之20的樣子。心灰意冷,棄了一段時間。上次在論壇看到一篇大牛的關于PIL對圖片各種處理各種算法的博突然又想起了這個,又隨便搞了下,大大提高了識別率啊。先給代碼:

原圖:

im = Image.open("C:/Users/Administrator/Desktop/python//3.png")#調色enhancer = ImageEnhance.Contrast(im)im = enhancer.enhance(2)#把圖片調成只有黑白兩個顏色,處理后每個像素色用8位表示im = im.convert('1')im.show() #測試查看

經過上面處理后:

現在到了關鍵的一步,這圖上好多好多小黑點,要一個一個全部去除我估計我代碼寫到吐血都寫不出來。但是要去除一部分還是可以的。

xsize, ysize = im.size #長、寬#對照片里的所有像素點:如果像素色不是白色并且右邊的一個像素點像素色是白色(RGB(255,255,255))或者像素色不是白色并且下方的一個像素點是白色的,統一變成白色for i in range(ysize-1):  for j in range(xsize-1):    if (im.getpixel((j, i)) !=255&im.getpixel((j+1,i))==255):      im.putpixel((j,i),255);    if(im.getpixel((j,i)) != 255&im.getpixel((j,i+1))==255):      im.putpixel((j, i), 255);im.show(); #再看看效果

處理完之后:

之前那些黑色的小點點已經去的差不多了,但是這樣也是有代價的啊- - 把圖片里面的字的一些像素色也去掉了一些,現在拿這張圖片去用tesseract識別的話其實對于tesseract來說跟之前那張沒有去小黑點的圖片識別難度差不了多少,然后后面又想了個辦法補救了一下:

#把上面我們變成白色的小黑點給他補一點回來- -for i in range(ysize - 1):  for j in range(xsize - 1):    if (im.getpixel((j, i))!=255&im.getpixel((j+1,i)) !=255):      im.putpixel((j, i), 0);    if (im.getpixel((j, i))!=255&im.getpixel((j,i+1)) !=255):      im.putpixel((j, i), 0);im.show(); #再看看效果

處理完之后:

比上面的圖清晰了蠻多。這個時候再去對照下剛開始的那種圖的話,對識別程序來說清楚了不止是一點點啊。

不過盡管如此,識別率還是不怎么樣,我估計也就百分之50左右的識別率,還是太低了,可能是因為我去掉了一些關鍵的像素點的色,因為我也不知道tesseract具體的對比庫是怎么樣的,所以估計我又要棄了。有想過再繼續對圖片切割旋轉,甚至還想過找人工智能的朋友給我拿去訓練訓練,不過那樣還是偏離我本意了,而且我也不是很喜歡搞學術的東西。不管怎么樣我這個感覺還是有點用的,說不定拿去做一下切割識別率大大提高也是有可能的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 太原市| 会昌县| 陇川县| 黑水县| 安新县| 苏尼特右旗| 舟曲县| 兴宁市| 涿州市| 万宁市| 扎囊县| 元谋县| 东乌珠穆沁旗| 怀宁县| 会东县| 富平县| 菏泽市| 阆中市| 云浮市| 眉山市| 全椒县| 金昌市| 瑞金市| 柞水县| 和硕县| 南平市| 皋兰县| 中卫市| 呼伦贝尔市| 台北市| 扬州市| 太湖县| 神池县| 临汾市| 龙南县| 临潭县| 东港市| 太白县| 喀喇沁旗| 德江县| 新竹县|