アプリでOCR

ソラの皆さんも最近はかなり高度なことに興味を持たれることも多くなって来ました。そのひとつがスマホアプリの制作で、中学生になった彼らは結構精力的に取り組んでくれています。

先日技術調査のため、3年ぶりくらいにスマートフォンアプリの検証アプリケーションを制作しましたので、こちらで共有しますね。

今回の調査の目的はフリーのOCRライブラリの制度の検証でした。現在アプリケーション上で利用できるSDK(ソフトウエア開発用キット)となっているライブラリは結構な数出ているのですが、こちらで紹介するのはフリーのライブラリである「tesseract-ocr」を検証した際のアプリケーションです。

https://github.com/tesseract-ocr

■開発した環境

Mac:macOS Sierra
統合開発環境:XCode8.2
開発言語:Swift3
iOS: 10.0
デバイス:iPhone7 Plus
折角なので環境は最新の環境で開発を行ってみることにしました。AppStoreよりXCodeのインストールで可能ですし、上記ライブラリは、iOSライブラリ管理ツールCocoapodsに対応しているため、開発環境の構築はすぐに完了できます。

少々苦労したのは、Swiftと呼ばれる開発言語を最新の「3」で行ったことでした。この「Swift3」は10月に公開されたもので、まだまだ参考情報が少ない状況です。参考にさせていただいたサイトのほとんどは過去のSwiftで作成されたものですから、この対応は少々手間取りました。

参考にさせていただいたサイト:
http://a244.hateblo.jp/entry/2015/07/28/060803

起動すると「走れメロス」が記載されている画像が表示されます。この画像からまずは全て読み込むようにしたのが、1枚目の画像です。画像内すべての文字列を認識してグレーの領域に表示するようになっています。この結果をどのように感じるのかは皆さんにおまかせします(笑)が、一般的にいうと現在日本語の識字率は60%程度のようで、実際の感想としても「良く出来てるじゃん」というものでした!

これだけでは淋しいので、画面上でスワイプしたモノに関しても文字が認識できるようにしてみました。こちらが2枚目です。選択した範囲が赤枠で表示され、実際に認識された文字列がグレーの領域に表示されます。画像の全文だと5秒弱かかっていたのですが、領域を選択すると1秒かからずに表示され全くストレスを感じない程度になりました。

今後は。。。

今後このOCRの機能を少し深めていく方向にしてみようかと思っています。膨大な紙データをスキャナのようなものですべて読み込めば速いのですがそれはある程度紙が整っている状況でないと難しいです。一方画面上にカメラで表示されているものを選択して文字列を読み込むようなものは、スマートフォンなどでコンビニのレシートなどを読み込むのに使えそうです。頑張って以下の機能を追加して製品に向かってみようと思います。

1.カメラコントロール
2.OCR解析データの管理機能
3.データ出力機能

せんせいもたまにこんな事やってます!スマートフォンアプリを制作したい生徒さんはぜひ声かけてください!!