オルトプラスエンジニアの日常をお伝えします!

バックアップの中心で愛を叫ぶ

※このタイトルは ホッテントリメーカーで作られました。

こんにちは、id:iandoです。

業務かどうかに関わらず、バックアップって大事ですよね。 普段使う個人PCのバックアップはみなさんどうされているでしょうか?

NASなど使ったり、専用の仕組みでやってみたり、色々な方法があると思いますが、私が使っている方法の一つを今回はご紹介したいと思います。

続きを読む

最速分報を目指して

こんにちは id:kotamat です。

最近自分の所属しているチームにもSlackを導入し、分報を書き始めているのですが、 私はエンジニア三大美徳の怠惰を兼ね備えた人間ですので、わざわざSlackなんて開きたくないわけです。

そんな中ふと解決策を思いつき、実行してみたところ、意外とうまく行った方法があったので、共有したいと思います。

tl; dr

  1. Alfred
  2. Slackプラグインをいれて
  3. Workflowを自分好みに修正

分報って?

c16e.com

こちらのブログにまとまっておりますが、要はつぶやきの感覚で報告をするというもの。 自分用のチャンネルを用意し、そこに自分の思っていることや困っていることなどを自由に書き込み、 他の人がそれをみて助けられれば助けるみたいな形で運用していきます。 私は #times_kotamat というチャンネルで分報を導入しております。

Alfred

AlfredはMacOS用のランチャーアプリです。 自分好みのキーバインディングを指定しておくと、どのアプリケーションを開いている状態でも、Alfredランチャーが開き、ローカルファイルの検索からブラウザでの検索・電卓計算まで様々なコマンドを実行できます。

また有料バージョンにすることによってAlfredWorkflowというユーザ任意でのコマンドを作成することができます。

f:id:kota-matsumoto:20170117101033p:plain

ワークフローはこのようになっており、ユーザ任意でコードを差し込みつつ、パイプラインで処理を連結させられます。

ランタイムはphp, ruby, python, AS, JS, bash, zshに対応しており、バイナリを生成しておけば事実上他の言語も対応していることになります。

Slackプラグイン

こちらのドキュメントが見やすいので、みてもらうのが一番かとおもいますが、

f:id:kota-matsumoto:20170116200701p:plain

こんな感じで書き込むと #times_kotamat チャンネルに"てすと"という投稿をすることができます。

設定は簡単で slack --token <slackから取得したtoken> で登録ができます。

また、自動補完の機能も搭載しているので

f:id:kota-matsumoto:20170116201021p:plain

の状態でTabを押すと

f:id:kota-matsumoto:20170116201040p:plain

となり、入力が簡単です。

Workflowを自分好みに修正

ただこれでも怠惰な自分としてはslack kota + Tabと入力するのは面倒です。 そこでWorkflowを修正しました。

変更したいのはインプットのところですので、一番左の項目を選択し、コピペ

f:id:kota-matsumoto:20170117101336p:plain

"Keyword"を"f"に変更

"Script"の$query = "{query}"に #times_kotamatを追加

f:id:kota-matsumoto:20170117101520p:plain

最後にワークフローをスクリプトの方につなげてあげれば完了です。

f:id:kota-matsumoto:20170116195643p:plain

これで"f" と入力した後、テキストを入力すれば分報を送信できるようになりました。

まとめ

Alfredを使い、分報を早く書き込む方法を紹介しました。 今のところ満足しているので、このまま使っていこうかと思います。

文字認識改善用の前処理について

こんにちは、オルトプラスベトナムのフーンです。

最近社内で OCR(Optical Character Recognition)に関連したプロジェクトで、実装を担当しました。本記事では OCR 用の入力改善方法を紹介します。

背景

OCR処理を実行したとき、時々認識精度が低いことがあります。色々な原因が考えられますが、主な理由は入力の品質が悪いことです。以下、私が使った入力の品質改善方法を紹介したいと思います。

文字認識の精度改善方法

1.      オリジナル画像の直立化

スキャンされた画像、または中央揃えでない撮影画像は、文字認識の精度に影響を与えます。そのため、ホモグラフィという変換方法を使用して画像を直立位置に回転します。

ホモグラフィとは、3x3の行列を変換し、変換後の画像に反映したい点に従ってオリジナル画像に写っている各ポイントを変換後の画像に射影するマトリックスです。

変換マトリックスは、以下の公式で計算されます。

f:id:hungh:20170112103044p:plain

したがって、f:id:hungh:20170112104802p:plain となります。

オリジナル画像の座標値を取得する方法

オリジナル画像から top-right、 bottom-right、 top-left、 bottom-leftの4つの座標値を取得します。

top-left: X値とY値を足した数が最小値である 座標値

bottom-right: X値とY値を足した数が最大値である 座標値

top-right: Y値からX値を引いた数が最小値である 座標値

bottom-left: Y値からX値を引いた数が最大値である 座標値

変換後の画像の座標値を取得する方法

変換後の画像は2Dの正方形または長方形である各ポイントの集合から構成されます。オリジナル画像の情報がなくならないように変換後の画像の座標値を最も適当となるように計算する必要があります。また変換後の画像の面積はオリジナル画像(srcArea)と同じ面積の方がよいと思います。

変換後の画像の縦幅の計算方法:

オリジナル画像の縦横比は仮のratio であり、画像の縦横の計算式は下記のとおりです。

dst_width =f:id:hungh:20170112103334p:plain ;

dst_height = ratio * dst_width;

つまり変換マトリックスに入れるための変換後の画像の4つの座標値を以下のように取得できます。

Point1(0,0), Point2(dst_width-1,0) , Point3(dst_width-1, dst_height-1) , Point4(0, dst_height-1) 

結果は、以下になります。

図1-1. オリジナル画像

f:id:hungh:20170112102622p:plain

図1-2. 変換後の画像

f:id:hungh:20170112102642p:plain

2.      文字ではなさそうところを排除し、ノイズを除きます。

John F. Cannyのアルゴリズムにより、エッジを検出します。

図2-1.

f:id:hungh:20170112102701p:plain

検出したエッジによりカバーの長方形の面積を計算して、不要なところを削除します。

図2-2. 削除後の画像

f:id:hungh:20170112102721p:plain

3.      バイナリ化

3.

f:id:hungh:20170112102738p:plain

おわりに

OCRソフトウェアを開発する場合、文字認識の改善には色々な方法があります。上記は、OCR入門者にも簡単な方法ですので、ぜひ試してみてください。