画像を読み取るプログラムの作成について

このQ&Aのポイント
  • JAVAで画面上に画像で表示された文字を読んで、テキストファイルに出力するソフトウェアを作成することは可能でしょうか?
  • ソフトを起動して画面上に表示された画像を読み取り、特定の文字をテキストファイルに出力するプログラムを作成する方法について教えてください。
  • 画像を事前に登録しておいて特定の文字を読み取るプログラムを作成することはできるのでしょうか?
回答を見る
  • ベストアンサー

画面上に画像で表示された文字を読むプログラム

JAVAで画面上に画像で表示された文字を読んで、テキストファイルに出力するソフトウェアを作ることは出来ますか? 0、 ソフトを起動させる 1、 画面に 数字の「1」を描いた画像を表示させておく 2、 ソフトの読み込みボタンをクリックする(特定のショートカットキーでも良いです) 3、 テキストファイルが生成されて、「1」という数字を出力する おそらく、画像を読む前に、あらかじめその画像を「1」として認識できるようにソフト側へその「1」の画像を登録しておくなどの作業が必要かと思います。 もし、このようなプログラムのサンプルなどがございましたら助かりますが、その前に可能か否かだけでも知りたいです。

  • Java
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • sech1152
  • ベストアンサー率72% (45/62)
回答No.2

No.1です。 画像を認識させる(比較して一致するかどうか判断する)部分だけですが…。 一番単純な考え方としては、 読み取る対象となる画像と、マスターとなる画像が、縦横のピクセル数が完全に同じであり、色も同じ、位置のズレも気にしなくていい(位置がズレているときは不一致て構わない)というのであれば、各ピクセルを単純に比較して、一致するピクセルの比率を求め、それがある値よりも大きければ一致すると判断し、一致したマスター画像に設定しておいた文字を出力する、という方法があります。 もう少し具体的にいうと、 ・何らかの方法で二つの画像をそれぞれjava.awt.image.BufferedImageに読み込む。 ・BufferedImageのgetRGBメソッドで、それぞれの各ピクセルの色をint[]に読み出す。 ・二つのint[]の各要素を単純に比較して一致する要素数を求める。 ・一致した要素数をint[]のサイズで(floatかdoubleにキャストしてから)割れり、一致するピクセルの比率(0.0~1.0)を求める。 ・求めた比率が、あらかじめ決めておいた値(例えば、0.95なら95%一致する)より大きければ一致すると判断して、例えば「1」を出力する。 ・もし一致しない場合は、次のマスターとなる画像との比較をして、一致すれば例えば「2」を出力する。 これを、マスター画像の数(認識させたい文字の種類)だけ繰り返していきます。 上記は、あくまでも、非常に単純な一つの考え方です。 http://www.ne.jp/asahi/hishidama/home/tech/java/image.html http://docs.oracle.com/javase/jp/7/api/java/awt/image/BufferedImage.html#getRGB(int, int, int, int, int[], int, int)

参考URL:
http://docs.oracle.com/javase/jp/7/api/java/awt/image/BufferedImage.html#getRGB(int, int, int, int, int[], int, int)
object123
質問者

お礼

ちょっと難しそうですけど、 作りたいものは、まさにそういうものです! ありがたく参考にさせて頂きます。 再度のご回答誠にありがとうございました。

その他の回答 (1)

  • sech1152
  • ベストアンサー率72% (45/62)
回答No.1

この手のソフトを、「OCR」といいます。 もし、OCRをすべて自分で作るとなると、非常に非常に非常に・・・難しいと思います。 数字の「1」だけ(あるいは特定の1字だけ)でいいのであれば、もしかしたら何とかなるかもしれませんが、それでも、 ・手書きでくせのある字 ・傾いた画像 ・ノイズ(ゴミや背景画像)のある画像 などにも対応するようにするのだと大変です。 現実的には、どこかからライブラリを調達して使用することになると思います。 「Javaで日本語OCR」 http://arti.jp.net/blog/archives/18/ 「JavaでOCR」 http://d.hatena.ne.jp/akiiiiiiiio/20110416/1302947471

object123
質問者

補足

私が作りたいのは、ある「1」という画像を「1」として出力するものです。それ以外の「1」の画像は認識できなくても良いのです。 特定の画像を数字や文字として認識してくれさえすれば事足ります。 あらかじめ「1」として認識させたい画像を用意しておいて、それをプログラムにインプットしておき、それが表示されたときに「1」だと分かってくれれば良いのです。他の「1」の画像は理解できなくても問題ありません。 これだとかなり単純に作れるのではないかと思うのですが、どうなのでしょう?

関連するQ&A

  • 画面に表示された文字列を取得することは可能ですか?

    ブラウザで表示したものはソースを閲覧し文字列をテキストファイルとして保存することができますが 添付のサンプル画像のように、PCソフト上で表示された文字列は、テキストファイルとして保存することはできません。 このソフトは株のツールなのですが、起動中、常にデータが変化します。 変化するデータ(数値)を全てテキストファイルに自動で保存していきたいのですが、技術的に可能なのでしょうか? ご教示頂けますと幸いです。 宜しくお願いいたします。

  • java ディスプレイにmapを表示するプログラム

    あるシミュレーションソフトを使いシミュレーションを行っています。 そのシミュレーションは2000m×1000mのマップ上に100人の人を表示して、数分間ランダムに人が歩きます。 そのシミュレーション結果をテキストファイルに出力されます。 テキストファイルの例 ・1番(1人目)は、x=1500 y=100に立っています。 ・2番(2人目)は、x=100 y=299に立っています。 問題点は結果がテキストファイルに出力されるだけで、実際1番はどこに立っているか、他の人とどのぐらい離れているか分かりずらいです。 そこでjavaを用いて、シミュレーション結果ログ(テキストファイル)を読み込み、表示させたいと考えています。 しかし、シミュレーションのMAPは2000m×1000mなので、そのままその数値をディスプレイ上に表示させてしまうと見えないところができてしまうと思います。 そこで、ディスプレイに収まるように縮小したmapを表示したいのですが、そのようなことはできるのでしょうか? java初心者なため、まだまだわからないことだらけです。 大変申し訳ないのですが、どなたかご教授お願いします。

  • 画像を表示させるプログラム

    こんばんわ。 現在、Javaで画像を表示させるアプレットを作っているのですが、画像が表示されません。 書いたソースは以下です。 import java.applet.Applet; import java.awt.*; /* <applet code="Panel.class" width="497" height="600"> </applet> */ public class Panel extends Applet { Image data; public void init() { data = getImage(getDocumentBase(),"2-1.gif"); } public void paint(Graphics g) { g.drawImage(data, 0, 0, data.getWidth(this), data.getHeight(this), this); } } 2-1.gifという画像ファイルを表示させたいと思っています。画像ファイルはソースファイルと同じディレクトリにあります。appletviewerで実行しているのですが画像がさっぱり表示されません。 SDKのバージョンは1.5を使っています。 お手数おかけしますが、ご教授の程よろしくおねがいします。

    • ベストアンサー
    • Java
  • VC++2005で画面上にGIF画像(透過あり)を表示させたい

    VC++2005で画面上にGIF画像(透過あり)を表示させたいのですが、 簡単なサンプルはあるでしょうか? MFCの概念がいまいちわかっていなく、ごく最近 DDX/DDVとテキストボックスの文字表示がわかった程度です。 画像系は何がわかればよいのでしょうか?

  • 画像の中の文字を認識するソフト

    画像ファイルの中の文字を認識し、テキストに出力するソフトを探しています。 機能としては以下のようなものであれば最高です。 ・複数の画像ファイルを選択し、連続でテキストに出力する ・フリーソフト お詳しい方教えてください。

  • 全画面表示

    起動すると全画面表示になるソフトウェアが 最近周りの余白(といっても黒い)を残して 中心に640×480の大きさで表示されてしまいます。 ソフトウェアの設定では無い(各ソフト・winの終了時の画像もなった為)と思います。 マルチメディアのプロパティのビデオ表示は全画面表示です。 全ては不可能だとは思いますができるだけ、 考えられる原因を教えてください。

  • 画像表示がPC画面で暗い

    デジカメなどで取り込んだ画像をPCで表示させる場合、かなり暗く表示されますが。それをPCまたは、閲覧ソフトの設定などで明るく表示させたいのですが可能でしょうか? また、一括でフォルダ内の画像ファイルをPC画面表示用に明るさ調整できるソフトはありますか? ちなみに、プリントアウトでは、その明るさ設定が最適なので画像ソフトを用いて明度を変更する手段はとりたくないのですが、、、

  • 2画面表示の時に文字が滲む

    2画面使用時に一つの画面でテキスト文字が薄くかすれるような滲んだ表示になっております。 どなたか解決のためにお力をお貸し頂けると幸いです。 状況: Win10Pro, PCはDELL Optiplex 画面構成 メインモニタ:LG 4Kモニタ 3840X2160で使用。 テキスト文字の拡大は150% サブモニタ デル24インチモニタ 1980X1080で使用 テキスト文字は100% メインモニタが左側にある状態です。 この状態で、右側のサブモニタで「エクスプローラ」や「秀丸」などのテキスト文字を表示するソフトで文字が添付画像のように滲んでしまいます。 この画像では、半角のハイフンを表示していますが、2と5が滲んでいます。 LGモニタを使う前は問題無く表示されていました。 また、デルモニタ単体にして起動すれば問題無く表示されます。 どなたか、解決策を教えて頂けると助かります。 それと、設定をいじりすぎてWindowsの元のフォントが何だったか分からなくなってしまいました。 滲まないことで知られているフォント名も教えてください。 どうぞ、よろしくお願いします。

  • javaをつかってテキストと画像をランダム表示させたい

    javaを使用して画像とテキストをランダムに表示させたいと思っております。 なお、javaを使用して画像をランダムに表示させるのは http://okwave.jp/qa918056.html こちらを参考にさせていただいて解決したのですが、 その画像に伴ってテキストも表示させたいと思っております。 たとえばAという画像が表示されているときはA専用のテキスト Bという画像が表示されているときはB専用のテキスト といった感じです。なにとぞよろしくお願いいたします。

  • NVRの画面表示をWindows上で表示させる

    お世話になっております。 関心を持っていただきありがとうございます。 現在NVRの画面出力をPCモニターへD-Subでそのまま出力しております。 それはそのままで、NVRにはHDMIの出力があり、それをパソコンへ HDMIでケーブルで接続し、Windows上で画面を表示させたいと 考えております。画面のそのままの表示をしたいと考えており、 IPカメラの画像はすでにパソコンでの監視は可能な状態です。 Windows上で表示が可能でありましたら、ソフトウェアなどをご教授ください。 お願い申し上げます。

専門家に質問してみよう