C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[8]: 画像の文字読み取りコンポーネントを探しています


(過去ログ 87 を表示中)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■51622 / inTopicNo.1)  画像の文字読み取りコンポーネントを探しています
  
□投稿者/ モグタン星人 (1回)-(2010/07/12(Mon) 16:14:00)

分類:[VB.NET/VB2005 以降] 

現在作成しているアプリケーション(VB2008で作成)に、いわゆるOCR機能のような
画像(ビットマップ)を読み取り、画像上の文字を読み取ることができるような機能を搭載したいのですが、
そのような.netコンポーネントは市販(あるいはフリーで提供)されていますでしょうか?
ちなみに、画像の背景は白地で、文字は黒を想定しています。
どうぞよろしくお願いいたします。
引用返信 編集キー/
■51623 / inTopicNo.2)  Re[1]: 画像の文字読み取りコンポーネントを探しています
□投稿者/ 魔界の仮面弁士 (1697回)-(2010/07/12(Mon) 16:32:42)
2010/07/12(Mon) 16:56:36 編集(投稿者)

No51622 (モグタン星人 さん) に返信
> 現在作成しているアプリケーション(VB2008で作成)に、いわゆるOCR機能のような
Microsoft Office にも OCR 機能が搭載されています。
http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200805/08050013.txt

> 画像(ビットマップ)を読み取り、画像上の文字を読み取ることができるような機能を搭載したいのですが、
ハードウェア限定(OCRスキャナ、デジタルペン等)/特定スキャナ向け/TWAIN対応/画像汎用/
活字認識用/手書き文字認識用/欧文特化/マークシート対応/
名刺読み取り特化/新聞・雑誌向け/固定フォーマット/フリーフォーマット/
文書管理用途/視覚障害者向け用途/郵便物用などなど、
要件によって多種多様な OCR コンポーネントが販売されています。

それぞれの実装は、ActiveX になっている物もあれば、Declare 宣言して使うタイプの API になっているもの、
.NET のマネージ API として実装されているものなど、製品によってまちまちです。

> そのような.netコンポーネントは市販(あるいはフリーで提供)されていますでしょうか?
国内外を google 検索すると、幾つかの背品が見つかるかと思いますので、要件にあうかどうか、
それぞれのメーカーに仕様を電話かメールで問い合わせてみては如何でしょう。

とりあえず、検索して出てきた製品群です。
VB からの制御が可能かどうかまでは調べていませんので、
必要であれば各社に問い合わせてみて下さい。
(メーカーによっては、評価版CD-ROM を郵送してくれる所もあったはず)

・株式会社PFU(製品例:DynaEye)
・メディアドライブ株式会社(製品例:e.Typist)
・パナソニック ソリューションテクノロジー株式会社(製品例:読取革命)
・ソースネクスト株式会社(製品例:本格読取)
・エプソン株式会社(製品例:A.I.SOFT 読んde!!ココ)
・株式会社クロスランゲージ(製品例:読取ワールド)
・株式会社ハンモック(製品例:TeleForm)
引用返信 編集キー/
■51624 / inTopicNo.3)  Re[2]: 画像の文字読み取りコンポーネントを探しています
□投稿者/ モグタン星人 (2回)-(2010/07/12(Mon) 16:43:08)
No51623 (魔界の仮面弁士 さん) に返信
> ■No51622 (モグタン星人 さん) に返信
>>現在作成しているアプリケーション(VB2008で作成)に、いわゆるOCR機能のような
> Microsoft Office にも OCR 機能が搭載されています。
> http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200805/08050013.txt

魔界の仮面弁士さん、書き込みありがとうございます。
Microsoft OfficeのOCR機能は、レイトバインドは可能でしょうか?
もし可能であれば、試してみたいと思います。

OCRコンポーネントがいくらくらいするのかとグレープシティのサイトを見ると、
高機能のためかけっこう高いですね。
それほどの機能はいらないですけれど。
引用返信 編集キー/
■51626 / inTopicNo.4)  Re[3]: 画像の文字読み取りコンポーネントを探しています
□投稿者/ 魔界の仮面弁士 (1698回)-(2010/07/12(Mon) 17:24:05)
No51624 (モグタン星人 さん) に返信
> Microsoft OfficeのOCR機能は、
アプリとしては、mspview.exe です。

> レイトバインドは可能でしょうか?
参照設定して使う方法では、何か都合が悪いのでしょうか?

レイトバインドの場合、イベント(例:OnOCRProgress)の取り扱いに苦労することには
なるでしょうが、それでも構わなければ、参照設定せずに使うことも可能だと思います。
VB.NET からの利用経験はありませんが、少なくとも VBScript からも利用できていましたし。

Set doc = CreateObject("MODI.Document")
Call doc.Create("C:\sample.png")
Call doc.OCR(&H11, False, False)
Call MsgBox(doc.Images(0).Layout.Text)


手元に VB.NET の実行環境が無いのですが、以前、VB6 で書いたときのコードや
C# + 参照設定で呼び出したときのコードを元にすると、こんな感じだと思います。
(エラー処理やオブジェクトの解放処理などのコードは省いています。

doc = CreateObject("MODI.Document")
doc.Create("C:\sample.png")
'&H800 = MiLANGUAGES.miLANG_SYSDEFAULT
' &H9 = MiLANGUAGES.miLANG_ENGLISH
' &HC = MiLANGUAGES.miLANG_FRENCH
' &H11 = MiLANGUAGES.miLANG_JAPANESE
' &H12 = MiLANGUAGES.miLANG_KOREAN
'&H404 = MiLANGUAGES.miLANG_CHINESE_TRADITIONAL
'&H804 = MiLANGUAGES.miLANG_CHINESE_SIMPLIFIED
doc.OCR(&H11, False, False)

images = doc.Images
Console.WriteLine(images.Count)
img = images(0)
layout = img.Layout
Console.WriteLine(layout.Text)
words = layout.Words
Console.WriteLine(words.Count)
word = words(0)
Console.WriteLine(word.Text)
引用返信 編集キー/
■51627 / inTopicNo.5)  Re[4]: 画像の文字読み取りコンポーネントを探しています
□投稿者/ オショウ (542回)-(2010/07/12(Mon) 17:50:10)
>>Microsoft OfficeのOCR機能は、
> アプリとしては、mspview.exe です。

  をを〜使ってみました。

  因みに、文字の大きさ(画素数)が大きくないと誤認しやすいみたい。
  調整がどこまでできるか解りませんが・・・

※ フォントの大きさ的に言えば、20pointは必要(日本語の場合)
  英数字ならばもっと小さくても大丈夫かも。

以上。参考まで
引用返信 編集キー/
■51630 / inTopicNo.6)  Re[4]: 画像の文字読み取りコンポーネントを探しています
□投稿者/ モグタン星人 (3回)-(2010/07/12(Mon) 20:45:48)
No51626 (魔界の仮面弁士 さん) に返信
魔界の仮面弁士さん、ありがとうございます。
レイトバインドにしたい理由は、これのバージョンに依存せずに使いたいことと、
これがインストールされていないPCでは例外処理できるようにしたいからです。

とりあえず、以下のようにしてみたら、「OCR Running error」というComExceptionが発生しました。

Dim doc As Object = CreateObject("MODI.Document")
doc.Create(画像ファイルのパス)
doc.OCR(&H11, False, False) 'ここでOCR Running errorとなる

これは何が原因なのでしょうか?
引用返信 編集キー/
■51637 / inTopicNo.7)  Re[5]: 画像の文字読み取りコンポーネントを探しています
□投稿者/ 魔界の仮面弁士 (1699回)-(2010/07/13(Tue) 10:04:23)
2010/07/13(Tue) 10:07:11 編集(投稿者)

No51627 (オショウ さん) に返信
> ※ フォントの大きさ的に言えば、20pointは必要(日本語の場合)
20pt を必要としたということは、恐らく、元画像が 72〜96dpi 程度だったのでは無いでしょうか。
充分な解像度があれば、ポイント数の小さい文字であっても判読できる可能性が高いです。

MODI に限らず一般的な日本語 OCR の場合、最低でも 300 dpi、できれば 400 dpi 以上の
解像度を用意すると認識率が安定すると思います。白黒(あるいはグレースケール)だとなお良し。
(元データが名刺ならば、長辺が 1000〜1500ドットぐらいになる解像度です)

加えて言えば、OCR ソフトによっては、画像そのもののピクセル数だけではなく、画像データ中の
DPI 設定(BMP なら bi{X/Y}PelsPerMeter)が重要になることもあります。

なお、画面ハードコピーからの日本語認識を主とする場合には、汎用OCRソフトだけでなく、
視覚障害者対応のソフトにも目を向けておくと良いかもしれません。
# モグタン星人さんの利用目的が分からないので、どのような製品が適切なのかは分かりませんが。


No51630 (モグタン星人 さん) に返信
> レイトバインドにしたい理由は、これのバージョンに依存せずに使いたいことと、
MODI の場合、Office XP でのサポートは限定的であるため、実質、
利用可能な環境が Office 2003 または 2007 に限られると思います。
Office 2010 には含まれていないので注意してください。
http://support.microsoft.com/kb/982760/ja

> Dim doc As Object = CreateObject("MODI.Document")
インスタンスを生成できるという事は、インストールは済んでいるようですね。

> doc.Create(画像ファイルのパス)
> doc.OCR(&H11, False, False) 'ここでOCR Running errorとなる
どのバージョンをお使いですか?

Office 2003 だとしたら、とりあえず miLANG_SYSDEFAULT を試してみてください。
というのも、Office 2007 版のヘルプには、
》「Microsoft Office Document Imaging の新機能」
》OCR には、次のサポートが追加されました。
》・東アジア言語のテキストが認識されます。
という表記があるためです。

2007 を利用しているのに使えない場合は、最新版の Service Pack を適用するか、
KB951165 の修正パッチを利用してみて下さい。
http://support.microsoft.com/kb/944244/ja
引用返信 編集キー/
■51638 / inTopicNo.8)  Re[6]: 画像の文字読み取りコンポーネントを探しています
□投稿者/ モグタン星人 (4回)-(2010/07/13(Tue) 10:21:35)
No51637 (魔界の仮面弁士 さん) に返信
魔界の仮面弁士さん、いつもありがとうございます。
とりあえず英数字を認識できればいいので、言語の引数を
&H9(MiLANGUAGES.miLANG_ENGLISH)にし、画像を拡大したら読み取りでき、
また、「OCR Running error」というComExceptionが消えました。
どうやら読み取りに失敗するとこの例外が発生するようです。

また、

> Office 2010 には含まれていないので注意してください。
> http://support.microsoft.com/kb/982760/ja

もし、Office 2010を使用している場合、Microsoft提供のOCR機能は使えないのでしょうか?
よろしくお願いいたします。
引用返信 編集キー/
■51666 / inTopicNo.9)  Re[7]: 画像の文字読み取りコンポーネントを探しています
□投稿者/ やじゅ (1671回)-(2010/07/13(Tue) 20:31:36)
やじゅ さんの Web サイト
2010/07/13(Tue) 20:56:30 編集(投稿者)

No51638 (モグタン星人 さん) に返信
> とりあえず英数字を認識できればいいので、

英数字でいいなら、オープンソースで探せば幾つかありそうです。
とりあえず、Googleのを紹介します。

Googleがオープンソースとして公開した「Tesseract」がOCRエンジン
http://sourceforge.net/projects/tesseract-ocr/
tessnet2_32.dll .NET wrapper Library
http://www.pixel-technology.com/freeware/tessnet2/
Google製エンジンを搭載したフリーの欧文OCRソフト「Softi FreeOCR」v1.5
http://www.forest.impress.co.jp/article/2007/07/30/softifreeocr.html
引用返信 編集キー/
■51697 / inTopicNo.10)  Re[8]: 画像の文字読み取りコンポーネントを探しています
□投稿者/ モグタン星人 (5回)-(2010/07/14(Wed) 14:00:59)
No51666 (やじゅ さん) に返信
やじゅさん、サイトの紹介ありがとうございます。
ちょうど、私も紹介して頂いたサイトを見つけました。

> tessnet2_32.dll .NET wrapper Library
> http://www.pixel-technology.com/freeware/tessnet2/

とりあえずは英数字のみのスキャンでいいので、言語を英語にして、ちょっと試してみました。
(英数字以外を無理やり英数字に変換しようとしていました。)
これで何とかやってみようと思います。

ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -