爬虫類の図形検証コードの識別

3025 ワード

ほんの少し
1例
中国知網:http://my.cnki.net/elibregister/commonRegister.aspxの登録ページでは、この認証コードが使用されています.ページは次のとおりです.
爬虫之图形验证码的识别_第1张图片
二準備作業
1ターゲット
知網の認証コードを例にとると,OCR(Optical Character Recognition光学文字認識)技術を用いてグラフィック認証コードを識別する.
2 tesseractのインストール
2.1 Windowsダウンロードアドレス
https://digi.bib.uni-mannheim.de/tesseract/
2.2 tesseract-ocr-setup-3.05.01をダウンロードする.exe
2.3設置上の注意事項
Additional language data(download)オプションをチェックすると、複数の言語を識別できます.
3 tesserocrのインストール
pip install tesserocr pillow
次の2つの文章を参考にします.
https://blog.csdn.net/xiongzaiabc/article/details/82908209
https://blog.csdn.net/t1243_3/article/details/81211029
インストールしたTesseract-OCRの後、D:Program Files(x 86)Tesseract-OCRディレクトリの下から、tessdataフォルダを下のディレクトリにコピーします
E:\WebSpider\venv\Scripts
4認証コードの取得
認証コード:http://my.cnki.net/elibregister/CheckCode.aspx図形はローカルに保存され、codeと名付けられた.jpg
爬虫之图形验证码的识别_第2张图片
三実戦
1実戦1
1.1コード
import tesserocr
from PIL import Image

image = Image.open('code.jpg')
result = tesserocr.image_to_text(image)
print(result)

image = Image.open('code1.jpg')
result = tesserocr.image_to_text(image)
print(result)

image = Image.open('code2.jpg')
result = tesserocr.image_to_text(image)
print(result)

1.2効果
E:\WebSpider\venv\Scripts\python.exe E:/WebSpider/8_1.py
DTKD
JR42
PFRT

1.3説明
code.jpgはDTKT
code1.jpgはJR 42
code2.jpgはPFRT
結果を実際の画像と比較すると,正解率は比較的高い.
2実戦2
2.1コード
import tesserocr

print(tesserocr.file_to_text('code.jpg'))
print(tesserocr.file_to_text('code1.jpg'))
print(tesserocr.file_to_text('code2.jpg'))

2.2効果
E:\WebSpider\venv\Scripts\python.exe E:/WebSpider/8_1.py
DTKD
.ll?42
FFKT

2.3説明
code.jpgはDTKT
code1.jpgはJR 42
code2.jpgはPFRT
結果を実際の画像と比較すると,正解率はそれほど高くない.
3実戦3
3.1コード
import tesserocr
from PIL import Image

image = Image.open('code2.jpg')

image = image.convert('L')
threshold = 127
table = []
for i in range(256):
    if i < threshold:
        table.append(0)
    else:
        table.append(1)

image = image.point(table, '1')
image.show()

result = tesserocr.image_to_text(image)
print(result)

3.2効果
E:\WebSpider\venv\Scripts\python.exe E:/WebSpider/8_1.py
PFRT