第29回 Pythonもくもく会に参加しました

Pythonもくもく会に参加し、画像処理やOCRについて取り組みました。

Pythonもくもく会

前職の先輩であるF#/Rust/Python使いの@meganehouser氏に紹介され、第29回Pythonもくもく会に参加しました。

mokupy.connpass.com

@meganehouser氏は第一回に参加したことがあるとか。

参加者の方は僕と同じく初心者の方、業務でDjangoを触っている方、機械学習屋さんなどいろいろな人がいました。

やったこと

活字OCRとそれに関連する画像処理について調査をしました。僕が働いている会社のアプリでは、画像を利用したコミュニケーションが多く、SEONLPなどに生かせないかと目論んでいます。

今回具体的なメカニズムの理解についてはひとまず置いておき、その効能についてざっと調べてみます。 以下取り組みました。

MSER

DropboxOCRエンジンで文字領域を抽出するために使われている技術だそうです。

blogs.dropbox.com

OpenCVから使えるので試してみました。

stackoverflow.com

f:id:koyamay:20180625181119p:plain f:id:koyamay:20180625181129p:plain

一部ですが単語単位で領域がとれていますね。

MSER_createメソッドのパラメータを変えるともろもろ結果変わりそうなので、今後理論的な理解と合わせて調査していこうと思います。

OpenCV: cv::MSER Class Reference

また、他に領域を抽出する技術としてStroke Width TransformScene Text Detectionなどもあるそうで、今後調査していきます。

Deskew

僕が働いている会社のアプリでは、かなりの頻度で傾いている画像がアップロードされています。傾き補正できないか調べてみました。

GitHub - ArmlessJohn404/Alyn: Detect and fix skew in images containing text

f:id:koyamay:20180625181315p:plain f:id:koyamay:20180625181325p:plain

うまくいくものもいかないものも半々くらいである印象。また90度回転した画像では、テキストの上下が逆になって補正されるような問題もありました。今回使用したpackageだとテキストの上下まで判定しないので、そのような点についても意識しないといけないことがわかりました。

影除去

OCRの前処理で影除去が必要なので試してみました。

stackoverflow.com

f:id:koyamay:20180625181523p:plain f:id:koyamay:20180625181551p:plain

シンプルなやり方で効き目がよかったです。

Tesseract

OCR、まずはTesseractでできるだけ頑張ったものをベースとして色々なことにチャレンジしようと思っています。 とりあえず時間が足りなかったので、公式が提供してる辞書を使用して日本語活字のOCRをためしてみました。

teru0rc4.hatenablog.com

雑にOCRをかけてみる

f:id:koyamay:20180625181119p:plain

① A海域は' 広がるプレー 「冤葬【二ぁり`
アフリヵ束部の地満帯の一部が沈水したも
のでぁる〟

なかなかつらい感じなので、もうちょっと以下頑張っていきたいです。

  • 前処理での精度向上の調査
  • 自分で学習データを用意すると精度があがるそうなので、学習データを用意する

成果発表

以下のLTがありました。

1. ワールドカップの結果予想 by Katsuki Ohto (@cute_na_piglets) | Twitter さん

warp-football.jp

みんなワールドカップ見てるみたいで盛り上がりました

2. Pycon Kyushuの準備など by かしゅー (@kashew_nuts) on Twitter さん

PyCon Kyushu - 2018 Fukuoka

福岡は食べ物おいしいですよね。行きたい(帰りたい)。

3. Djangoの連載について by masataka arai (@massa142) | Twitter さん

codezine.jp

普段Railsつかっててflaskしかまだ触ったことないので、Djangoどんなものか興味あります。

4. Djangoもくもく会の案内 by checkpoint (@checkpoint) | Twitterさん

connpass.com

お昼のときお話させていただいたのですが、PythonでWebアプリならデファクトっぽいのでやっぱり興味あります。

最後に

もくもく会、みんなそれぞれ以下のように違うことやっていてDiversityあって楽しかったです。 PythonC++動かすとかも興味ある...

会社でずっとペアプロしてるので、今回@meganehouser氏とペアプロしてみました。大体先輩氏のPython力に助けられてばっかで、もう少し勉強が必要だなと痛感しました。今後もやっていきます。

また次回参加できたら参加したいです。今回はじめてで緊張してなかなか色んな人とお話できませんでしたが、次回是非できればと思います。

運営者・参加者の皆さまお疲れ様でした&ありがとうございました。