ブログタイトル変えました!&OCRの限界と可能性 | せどりガジェット研究所

せどりガジェット研究所

iPhone用せどりアプリ、「せどりすと」の開発者ブログ。
せどりすとに関する情報や、その他副業等の情報発信を行なっています。

こんにちは。府御門です。
ちょっと、Twitterで某アニメ関連でチョイチョイ盛り上がっているので、早々にブログのタイトルを変えてみましたw
その名も、




「せどりガジェット研究所」







中二病って言われても(゚ε゚)キニシナイ!!




宜しくお願い致しますorz




さて、気を取り直して今回は、最新版せどりすとプロに、せどりアプリとして業界初(独自調べ)搭載されたOCR機能のお話です。
OCRの仕組みと限界について説明してみます。
雑学的な話なので、( ´_ゝ`)フーン と、適当にお読み頂ければと思いますw


■OCRの仕組み
OCRとは、Optical Character Reader (光学文字認識装置)の略称で(*1)、早い話が画像から文字を読み取ってしまおうという技術です。歴史は非常に古く、OCRの原型はおよそ100年前にさかのぼると言われています。
*1:Optical Character Recognization(光学文字認識)の場合もあるが、一般的には光学文字認識装置まで含めてOCRと表現されることが多い。

一般的にわかりやすい用途としては、スキャナで書類を読み取ってOCRをかけ、書類の文章を絵としてではなく文字データとして保存する、といったことだと思います。
今はEvernoteにもOCRが搭載され、画像として読み込んだデータを検索できるサービスもありますので、知らず知らずに使っている方も多いかもしれません。

余談ですが、高校時代に英語の教科書訳の宿題が面倒だったので、スキャナーで英語の教科書を読み取り、OCRでテキスト化してそれを翻訳ソフトで日本語にするという荒業をやっていました。
(が、当時のスキャナもOCRも翻訳も性能が低かったためgdgdなアウトプットしか出ず、全く役に立ちませんでしたorz)


さて、このOCRがなぜ画期的なのでしょうか。

私達が文字を見れば、それが何の文字であるかは瞬時にわかります。
このブログを読んでる方であれば勿論日本語は読めますよね。
それでは、みなさんはなぜそんな事が出来るのでしょうか?
それは、生まれてこの方文字に接し、常に訓練をすることで脳が文字のパターンを学習し認識できるようになったからにほかなりません。
例えば、下の文字はなんと書いているのかわかりますか?

اللغة العربية
اليابانية

上はアラビア語で、「アラビア語」、下は「日本語」と書かれています。
私はアラビア語がわからないので、どこが「ア」なのかすらわかりませんが、アラビア語を習得されている人にとっては、造作もなく読めるわけです。
裏を返せば、アラビア語が読める人であっても日本語に触れたことがなければ、このブログに何が書いてあるのか全くわかりませんし、「つのだ☆ひろ」の☆が、文字なのか絵なのかすら判別がつかない事になります。(もっとも、日本人ですら、☆を読むべきか読まないべきか初見では判断できませんが。)

それでは、コンピュータはどうでしょう。
通常コンピュータは文字データは文字データ、画像データは画像データとして認識しているため、画像中にある文字は画像データであって、文字データとして扱うことができません。
言い換えれば、コンピュータは構造的に人間のように画像としての文字を認識することができないため、それが絵なのか文字なのか、文字だとしたら日本語なのかアラビア語なのかということを判別することができないのです。
要するに写真のデータの中にある文字が写り込んでいても、認識することは不可能ということです。
その不可能を可能にしたのが、OCR技術というわけです。
原理的には人間と同様で、コンピュータにも人間のような高度なパターン認識を教えこむことで、画像としての文字をデータとしての文字に変換できるようプログラムされています。
このパターン認識の技術は、OCRだけでなく多くのシステムに応用されており、例えば指紋認識であったり顔認識もOCRの親戚的な技術といます。


■OCRの宿命
そんな高度なOCR技術ですが万能ではありません。

まず、下の3つの文字を見て下さい。

l
I
|

それぞれが何の文字であるか、皆さんは判別できますか?

答えは、1番目は小文字の「エル」2番目は大文字の「アイ」3番目は半角の縦線です。

文字は時として人間でも正確に認識することは困難なことがあります。
それは同様の認識の仕方を行なっているOCRでも例外ではなく、パターン認識を行なう以上、常に「誤認識」という宿命を負っているのです。
一本の線を、エルと読むかアイと読むか縦線と認識するか、はたまた模様とみるかは、コンピュータでも正確に判断するのが難しいのです。
また、白い紙に黒くハッキリと大きな文字が書いてアレば認識率はかなり高くなるのですが、現実的にOCRが必要とされる現場はもっと過酷なもので、文字だか模様だか判然としないケースも多々あるわけです。
例えば、身近なところで言えば、CDジャケットのJANコードは、ジャケットのデザインの上に印字されますから、相当読み取り辛い部類に入ります。

これらの問題は非常に技術的な困難を伴い、未だ認識率100%のOCRは世の中に存在しません。

ですから通常、100%の正確性が要求されるような環境でOCRを運用する場合、目視での確認による修正や、何らかの工夫が必須になります。

せどりすとのOCR機能も実は、バーコード読み取りに替わる機能としての運用を想定しているため、100%の正確性が求められています。(読み取ったコードでそのまま検索されるため)
これを達成するために、誤認識を想定したデータ解析やデータの整合性チェックなど、誤認識を少なくし、データの正確性を確保するための様々な工夫を行なっています。
現在のせどりすとの仕様では、解析やチェックの間に誤りを検出した場合、エラーとして弾いており、正確性を確保したものしか検索リストに追加されないようになっています。
スキャン時にエラーがよく出るのは、誤認識を検出したからというわけです。


ちなみに、せどりすとのOCRで誤検出を防ぐコツは、以下の3つです。
1.読み取る数字を大きめに
2.縦位置は中心くらい
3.数字の前後に余計な模様等が入らないようになるべく枠の左右ギリギリまで数字を持って行く


今後、このOCR機能は更に進化させていく予定です。
今はスキャンボタンを押さなくても認識ができるような自動認識機能が備えられないかを模索中です。

今後も生暖かい目で見守って頂ければ幸いです。 orz


ふみかど