C#で文字認識(Windows.Media.Ocr.OcrEngine)を試す
GitHub
今回、作成したもの。
結果から
画像から文字を認識するのは想像以上にできませんでした。
今回は現実のものがサンプルだったので良い結果を得られなかったかもしれません。
もし、サンプルがPC画面上に表示している文字(画面キャプチャ)だったらしっかり文字認識をしていたかもしれません。
…画面キャプチャを試してみたらしっかり認識しました…おーい!!!
目的?はレシートの文字認識だから何とも言えないですな。
発端
参考
本当にありがとうございます!
開発環境など
- Windows 10 Home
- Version 22H2
- Microsoft Visual Studio Community 2019
- Version 16.11.26
- C#
- WPF
- .NET5
文字認識対象
FF14のプリペイドカード表面
- カラー、グレースケール、白黒の3種類の画像を用意した
- カラーと白黒は
極語句単位で5枚の画像を用意した
文字要素
カードにある文字要素は次の5つ。
- SQUERE ENIX
- 30日利用券/¥1,628
- ファイナルファンタジーXIV
- FINAL FANTASY(R) XIV
- ONLINE
文字認識前予想など
- 小さい文字の認識はできるのか?
- 文字要素の1と2、4の一部が小さい
- 2は
30日利用券/
が小さい- ¥1,628は読み込めそう
- 4は
(R)
だけが特に小さい、認識は厳しそう
- 認識文字の種類を日本語にしているから、英語でも試す必要はありそう
- 試してみたが大きな変化は無かった
カラー画像の結果
SQUARE ENIXÉ*E 3 。 日 利 用 券 / ¥ 1.628
カラー個別画像の結果
1, 3, 4, 5枚目
認識できなかった。
2枚目
30 日 利 用 券 / \ 1 , 628 '
グレースケール画像の結果
認識できなかった。
白黒画像の結果
30 日 利 用 券 フ ァ イ ナ ル フ ァ ン タ ジ ー Ⅵ 、 Ⅲ 影 躡 IIV
白黒個別画像の結果
1, 3, 5枚目
認識できなかった。
2枚目
30 日 利 用 券
4枚目
Ⅱ 盟 、 F 贐 Ⅳ
各プリペイドカード画像の文字認識の感想
- 想像以上に文字認識ができていない
- 黒印字されている文字が文字認識には最良か?
- 大きい文字は文字として認識していない
- 認識できる文字の大きさに上限があるのか?
- 漢字やカタカナの間に半角スペースが入る
- 半角スペースを削除する必要がある
- 文字が淡い色使いだと文字として認識しない
- 文字色と背景色に明確な違いがあれば認識する?
スーパーマーケットのレシート
- 一部の要素を塗りつぶしたレシート画像を用意した
レシート画像の文字認識の結果
・ カ ネ ス 工 受 付 時 関 9 : OO 20 : 00 お 問 合 セ ン タ ー 0120 一 922-640 く 領 収 害 > 2023 年 6 月 5 日 ( 月 ) お 会 計 券 0002 コ ク ナ イ サ ン タ ベ ル ! \ 99 員 分 類 一 括 3 % ! ¥ 110 員 分 類 一 括 3 % ! \ 137 員 分 類 一 括 3 % ! \ 77 員 分 類 一 括 3 % ! \ 97 員 分 類 一 括 3 % ! \ 97 員 分 類 一 括 3 % ! ¥ 97 員 分 類 一 括 3 % 員 分 類 ・ 一 括 3 % 0007 ノ ウ コ ウ ヰ ヌ ! \ 114 ( 2 個 x @57) 会 員 分 類 一 括 3 % ! \ 107 会 員 頁 一 括 3 % 0013 プ ル ガ リ ア ヨ ー グ ! \ 147 会 員 分 類 一 括 3 % 小 計 ¥ 1 , 123 \ 1 , 123 ) ( 外 % 対 象 額 外 税 額 \ 90 買 上 点 数 12 点 言 十 ¥ 1 , 213 お 予 頁 り ¥ 1 , 213 ( 消 費 税 お 釣 り \ 0 轆 兇 率 : 無 印 標 準 税 率 ・ 会 会 会 会 会 会 会 会 \ 90 )
レシート画像の文字認識の感想
- 「OO」「0」、なぜ異なる?
- 「長音」「ハイフン」「漢数字の一」との見分けがつかない
- 領収書は「害」だった?
- 空白を何かしらの文字で埋めれば改行が発生しないのでは?
- 文字間の空白が多いと改行している
- 半角カタカタは文字認識しない?
- 文字認識する行間が存在する?
- 行頭にも問題があったりするのか??
- 「会 会 会 会 会 会 会 会」あー誰かに会いたいな!
- 「会員分類一括」で認識できなかった「会」か?
- 8行分だから数は合っているが…
編集したスーパーマーケットのレシート
- 少し粘る、少し編集したレシートを用意し、文字認識をさせてみた。
- 「あ」「い」の書体はメイリオ、「う」「え」はMS明朝、「え」は太字にした
レシート画像2の文字認識の結果
・ カ ネ ス 工 受 付 時 関 9 : OO 20 : 00 お 問 合 セ ン タ ー 0120 一 922-640 く 領 収 害 > 2023 年 6 月 5 日 ( 月 ) お 会 計 券 0002 コ ク ナ イ サ ン タ ベ ル ! \ 99 員 分 類 一 括 3 % あ あ あ あ あ ー 2 員 分 類 一 括 3 % い い い い い - ! \ 137 つ つ つ つ つ つ 員 分 類 一 括 3 % ー \ 77 員 分 類 一 括 3 % ー \ 97 員 分 類 一 括 3 % ー \ 97 員 分 類 一 括 3 % ` ¥ 97 員 分 類 一 括 3 % 員 分 類 ・ 一 括 3 % 0007 ノ ウ コ ウ ヰ ヌ ! \ 114 ( 2 個 x @57) 会 員 分 類 一 括 3 % ! \ 107 会 員 頁 一 括 3 % 0013 プ ル ガ リ ア ヨ ー グ ! \ 147 会 員 分 類 一 括 3 % 小 計 ¥ 1 , 123 \ 1 , 123 ) ( 外 % 対 象 額 外 税 額 \ 90 買 上 点 数 12 点 言 十 ¥ 1 , 213 お 予 頁 り ¥ 1 , 213 ( 消 費 税 お 釣 り \ 0 轆 兇 率 : 無 印 標 準 税 率 ・ 会 会 会 会 会 会 会 会 \ 90 )
レシート画像2の文字認識の感想
- 空白を文字で埋めて1行と見なさせる効果はあるにはある
- 何故、「キャベツ」を認識しないのか?
- 初回から認識していなかったので行間の問題だろうか
- 「う」が「つ」と認識している
- 認識させる文字はしっかり表示・印字していないとダメっぽい
- 認識しやすい文字がありそう?
- 最初は「@」で試したがダメだった
- 文字サイズを上げればいけるかも?
その他に得た何か
- プリペイドカードやレシートはスキャナでスキャンしたものです
- スキャン時の設定で解像度(DPI)は
300
が望ましいです - DPIが300未満ですと、文字のどこかに欠けが発生しているケースがありました
そもそも文字認識の結果が悪すぎてそれどころじゃない
- スキャン時の設定で解像度(DPI)は
- 手書きの文字が載った画像を文字認識させてみましたが駄目でした
- ボールペンで書いた文字は認識できませんでした
- ネームペンで書いた文字は認識できましたが、誤認識でした
- 綺麗な字を書けば正しく認識するかもしれません
- ちなみに書いた文字は「数字の1~9」です
- 数字の1~9、12478が「/ ユ イ ク ま」と認識されました
- 少し斜めに描いたのが問題かもしれません
何かの暗号に使えますね!!
- 数字の1~9、12478が「/ ユ イ ク ま」と認識されました
- 認識する文字を日本語から英語に変換したらOCRエンジンがNullになりました
- 英語の言語パックをインストールしていなかったのが原因でした