質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Tesseract

Tesseractは、Googleが提供しているオープンソースのOCRエンジンです。機械学習があり60以上の言語に対応でき、日本語の文字認識も可能です。さらに精度を上げることもできます。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

16600閲覧

C#で画像から日本語のテキストを読み取りたい(OCRしたい)。

aglkjggg

総合スコア769

Tesseract

Tesseractは、Googleが提供しているオープンソースのOCRエンジンです。機械学習があり60以上の言語に対応でき、日本語の文字認識も可能です。さらに精度を上げることもできます。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

1クリップ

投稿2016/09/09 14:08

編集2016/09/12 09:00

###前提・実現したいこと
C#で画像から日本語のテキストを読み取りたい(OCRしたい)。

###発生している問題
現在C#でtesseract ※1を利用しています。

こちらの jpn.traineddataは認識精度がとても悪かったので、
https://github.com/tesseract-ocr/tessdata/blob/master/jpn.traineddata

以下の記事を参考に、tesstrain.shを用いて「メイリオ(Meiryo)」だけの言語データを作成し、
OCRを行ったのですがそれでも認識精度がイマイチです。
http://qiita.com/atuyosi/items/c0933b5edf605c4a7c19

イメージ説明
↑読み取り対象の画像です。(フォントはメイリオです)

イメージ説明

tessract-ocrの実行結果

※1
NuGet - Tesseract
https://www.nuget.org/packages/Tesseract/

また、以下のように認識のホワイトリストも付け加えましたが精度は向上しませんでした。

tesseract.SetVariable("tessedit_char_whitelist", "アイウエオァィゥェォカキクケコガギグゲゴサシスセソザジズゼゾタチツテトダヂヅデドナニヌネノハヒフヘホバビブベボパピプペポマミムメモヤユヨラリルレロワヲンーabcdefghijklmnopqrtsuvwxyz");

プログラム

static string GetStringFromImage(Bitmap img) { using (var tesseract = new Tesseract.TesseractEngine(@"C:\", "jpn")) { var page = tesseract.Process(img); return page.GetText(); } }

NHocrも利用してみましたがtessract-ocrより精度が悪く実用性が感じられませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ご質問の意図は、OCRの認識精度を向上させたい、でよろしいですね。

質問文ではライブラリの話が中心になっていますが、
認識対象の画像を自前で作れる(補正できる)場合は、
精度向上の工夫の余地がたくさんあります。

OCRのアルゴリズムには、文字認識だけではなく、
文字抽出の工程もあるからです。

たとえば、画像拡大、解像度向上、ハイコントラスト化、
ノイズ除去、二値化、角度補正、……などなど。

さらに、もし対象の文章も自前で作れる場合には、
フォント、行間、字間、難読漢字の校正など、
あらかじめOCRを見すえた編集工程にします。
そもそも紙からテキストデータへの変更が可能ならします。

購入した書籍だからそれはできない……という場合が多いでしょうが、
その場合も、OCRしやすい本を買う、電子書籍を買う、洋書を買う、
という選択肢もあります。本末転倒のようですが、
目的のために手段を選ばない場合には参考までに。

そもそも、たんに実用面だけの話をすれば、
日本語は漢字の種類が多いので、いくらグーグルでもこれに関しては、
国内の市販ソフトの方が日本語読み取りの精度が高いようです。

そこをどうしてもライブラリにこだわるなら、
やはり認識前の工程でどれだけ下ごしらえできるかだと思います。

投稿2016/09/09 15:28

編集2016/09/09 16:49
LLman

総合スコア5592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aglkjggg

2016/09/09 17:21

残念ながら読み取り対象データは帰ることが不可能ですので、 まずはフリーのtessractで、 読み取り精度が高くなるように画像処理を加える事をトライしてみます。 試しにGoogle Visionも利用してみて、精度はなかなかよかったのですが、 オフラインでの動作を求めていたので今回は見送りました。 ※tessractもHPが開発したのをgoogeが引き継いだようですが どうしてもダメであれば国内が出している有償ライブラリも価格等考慮して購入を検討してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問