第29回 Pythonもくもく会に参加しました
Pythonもくもく会に参加し、画像処理やOCRについて取り組みました。
Pythonもくもく会
前職の先輩であるF#/Rust/Python使いの@meganehouser氏に紹介され、第29回Pythonもくもく会に参加しました。
※@meganehouser氏は第一回に参加したことがあるとか。
参加者の方は僕と同じく初心者の方、業務でDjangoを触っている方、機械学習屋さんなどいろいろな人がいました。
やったこと
活字OCRとそれに関連する画像処理について調査をしました。僕が働いている会社のアプリでは、画像を利用したコミュニケーションが多く、SEOやNLPなどに生かせないかと目論んでいます。
今回具体的なメカニズムの理解についてはひとまず置いておき、その効能についてざっと調べてみます。 以下取り組みました。
MSER
DropboxのOCRエンジンで文字領域を抽出するために使われている技術だそうです。
OpenCVから使えるので試してみました。
一部ですが単語単位で領域がとれていますね。
MSER_create
メソッドのパラメータを変えるともろもろ結果変わりそうなので、今後理論的な理解と合わせて調査していこうと思います。
OpenCV: cv::MSER Class Reference
また、他に領域を抽出する技術としてStroke Width TransformやScene Text Detectionなどもあるそうで、今後調査していきます。
Deskew
僕が働いている会社のアプリでは、かなりの頻度で傾いている画像がアップロードされています。傾き補正できないか調べてみました。
GitHub - ArmlessJohn404/Alyn: Detect and fix skew in images containing text
うまくいくものもいかないものも半々くらいである印象。また90度回転した画像では、テキストの上下が逆になって補正されるような問題もありました。今回使用したpackageだとテキストの上下まで判定しないので、そのような点についても意識しないといけないことがわかりました。
影除去
OCRの前処理で影除去が必要なので試してみました。
シンプルなやり方で効き目がよかったです。
Tesseract
OCR、まずはTesseractでできるだけ頑張ったものをベースとして色々なことにチャレンジしようと思っています。 とりあえず時間が足りなかったので、公式が提供してる辞書を使用して日本語活字のOCRをためしてみました。
雑にOCRをかけてみる
① A海域は' 広がるプレー 「冤葬【二ぁり` アフリヵ束部の地満帯の一部が沈水したも のでぁる〟
なかなかつらい感じなので、もうちょっと以下頑張っていきたいです。
- 前処理での精度向上の調査
- 自分で学習データを用意すると精度があがるそうなので、学習データを用意する
成果発表
以下のLTがありました。
1. ワールドカップの結果予想 by Katsuki Ohto (@cute_na_piglets) | Twitter さん
みんなワールドカップ見てるみたいで盛り上がりました
2. Pycon Kyushuの準備など by かしゅー (@kashew_nuts) on Twitter さん
福岡は食べ物おいしいですよね。行きたい(帰りたい)。
3. Djangoの連載について by masataka arai (@massa142) | Twitter さん
普段Railsつかっててflaskしかまだ触ったことないので、Djangoどんなものか興味あります。
4. Djangoもくもく会の案内 by checkpoint (@checkpoint) | Twitterさん
お昼のときお話させていただいたのですが、PythonでWebアプリならデファクトっぽいのでやっぱり興味あります。
最後に
もくもく会、みんなそれぞれ以下のように違うことやっていてDiversityあって楽しかったです。 PythonでC++動かすとかも興味ある...
今日の様子 #mokupy pic.twitter.com/v3KIFPpt3E
— masataka arai (@massa142) June 24, 2018
会社でずっとペアプロしてるので、今回@meganehouser氏とペアプロしてみました。大体先輩氏のPython力に助けられてばっかで、もう少し勉強が必要だなと痛感しました。今後もやっていきます。
また次回参加できたら参加したいです。今回はじめてで緊張してなかなか色んな人とお話できませんでしたが、次回是非できればと思います。
運営者・参加者の皆さまお疲れ様でした&ありがとうございました。