はじめに

Share

カメラを使ったAndroidのアプリケーションを作ってみました。

今回挑戦したのは、OCRサービスを利用した型番リーダーというものです。

動作環境:Android 1.6

現在のバージョン:0.0.4

 

1.これはなに?

知り合いの方が、中古品に印刷されていたり、刻印されている製品の型番を管理する際に、手入力するのが面倒だ、と話していたのをヒントに、OCRを利用した型番読み取りアプリ、型番リーダー、を作成しました。バーコードがあるような物(書籍など)なら、既にバーコードリーダーがあるので不要なのですが、番号だけでも対応できるものが欲しいということです。

カメラで型番の文字を写すとOCRサーバー(ここではWeOCRというOCR用Webサービスプラットフォームを使ったサーバー)に画像を送って、認識した結果を表示します。

アプリの実行中の画像はこんな感じです。

撮影時の画面

ファインダーに読み取りたい文字列を合わせて、シャッターボタンを押すと、サーバーと通信後、

読み取り後の画面

のように、写した画像と読み取り結果が表示されます。

OCRの認識結果に間違いはつきものなので、その場で編集もできます。

共有ボタンを押して、編集結果をクリップボードに貼り付けたり、メールで送ることができます。


使い道としては、型番はもちろん、SSIDや何かの登録番号などなど、長い英数字を入力するのが面倒な時に使うと(多少は)入力が楽になるかもしれません。

 

2.使い方

このアプリは単独でも使えますし、Simejのマッシュルームアプリとしても使うことができます。

使い方は触ってみれば分かると思いますが、簡単に使い方も書いておきます。

単独のアプリとして使う

  1. アプリを起動します。
  2. ファインダーに読み取りたい文字列を合わせます。文字列は1行の英数字の印刷文字が対象です。
  3. 黒い背景に白い文字の場合は反転ボタンをオンにします。
  4. シャッターボタンを長めに押します(オートフォーカスが作動します)。
  5. ボタンから指を離すと、撮影を行い、サーバーに問い合わせます。
  6. 読み取り結果と画像を見比べて、間違っていたら修正します。
  7. 共有ボタンを押すと結果がクリップボードに貼り付けられ、始めの撮影画面に戻ります。
  8. キャンセルボタンを押すと、始めの撮影画面に戻ります。

共有ボタンを押した際の動作は、

  • クリップボードに貼り付ける
  • メール本文に貼り付ける
  • Googleで検索する

から選べます。インストール時のデフォルトの動作は、クリップボードです。

動作の変更は、Menuキーから設定画面を呼び出して行います。

Simejiのマッシュルームアプリとして使う

  1. テキスト入力をする場所で、Simejiを使います。
  2. Simejiの『マッシュルームキー』を押します。
  3. 選択画面で、『型番リーダー』を選択します。
  4. あとは、単独のアプリと同じです。

なお、マッシュルームアプリとして実行した場合は、共有ボタンを押すと読み取り結果をテキスト入力欄に張り付けます(共有ボタンの動作設定は無視されます)。

キャンセルボタンを押すと、再度撮影画面に戻ります。

 

一応、こちらのページに使い方をまとめておきました。

3.機能

このアプリの主な機能をあげると次のようなものです。

  • カメラを使い、ファインダーに捕らえた文字列をOCRサーバーに送り、 結果を受けとります。
  • アプリ単独またはSimejiから呼び出して使うことができます。
  • 認識可能文字は、英数字記号です。
  • ファインダーの位置、大きさを変更することができます。
  • シャッターボタンを押すと撮影します。
  • シャッターボタンを長押しするとオートフォーカスが働き、その後指を離すと撮影します。
  • OCRサーバーへ問い合わせ後、認識結果と撮影した画像を表示します。
  • 認識結果は自由に編集することができます。
  • 編集結果を、クリップボード・e-mail・Google検索、に送ることができます(共有ボタン押下時)。
  • 共有ボタンを押したときの動作をあらかじめ設定できます(デフォルトはクリップボード)。
  • 共有ボタンを長押しすると、一時的に送信先を変更できます。
  • e-mailを選択した場合、あらかじめ宛先を指定しておくことができます。
  • OCR結果、日時、画像、緯度経度などの送信内容を選択することができます。

 

4.ダウンロード

野良アプリとしてインストールすることができます。

apkファイルおよびソースコードとも、こちらのページからダウンロードできます。

(ライセンスはApache2です)。

5.既知の問題

  • 認識結果をe-mailで送る場合、画像ファイルを添付できます。この際、e-mailアプリとして、GMailを選択した場合、画像ファイルが添付されません。

6.OCR機能について

このアプリのOCR機能は、WeOCRサーバーを利用しています。WeOCRとはOCRエンジンに対するWebインターフェースを提供するプラットフォームソフトウェアです(WeOCRのサイトはこちらです)。

初期設定では、東北大学にあるWeOCRサーバー(OCRエンジンはocrad)を見にいくようにしています。アプリの設定画面からサーバーのアドレスを設定することで、任意のWeOCRサーバーを使うことができます(もちろん、利用先のサーバーの利用規程を守ってください)。

また、WeOCRのソースコードはApache2ライセンスのもとで公開されているので、オープンソースのOCRエンジンと組み合わせて、ご自分でサーバーを立てることも可能です。

7.注意事項

初期設定で使っている東北大学のサーバーは商用利用が禁止されています(こちらの利用規程をご覧ください)。

このアプリそのものは商用利用を禁止していません。従いまして、もしも、商用利用する場合は、ご自分でWeOCRサーバーを立てて、アプリの設定でそちらを使うようしてください。

8.雑感

最初はOCRを使ったアプリで、仕事や日常生活に役立つものができないかと考えていました。

しかし、いまのところ、認識率や使い勝手の点から、まだまだ難しそうです。実機テストは、GDD phone(Android 1.6)を使ったのですが、携帯電話のカメラだとどうしても手ぶれがあるのでなかなか綺麗に写すことができませんでした。

また、アプリとしての観点からすると、今のところ単なるWeOCRサーバー呼び出しのフロントエンドにしかなっていないので、『型番リーダー』としての独自性があまりありません。

せっかくカメラのある携帯電話や、オープンソースのOCRエンジンやWebサービスがあるので、うまく役立てるようなアプリにしたいと思っています。

9.最後に

ご意見、ご要望などがあれば、(どこまで反映できるかは保証できませんが)お気軽にご連絡ください。