PythonとOCRで数字を振り分け

 PythonとOCRで数字を振り分け

とある作業で、数字が書かれた画像を数万ファイル振り分けなければいけなくなった。
手作業でやるのは.....流石にダルいため、PythonとOCRを利用し、どこまで仕分けできるかやってみることにした。

結論

あまり精度が良くない。
私のやり方や、数字が書かれた画像データの解像度、背景色など、さまざまな要因は在ると思うが、あまり精度が良くない、という結果に終わった。
特に3,4,7あたりが怪しく、0や8はほぼほぼ正解しているというような結果であった。

0のフォルダ



3のフォルダ





しかし、数万件手作業で振り分けるよりは効率が良いようにも思える。

方法

今回は、Python, PyOCR, Tesseractを用いた方法で分類した。

ソースコードはこちら: GitHub

仕組みは簡単で、ソースフォルダ内にある画像を全て読み取り、OCRで読み取ったテキストが、フォルダが用意されているものであればそのフォルダに振り分ける、用意されていなければOtherフォルダに入れる。
それだけである。

今回数字を抽出するに当たり、英語ベースでの識字をしている。これは日本語に比べ英語が文字数が少ないことから誤認識の確率を減らす効果があると思われる。
また、tesseract_layoutを8にすることで、画像を1つの単語として扱っている。
> tesseract --help-psm


まとめ

以上が実験の結果である。
使えなくはないが、常用するツールではない。そんな印象である。
自分の用途に合った文字データを学習させることで、より精度の高いOCRができる可能性があるため、またトライしてみたいと思う。

また、この技術は先日話題になっていた、ワクチン用冷蔵庫の監視をWebカメラで行うというものでも活用でき、冷蔵庫に監視するような機能がなくとも、カメラで取得した画像をOCRで値にし、サーバに送信することで、異常値が出たらアラートを出すといった対応もできる、非常に有用な技術だと思われる。OCRは印刷物をコピペできるようにするためだけのものじゃない!すごい!



参考

コメント