jpegファイルやgifファイルに描かれている数字をperlを用いて読み出したいのですが、どのようにすればいいでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答8件)

id:kodomono-omocha No.1

回答回数406ベストアンサー獲得回数6

無理。

それができないから、それを利用した認証システムがあるんです。

id:norix31

無理って…

OCRソフトで、数字や文字の読み込みは普通にできていますよ。

おっしゃってるような認証システムでは、プログラムで解析されないように数字はゆがんで

描かれていますよね。逆にいうと、一般のフォントで描かれているいる数字は読み込める

ということですよね。

私、別に、どこかをクラッキングしようというわけではないので、一般のフォントで

描かれている数字を読み込めればいいです。

2004/04/27 13:25:02
id:aki73ix No.2

回答回数5224ベストアンサー獲得回数27

ポイント10pt

・まず配列上にJPEGやGIFを展開する

・二値化してエッジ検出処理を自前でつくってOCRプログラムを作る

とここまでしないと駄目です

でも、PERLでやるのはちょっと死を見そうですね(^^;

1000万円位もらったら作ってもいいかなと考えるかも知れませんが・・・そのくらい大変です

id:norix31

うーん。難しいのですか…

ライブラリなんかがあって、ちょろちょろっとスクリプト書けばできないかと

期待していたんですが(^^;

http://www.chuden.co.jp/hamaokastate1/h-index.html

こういった数値を読み込んで時系列のデータをとりたいのです。

何か方法、ご存知ないですか?

2004/04/27 13:30:08
id:aki73ix No.3

回答回数5224ベストアンサー獲得回数27

ポイント30pt

これを見るとグラフの形状、数字の位置がある程度決まってるようですね

・まず配列に、座標ごとのピクセル値を入れてやってから・・・

1.グラフの色がついてる場所を縦にスキャンしてやれば、数字の値が大体分かるかと思います。

2.処理は多少複雑になりますが、文字のフォントが分かっていますから、あらかじめサンプリングした数字と比較してやれば、Hit率の高いOCRソフトが作れると思います

とりあえず、画像ファイルの展開が処理の大部分になるかと思います(^^;

id:norix31

ふむふむ、なるほど。

画像ファイルを生で扱ったことがないのですが、とりあえずちょっと試してみようと思います。

aki73ixさん、ありがとうございました。

2004/04/27 13:40:24
id:kodomono-omocha No.4

回答回数406ベストアンサー獲得回数6

ポイント1pt

perlでOCR作って、数値読み込み、データをフィルタにかけ選別、データベースに登録、展開。

これを無理といわずしてなんという。

これを「できないことはない」というのは「火星に行けないことはない」と言ってるようなもんだ。金と時間をつぎ込めばきっとできる。(笑)

冗談はおいといて。

自分で作った画像を読むんだったらJAVAでそういうのみたことあるけど、あくまでも専用の画像。

がんばって手入力した方が簡単だろう。

それだったら、定期的に巡回して画像を落として来て並べて表示するスクリプトを組んでやればいいことだし。

何もperlじゃなくても、定期的にダウンロードしてきて、画像をOCRにかけ、データをcsvに変換してどんどん追加して行くみたいなのVBとかでやった方がよっぽど確実、簡単。

id:norix31

言ってることがよくわからないのですが、要はperlだと処理に時間がかかるから

無理ということでしょうか?

> 何もperlじゃなくても、定期的にダウンロードしてきて、画像をOCRにかけ、

> データをcsvに変換してどんどん追加して行くみたいなのVBとかでやった方がよっぽど確実、簡単。

なるほど、VBで制御できるOCRソフトがあるなら、それも手ですね。

これは、ちょっと調べてみようと思います。

2004/04/27 17:31:57
id:kiichigo No.5

回答回数167ベストアンサー獲得回数0

ポイント50pt

GDモジュールで指定座標の色の値が取得できるので

特定の位置の数字が1の時は、この座標が黒のはずなど

こまごまとやってけば、数値を読み取ることは可能です。

大変ですが、0~9のパターンと基準点で読み取る関数でも作れば出来ないことはなさそうです。

id:norix31

おお、すばらしい!

こういうお答えを待っていました。ゆっくり拝見させていただきます。

kichigoさん、ありがとうございました。

2004/04/27 17:34:15
id:kahochu No.6

回答回数162ベストアンサー獲得回数0

ポイント50pt

画像変換が別途必要かもしれませんが、英数字であればオープンソースのGOCRが使えると思います。

外部コマンドとして起動すればPerlからでも制御できます。

http://packages.debian.org/stable/graphics/gocr

Debian -- Details of package gocr in lenny

id:norix31

すばらしい!これも調べてみます。

kahochuさん、ありがとうございます。

2004/04/27 17:41:18
id:Asta No.7

回答回数2ベストアンサー獲得回数0

ポイント30pt

http://www.abbyy.com/

ABBYY - OCR, ICR, OMR, Data Capture and Linguistic Software

perl単体ではやはり厳しいのではないかと思われます。

画像認識系を専攻してたとかであれば別でしょうけど・・

で、質問にあるような、比較的ユーザーが自由にコントロール出来るモノと考えると、OCR関連ライブラリのAPIをperlで呼ぶ、というのが妥当な線ではないでしょか。

ちなみに、私の知る限りperlのAPIはまだ見たことがないっす。よってOCRライブラリ及びそれで使用されている言語を使用してperlとのインターフェイス部分を作るといったカンジの作業をやんなきゃならないのでやっぱりちょっと大変かも。

識字率はベンダー提供データをみるしかないですが、商用モノの有名どころなどは、それなりに読めるよーな気がします。売ってるわけだし。。あー日本語はどうでしょうねえ。。

他、探せば商用ソフトクラスのフリーなライブラリもあると思いますので探してみてはいかがでしょ。

leadはコーレルとかマイクロソフトのグラフィックソフトのコアエンジンに採用されてる様子。速度は速いし性能もフォトショ並。OCR周りは不明・・

http://www.leadtools.com/

LEADTOOLS is the world LEADing SDK for imaging technologies.

http://www.pegasusimaging.com/

Accusoft Pegasus | Imaging SDKs | Image Viewers | Image Compression SDKS

id:norix31

leadですね。これも調べてみます。

Astaさん、ありがとうございました。

2004/04/27 17:45:56
id:sinono No.8

回答回数52ベストアンサー獲得回数0

ポイント5pt

http://d.hatena.ne.jp/sinono/

早くも引退を考え中……

言語は違うけど数字認識プログラムの経験者です。参考にならなければポイント不要です。

前提条件として、数字の出力座標が決まっていたので、まず数字のドット絵を紙にメモしました。

ポイントは、

1.数字ごとの座標(左上一点)

2.数字の比較できる列の考察(全ドット判定すると面倒なので、0〜9の分岐ができればよい。意外と忘れてはいけないのが座標に数字がないようなエラーパターン)

これが分かってしまえ、2を使って「数字を判定する関数」を作り、1を使って「判定をループする処理」を作れば完成です。

id:norix31

ふむふむ。

5番の回答の「GDモジュール」を使って同じことをすることになるんですかね。

2004/04/28 13:39:12
  • id:kahochu
    数値よりグラフ

    http://www.chuden.co.jp/hamaokastate1/h-index.html
    を見てみて気がついたのですが、数値を認識するよりも
    グラフのマークをGDなどの画像処理ライブラリを使って
    走査した方が簡単ですね。
    X座標は固定で4箇所、Y座標も0〜20、小数点1桁なので
    4*200回程度の走査で数値化できます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません