この記事はあやしいネットワーク関連 Advent Calendar 2018の7日目の記事です
あやしいネットワーク関連 Advent Calendar 2018 - Adventar
Sorry Japanese Only ! 𠔻
音声認証がなく画像認証のみしか提供していないウェブサイトで目が不自由なユーザがCAPTCHAを入力することなく利用できるようにするために突破します
ちなみに、私は遺伝子検査で加齢黄斑変性と緑内障のリスクが日本人平均の2倍でした。将来的に見えにくくなる、見えなくなった場合のためにも日ごろからCAPTCHAを突破できる学習データを作成しておきましょう(?)
tesseractの学習データをMATLABのOCRトレーナーで作成します
フリーソフトでもtesseract create training dataな感じで探せばあると思います
CAPTCHAデータの取得
割愛します。お好きな言語でスクレイピングしやすいので画像データを保存してください
画像前処理
ノイズ除去とか必要ならscipy/numpy/imagick/opencvなどで頑張ってください
学習データ作成
適当にやる
学習ボタン押せばtessdataが出力されます
テストデータの作成
素人なのでよくわかりませんが、CSVで正解文字列,画像ファイル名みたいな感じで作ってtesseractの吐き出す文字列でstrcmpして正答率のチェックすればいいんじゃないですかね。ここ外注ポイントです
tesseractを呼び出してオートメーション化
お好きな言語でどうぞ
GitHub - thiagoalessio/tesseract-ocr-for-php: A wrapper to work with Tesseract OCR inside PHP.
<?php require './vendor/autoload.php'; $image = 'test.png'; $list = array_merge( range('a','z'), range('A','Z'), range('0','9') ); $tess = (new TesseractOCR($image)); $result = $tess ->whitelist($list) ->psm(8) ->tessdataDir('./tessdata') ->lang('domain','eng') ->run(); var_dump($result);
さいごに
画像処理の素人なのでよくわかりませんが、フルスタックエンジニアはこのぐらい朝飯前なんでしょうな
最近のクラウド家計簿サービスとかはこういうこともやってるっぽい気がします