・まず配列上にJPEGやGIFを展開する
・二値化してエッジ検出処理を自前でつくってOCRプログラムを作る
とここまでしないと駄目です
でも、PERLでやるのはちょっと死を見そうですね(^^;
1000万円位もらったら作ってもいいかなと考えるかも知れませんが・・・そのくらい大変です
うーん。難しいのですか…
ライブラリなんかがあって、ちょろちょろっとスクリプト書けばできないかと
期待していたんですが(^^;
http://www.chuden.co.jp/hamaokastate1/h-index.html
こういった数値を読み込んで時系列のデータをとりたいのです。
何か方法、ご存知ないですか?
これを見るとグラフの形状、数字の位置がある程度決まってるようですね
・まず配列に、座標ごとのピクセル値を入れてやってから・・・
1.グラフの色がついてる場所を縦にスキャンしてやれば、数字の値が大体分かるかと思います。
2.処理は多少複雑になりますが、文字のフォントが分かっていますから、あらかじめサンプリングした数字と比較してやれば、Hit率の高いOCRソフトが作れると思います
とりあえず、画像ファイルの展開が処理の大部分になるかと思います(^^;
ふむふむ、なるほど。
画像ファイルを生で扱ったことがないのですが、とりあえずちょっと試してみようと思います。
aki73ixさん、ありがとうございました。
perlでOCR作って、数値読み込み、データをフィルタにかけ選別、データベースに登録、展開。
これを無理といわずしてなんという。
これを「できないことはない」というのは「火星に行けないことはない」と言ってるようなもんだ。金と時間をつぎ込めばきっとできる。(笑)
冗談はおいといて。
自分で作った画像を読むんだったらJAVAでそういうのみたことあるけど、あくまでも専用の画像。
がんばって手入力した方が簡単だろう。
それだったら、定期的に巡回して画像を落として来て並べて表示するスクリプトを組んでやればいいことだし。
何もperlじゃなくても、定期的にダウンロードしてきて、画像をOCRにかけ、データをcsvに変換してどんどん追加して行くみたいなのVBとかでやった方がよっぽど確実、簡単。
言ってることがよくわからないのですが、要はperlだと処理に時間がかかるから
無理ということでしょうか?
> 何もperlじゃなくても、定期的にダウンロードしてきて、画像をOCRにかけ、
> データをcsvに変換してどんどん追加して行くみたいなのVBとかでやった方がよっぽど確実、簡単。
なるほど、VBで制御できるOCRソフトがあるなら、それも手ですね。
これは、ちょっと調べてみようと思います。
GDモジュールで指定座標の色の値が取得できるので
特定の位置の数字が1の時は、この座標が黒のはずなど
こまごまとやってけば、数値を読み取ることは可能です。
大変ですが、0~9のパターンと基準点で読み取る関数でも作れば出来ないことはなさそうです。
おお、すばらしい!
こういうお答えを待っていました。ゆっくり拝見させていただきます。
kichigoさん、ありがとうございました。
画像変換が別途必要かもしれませんが、英数字であればオープンソースのGOCRが使えると思います。
外部コマンドとして起動すればPerlからでも制御できます。
http://packages.debian.org/stable/graphics/gocr
Debian -- Details of package gocr in lenny
すばらしい!これも調べてみます。
kahochuさん、ありがとうございます。
ABBYY - OCR, ICR, OMR, Data Capture and Linguistic Software
perl単体ではやはり厳しいのではないかと思われます。
画像認識系を専攻してたとかであれば別でしょうけど・・
で、質問にあるような、比較的ユーザーが自由にコントロール出来るモノと考えると、OCR関連ライブラリのAPIをperlで呼ぶ、というのが妥当な線ではないでしょか。
ちなみに、私の知る限りperlのAPIはまだ見たことがないっす。よってOCRライブラリ及びそれで使用されている言語を使用してperlとのインターフェイス部分を作るといったカンジの作業をやんなきゃならないのでやっぱりちょっと大変かも。
識字率はベンダー提供データをみるしかないですが、商用モノの有名どころなどは、それなりに読めるよーな気がします。売ってるわけだし。。あー日本語はどうでしょうねえ。。
他、探せば商用ソフトクラスのフリーなライブラリもあると思いますので探してみてはいかがでしょ。
leadはコーレルとかマイクロソフトのグラフィックソフトのコアエンジンに採用されてる様子。速度は速いし性能もフォトショ並。OCR周りは不明・・
LEADTOOLS is the world LEADing SDK for imaging technologies.
http://www.pegasusimaging.com/
Accusoft Pegasus | Imaging SDKs | Image Viewers | Image Compression SDKS
leadですね。これも調べてみます。
Astaさん、ありがとうございました。
早くも引退を考え中……
言語は違うけど数字認識プログラムの経験者です。参考にならなければポイント不要です。
前提条件として、数字の出力座標が決まっていたので、まず数字のドット絵を紙にメモしました。
ポイントは、
1.数字ごとの座標(左上一点)
2.数字の比較できる列の考察(全ドット判定すると面倒なので、0〜9の分岐ができればよい。意外と忘れてはいけないのが座標に数字がないようなエラーパターン)
これが分かってしまえ、2を使って「数字を判定する関数」を作り、1を使って「判定をループする処理」を作れば完成です。
ふむふむ。
5番の回答の「GDモジュール」を使って同じことをすることになるんですかね。
無理って…
OCRソフトで、数字や文字の読み込みは普通にできていますよ。
おっしゃってるような認証システムでは、プログラムで解析されないように数字はゆがんで
描かれていますよね。逆にいうと、一般のフォントで描かれているいる数字は読み込める
ということですよね。
私、別に、どこかをクラッキングしようというわけではないので、一般のフォントで
描かれている数字を読み込めればいいです。