-42のpython3クローラ戦闘識別認証コードパターン

このセクションでは、我々は最初のコード、グラフィックスコードの最も簡単な種類を特定しようとすると、最古のは、非常に一般的なこれらのコードは、通常、このような中国の登録ページHowNetとして4つの文字や数字、からなる、表示されるようになりましたです同様の検証コードは、リンクは次のとおりです。http://my.cnki.net/elibregister/commonRegister.aspx、図8-1に示すページ:

-42のpython3クローラ戦闘識別認証コードパターン

図8-1 HowNet登録ページ

最後の一つは、彼らが登録を完了することができます前に、私たちは完全に絵に正しい文字を入力する必要があり、CAPTCHAの形です。

1.このセクションの目的

我々はHowNet確認コードを持って、このセクションでは、例えば、グラフィカル確認コードを識別するために、OCR技術を用いた方法を説明します。

2.準備

必要なライブラリは、参照インストール手順の章なしTesserocr設置することができるしている識別パターンコード。

確認コードを取得する3.

実験を容易にするために、我々は、最初の画像が試験のために、ローカルコードに保存されていることを確認します。

開発者ツールを開き、コード要素を見つけ、あなたはこれが絵であることを確認することができ、それのsrc属性は、我々が直接このリンクを開くCheckCode.aspx、次のとおりです。http://my.cnki.net/elibregister/CheckCode.aspx、あなたはちょうどいい-保存、名前のcode.jpgの名前は、学習プロセスに参加することができます理解していないことができ、確認コードを見ることができます私たちのPythonはゼロベースはあなたと学び、そしてどのような内容を学ぶ。から瞬間にPythonの企業の人材ニーズを共有するために戻って784 758 214為替Qiuqiu中間リングを学び、どのように 関連ビデオ教材は、開発ツールには、図8-2共有に示されています。

-42のpython3クローラ戦闘識別認証コードパターン

図コード8-2

私たちは、確認コードを取得することができるように、テスト用の次の画像を識別します。

4.テストを識別する

次は、次のようにTesserocrライブラリは、コードをしようとするものを識別するために、プロジェクトのルートディレクトリに新しいプロジェクト、CAPTCHAイメージを作成します。


import tesserocr

from PIL import Image

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

result  =  tesserocr.image_to_text(image)

print(result)
Python资源分享qun 784758214 ,内有安装包,PDF,学习视频,这里是Python学习者的聚集地,零基础,进阶,都欢迎

ここでは、最初のImageオブジェクトを作成し、image_to_textのTesserocr()メソッドを呼び出して、識別処理を完了するために、Imageオブジェクトに渡すと、次のように認識結果があり、非常に単純な実現です。


JR42

次のように加えTesserocrに直接イメージファイルへのより簡単な方法は、あなたが同じ効果を得ることができ、文字列の中にあります:


import tesserocr

print(tesserocr.file_to_text('image.png'))

しかし、この方法は、方法を特定する効果として良いテストされています。

処理コード

基本的な画像識別は難しいことではないとして、単に新しいImageオブジェクトを作成し、画像の結果の認識を得るために、()メソッドを呼び出しますimage_to_text。

次に、図8-3に示す検証コード、名前のcode2.jpg、のために試してみてください。

-42のpython3クローラ戦闘識別認証コードパターン

図コード8-3

再テスト次のコードで:


import tesserocr

from PIL import Image

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

result  =  tesserocr.image_to_text(image)

print(result)

その後、あなたは次の出力を見ることができます:


FFKT

実際の結果は、ずれの検出と識別が、これは干渉画像認識における検証余分な行為。

この場合、私たちは、このようなターングレー、二値化処理などの追加処理を、行う必要があります。

次のように我々は、グレースケール画像に変換された画像Lに渡される画像オブジェクト変換()メソッドのパラメータを使用することができます。


image  =  image.convert('L')

image.show()

図1は、画像二値化処理に渡すことができます。


image  =  image.convert('1')

image.show()

加えて、我々はまた、2値化閾値を指定することができ、上記方法は、デフォルト閾値127を使用して、我々は直接画像を用いて形質転換することができない、最初のグレースケール画像に変換することができ、その後、以下のように、二値化閾値変換を指定します。


image  =  image.convert('L')

threshold  =  80

table  =  []

for  i  in  range(256):

    if  i  <  threshold:

        table.append(0)

    else:

        table.append(1)

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

image.show()

ここでは、可変閾値を図8-4に示す、我々は結果を見て処理後の代表的な2値化閾値を80に設定された閾値を、指定します。

-42のpython3クローラ戦闘識別認証コードパターン

図処理結果8-4

処理後に、我々は、元のラインコードが削除されていることを見出し、以下のように全体の確認コードは、再度識別コード、黒と白となります。


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')

result  =  tesserocr.image_to_text(image)

print(result)

結果は、実行中になる見つけることができます:

PFRT
Python资源分享qun 784758214 ,内有安装包,PDF,学习视频,这里是Python学习者的聚集地,零基础,进阶,都欢迎

正しく識別。

いくつかの可視画像の干渉のために、我々はいくつかのグレースケール及び二値化処理を行い、その認識精度を向上させるであろう。

6.おわりに

このセクションでは、我々が直接あなたが認識の精度を向上させたい場合にも、いくつかの事前検証の絵を行うことができ、結果を得るためにそれを使用することができます簡単なグラフィカル認証コードのため、Tesserocr識別コードを使用するプロセスを理解しています。

おすすめ

転載: blog.51cto.com/14445003/2427543