無(wú)論是是自動(dòng)化登錄還是爬蟲(chóng),總繞不開(kāi)驗(yàn)證碼,這次就來(lái)談?wù)?a href="/article/86900.html">python中光學(xué)識(shí)別驗(yàn)證碼模塊tesserocr
和pytesseract
。tesserocr
和pytesseract
是python的一個(gè)ocr識(shí)別庫(kù),但其實(shí)是對(duì)tesseract
做的一層python api封裝,pytesseract
是google的tesseract-ocr
引擎包裝器;所以它們的核心是tesseract
,因此在安裝tesserocr
之前,我們需要先安裝tesseract
。
下載安裝
下載地址:https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w64-setup-v4.0.0.20181030.exe
下載完成后,雙擊安裝,可以勾選additional language data(download)
選項(xiàng)來(lái)安裝ocr識(shí)別支持的語(yǔ)言包,但下載語(yǔ)言包實(shí)在是慢,我們可以直接從https://github.com/tesseract-ocr/tessdata/下載zip的語(yǔ)言包壓縮文件,解壓后將tessdata-master
中的文件復(fù)制到tesseract
的安裝目錄c:\program files (x86)\tesseract-ocr\tessdata
目錄下,最后我們配置下環(huán)境變量,我們將c:\program files (x86)\tesseract-ocr
添加到環(huán)境變量中。進(jìn)入命令提示符,輸入tesseract
,顯示下圖結(jié)果,說(shuō)明配置完成
查看安裝了的語(yǔ)言包:tesseract --list-langs
顯示我一共安裝了167種語(yǔ)言包,里邊包含英文或者其他字符。
測(cè)試
實(shí)驗(yàn)用的二維碼
基本使用語(yǔ)法
tesseract image.png result
(tesseract 圖片名稱(chēng) 生成文件名稱(chēng))
結(jié)果
由結(jié)果來(lái)看,識(shí)別出來(lái)了p、2和x,但是把c識(shí)別成了g,識(shí)別度還是比較高,接下來(lái)看在python中的使用
python引入tesseract
在python下使用pip命令即可完成下載安裝 pip install pytesseract
識(shí)別驗(yàn)證碼腳本
1
2
3
4
|
import pytesseract from pil import image im = image. open ( 'pin.png' ) print (pytesseract.image_to_string(im)) |
結(jié)果
這樣識(shí)別的結(jié)果同樣跟上文一樣,個(gè)別字符識(shí)別的不是很準(zhǔn)確
圖像處理
現(xiàn)在網(wǎng)站上的二維碼設(shè)計(jì)的通常很難復(fù)雜,如果直接識(shí)別的話(huà)很難識(shí)別出來(lái),下面這段代碼是進(jìn)行灰度處理和二值化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import pytesseract from pil import image im = image. open ( '5.jpg' ) #進(jìn)行置灰處理 im = im.convert( 'l' ) #這個(gè)是二值化閾值 threshold = 150 table = [] for i in range ( 256 ): if i<threshold: table.append( 0 ) else : table.append( 1 ) #通過(guò)表格轉(zhuǎn)換成二進(jìn)制圖片,1的作用是白色,0就是黑色 im = im.point(table, "1" ) im.show() print (pytesseract.image_to_string(im)) |
原圖
置灰和二值化后
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。
原文鏈接:https://nolon.xyz/archives/77/