目的
- OCRを勉強中、下記のようなCAPTCHA画像の文字を読み取ることができるか気になったので試してみました
環境
- Python 3.8
- PyOCR
- Tesseract
※下記の記事を参考に導入しました。ありがとうございました。
コード
from PIL import Image
import sys
import pyocr
import pyocr.builders
# OCR群を取得
tools = pyocr.get_available_tools()
# OCRがなければエラー
if len(tools) == 0:
print("No OCR tool found")
sys.exit(1)
# OCRはTesseractしか入れていないため、先頭の要素にTesseractが入っている
tool = tools[0]
print("Will use tool '%s'" % (tool.get_name()))
# 画像から文字を抽出
txt = tool.image_to_string(
Image.open("画像のパスを記載"),
# tesseract_layoutの設定値については、下記リンク参照
# http://tanaken-log.blogspot.com/2012/08/imagemagick-tesseract.html
builder=pyocr.builders.TextBuilder(tesseract_layout=6)
)
print(txt)
結果
- 正確に読み取れたのは
g
のみ
tesseract_layout=6
Bg hes:
-
tesseract_layout
の設定を変えて試してみる- 下記以外の設定だと、そもそも何も読み取れなかった
tesseract_layout=5
Oo:
tesseract_layout=7
agit e's.
tesseract_layout=8
Bg tes.
tesseract_layout=9
BG WSs
tesseract_layout=10
agit e's.
結論
- 自分が試してみた限り、CAPTHCA画像の文字を読み取ることはできなかった
- 別のOCRエンジンなら可能性はあるのか?
- そもそも、CAPTHCAってそういうもんですよね