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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.47881 の関連記事表示

<< 0 | 1 >>
■47881  JPEG画像からバーコードを読んで数字を取り出したい
□投稿者/ ヤーレン -(2010/03/17(Wed) 01:50:02)

    分類:[C#] 

    C#で開発をしている初心者です。
    【OS】 Win XP SP3
    【開発環境】VC# 2008 Express Edition
    JPEG画像からバーコードを読んで数字を取り出したいと考えています。
    C# バーコード jpg
    で検索してみたのですが、参考になりそうなソースを見つけることができませんでした。
    バーコードを生成することはできるらしいのですが、
    画像から読むのにはどの辺りを参考にしたらいいか、まずはアドバイスお願いします。

親記事 /過去ログ81より / 関連記事表示
削除チェック/

■47884  Re[1]: JPEG画像からバーコードを読んで数字を取り出したい
□投稿者/ Azulean -(2010/03/17(Wed) 07:12:17)
    まず、画像からバーコードを読むようなエンジンはそれだけで商品として売れるものだと思います。(性能によるかもしれませんが)
    また、バーコードと一口に言っても複数の規格があります。

    処理の流れとしてざっくりと書くとすれば、画像データからまずは白(背景)と黒(バーの色)の 2 値にしなければなりません。
    そして、バーの太さ・間隔を企画に照らして、データに戻す(デコード)しなければなりません。

    文章上では簡単に見えるかもしれませんが、入力が傾いていたり、鮮明な画像でなかったり、バーコードにかすれ・汚れがあったりなどを考慮する必要があるので、この「バーコードを読み取る」という行為で相当な時間がかかると思います。
    場合によってはそういったエンジンを調達できないかということも検討するべきでしょう。
記事No.47881 のレス /過去ログ81より / 関連記事表示
削除チェック/

■47885  Re[2]: JPEG画像からバーコードを読んで数字を取り出したい
□投稿者/ やじゅ -(2010/03/17(Wed) 09:52:20)
>
記事No.47881 のレス /過去ログ81より / 関連記事表示
削除チェック/

■47886  Re[3]: JPEG画像からバーコードを読んで数字を取り出したい
□投稿者/ みきぬ -(2010/03/17(Wed) 09:58:59)
    > Code39などのバーコードであれば英数字が読めればいいので、

    それはバーコードを読んではないと思うんだけど…ありなの?
記事No.47881 のレス /過去ログ81より / 関連記事表示
削除チェック/

■47888  Re[1]: JPEG画像からバーコードを読んで数字を取り出したい
□投稿者/ .SHO -(2010/03/17(Wed) 10:25:02)
    No47881 (ヤーレン さん) に返信

    > JPEG画像からバーコードを読んで数字を取り出したいと考えています。
    > C# バーコード jpg

    C#で読み取るツールを探しているなら話は別ですが
    バーコードの読み取りアルゴルリズム自体は C# や jpg とは関係ないので
    わざわざ検索範囲を狭めず、素直に「バーコード」で検索した方が良いでしょう。

    かなり昔ですが、自分も自作したことがありますが、読み取り自体は
    それほど難しくないです。

    ただ、jpg だと白と黒の2値にするのが少しだけ面倒かも?
    まぁ、スレッショルドかけて、どちらかに倒すだけかも知れないけど
    雑音は入るでしょうね。
記事No.47881 のレス /過去ログ81より / 関連記事表示
削除チェック/

■47889  Re[2]: JPEG画像からバーコードを読んで数字を取り出したい
□投稿者/ ヤーレン -(2010/03/17(Wed) 10:33:13)
    Azuleanさん、ありがとうございます。
    おっしゃるとおり、商品として売れるかもしれません。
    バーコードに複数の種類があるのはそのとおりですね。
    今回は、書籍のバーコードを想定しています。

    画像データを切り出して2値にするのはできそうです(と書いたあとでコメントをいただいたのを見たら、めんどうそうかも…)。
    そのあとのデコードがむずかしそうですね。
    おっしゃるとおり、傾きやかすれなどの補正処理もたいへんなので、エンジンの調達を考えています。
    フリーであるとよいのですが、dllでもexeでも(ひょっとして有料でも)、使い勝手がよければありかなと思っています。

    やじゅさん、ありがとうございます。
    バーコードではないかもしれませんが、今回は書籍のバーコードなので、たしかにOCRもありかもと思います。
    調べてみたところ、C#で文字認識を行う方法が使えそうな気がしました。
    ソースもC#のがあったみたいですし。
    方向が見えてきました。この方法ですこしやってみます。
    ありがとうございます。

    みきぬさん、今回はありかもしれません。

    .SHOさん、ありがとうございます。
    なるほど。おっしゃるとおり、C#から結果だけを得られればよいので、バーコードで検索するのもありですね。
    2値にするのはめんどうですか。えっ。なんかメソッドひとつでできそうな気がしていたんだけど、甘いか…。
    C#のソースとかって、もし残っていたら見せていただけないでしょうか。
記事No.47881 のレス /過去ログ81より / 関連記事表示
削除チェック/

■47890  Re[3]: JPEG画像からバーコードを読んで数字を取り出したい
□投稿者/ .SHO -(2010/03/17(Wed) 10:48:52)
    No47889 (ヤーレン さん) に返信

    > 2値にするのはめんどうですか。えっ。なんかメソッドひとつでできそうな気がしていたんだけど、甘いか…。

    いや、やってみないとわからんです。もしかしたら簡単かも^^;
    バーコードなんてそんなに精度必要ないし。
    (コンビニのバイトのおねぇ〜ちゃんが適当に扱っても読めるぐらいじゃなきゃ
    使い物にならないしねぇ。)

    そういう意味では、OCRで数値読むなんてするより、バーコード読んだ方がいいです。
    って、そのためにバーコードは作られたわけだし…
    数値はそれを人間が読みやすいようにしてるだけですよね。

    > C#のソースとかって、もし残っていたら見せていただけないでしょうか。

    C#が存在しない大昔にC言語で作ったのでC#のソースはないです。ごめんなさい。
    つか、Cのソースも残ってないけど…OSはMS-DOSだし...
記事No.47881 のレス /過去ログ81より / 関連記事表示
削除チェック/

■47892  Re[3]: JPEG画像からバーコードを読んで数字を取り出したい
□投稿者/ みきぬ -(2010/03/17(Wed) 15:08:36)
    No47889 (ヤーレン さん) に返信
    > 今回は、書籍のバーコードを想定しています。
    >
    その書籍のバーコードを、どうやってjpg画像にしているのかしら。

    いや、いっそUSBバーコードリーダーを買ってきて使ったほうが手っ取り早くないかなーと思っただけなんだけどね。
記事No.47881 のレス /過去ログ81より / 関連記事表示
削除チェック/

■47895  Re[4]: JPEG画像からバーコードを読んで数字を取り出したい
□投稿者/ ヤーレン -(2010/03/17(Wed) 15:56:43)
    現状報告です。
    あまりうまくいってないです。
    (1)
    Microsoft Office Document Imaging 11.*/12.* Type Library
    MDIVWCTL.DLLを使えば、文字認識できる、ということですが、開発用のマシンにOfficeが入っていなくて、Officeの入っているマシンには、逆に開発環境がないという状況。
    OfficeのインストールCDが見当たらず、見つかったのはアップデート版だけなのでインストールできず。
    とりあえずテストでMDIVWCTL.DLLを使ってみたものの、インストールしないとだめなんですねこれは。
    レジストリ登録もできず、ここまでで無駄な数時間。
    コンパイルしたexeをOfficeの入ったマシンで実行すれば実行できることは確認できたのですが、開発できないのでは話にならん…。
    ってことで、MDIVWCTL.DLLは断念して、別の方策を探すことに。
    あるいはインストールCDを探すか。

    (2)
    OCRでなく、やっぱりバーコードにトライしようかと思ったら、ふと
    http://appsv.ocrgrid.org/nhocr/index-j.html
    が目につきました。
    ここにJPEGを投げれば、テキストで文字を手に入れられることが判明。テストで試したところうまくいきました。
    ってことは、このWebAPIを使うほうがいいかも、と思いました。
    ここまででだいぶ息切れしてきたところです。

    .SHOさん。
    なるほど。たしかに、その書籍のバーコードですが、自分でスキャンしています。
    で、バーコードリーダーを使うのもありかなと思って、ふと考えてみると、たしかにバーコードを最初は読もうと思って、バーコードリーダーを購入して所有しているんです。
    ところが、これまた開発マシン兼スキャンマシンとの相性が悪く、USBで直結しているのに動かないんです…。
    それで、バーコードリーダーはあきらめて、スキャン画像から読もうか、という感じで現在に至っています。
記事No.47881 のレス /過去ログ81より / 関連記事表示
削除チェック/

■47898  Re[5]: JPEG画像からバーコードを読んで数字を取り出したい
□投稿者/ れい -(2010/03/17(Wed) 16:36:03)
    No47895 (ヤーレン さん) に返信
    > で、バーコードリーダーを使うのもありかなと思って、ふと考えてみると、たしかにバーコードを最初は読もうと思って、バーコードリーダーを購入して所有しているんです。

    それが正解でしょう。

    > ところが、これまた開発マシン兼スキャンマシンとの相性が悪く、USBで直結しているのに動かないんです…。
    > それで、バーコードリーダーはあきらめて、スキャン画像から読もうか、という感じで現在に至っています。

    ならバーコードリーダーを変えるべきかと。

    ISBNのバーコードなら1次元ですし、
    元画像がきれいならそれほどむずかしくありません。

    適当に2値化して、ライン切り出しして、統計処理+デコード、
    というような感じで、ある程度実用的なものができます。

    初めから機械認識を前提にして作られてますので、
    適当につくってもその辺のOCRよりは遥かに精度よく読めるものが作れます。

    まともなUSBバーコードリーダーなら数千円でさらに上を行くわけですが。

    ポイントはバー幅の計算ですね。
    フーリエ変換してしまうとか、
    ガイドバーの幅から推測するとか、
    いろいろありますが…

    連続ピクセルを数えてごにょごにょするだけでも。

    文献とかサイトとかを示せればいいのですが、
    適当に作ってもだいたい動くので、私は知りません。

記事No.47881 のレス /過去ログ81より / 関連記事表示
削除チェック/

■47896  Re[5]: JPEG画像からバーコードを読んで数字を取り出したい
□投稿者/ .SHO -(2010/03/17(Wed) 16:14:05)
    No47895 (ヤーレン さん) に返信

    > で、バーコードリーダーを使うのもありかなと思って、ふと考えてみると、たしかにバーコードを最初は読もうと思って、バーコードリーダーを購入して所有しているんです。
    > ところが、これまた開発マシン兼スキャンマシンとの相性が悪く、USBで直結しているのに動かないんです…。

    それを動くようにするのが、最も美しい解決策かと…
    まぁ、どーしても動かなかったら仕方ないけど。
記事No.47881 のレス /過去ログ81より / 関連記事表示
削除チェック/

■47899  Re[5]: JPEG画像からバーコードを読んで数字を取り出したい
□投稿者/ やじゅ -(2010/03/17(Wed) 16:38:09)
>
    No47895 (ヤーレン さん) に返信
    > 現状報告です。
    > あまりうまくいってないです。
    > レジストリ登録もできず、ここまでで無駄な数時間。

    おー、申し訳ないです、OCRは邪道でしたね。
    おわびに別方法を提案

    Webカメラ(USBカメラ)で本のバーコード読み取り
    http://mhsodai.kazelog.jp/chalog/2009/11/webusb-96dd.html
記事No.47881 のレス /過去ログ81より / 関連記事表示
削除チェック/

■47900  Re[6]: JPEG画像からバーコードを読んで数字を取り出したい
□投稿者/ ヤーレン -(2010/03/17(Wed) 16:55:46)
    .SHOさん。
    コメントありがとうございます。
    すでにC#の質問というよりは雑談になってる気もします。
    ま、それはそれとして、おっしゃるとおりで、バーコードリーダーが動けばベストなんですけど、複数のポートに直結してだめとなると、たぶんほかに考えられるのは、電圧が足りてないことで、するとUSBハブを外づけするとかとなって、大掛かりになっていくわりに、あまり効果を期待できないかな、という感じです。
    マシンもバーコードも購入して半年程度で、比較的新しいので、マシンのリプレースは現状ではあまり考えられないとなると、やっぱり方針としては、
    (1)http://appsv.ocrgrid.org/nhocr/index-j.html
    (2)バーコードをC#で自力で読む。
    (3)OfficeのOCRを使う。
    って順番で可能性がありそうかなと思っています。

    れいさん、ありがとうございます。
    バーコードリーダーのリプレースですね。ま、そんなに高いものではないけど、動かない可能性が高そうな状況で購入するのは気乗りしないです。
    ちょっと根気が切れてきたので、今日のところは断念気味です。
    統計処理+デコードというのはまだぜんぜんやったことがないので…。
    あらためて集中力のあるときにもう一度トライしてみたいです。

    やじゅさん。いえいえ、勉強にはなったんですが、結果としてうまく成果に結びつかず。非力で申しわけないです。いろいろ準備不足を痛感してます。
    で、またおもしろいアイデアを。
    USBカメラもそのうちなにかしてみようと思っています。
    これまたつい先ごろUSBカメラを購入して、眺めているところです(まだなにもできていないんです)。
    眺めているというのは、C#でUSBカメラというページがあったんだけど、
    http://mobiquitous.com/programming/usbcamera.html
    .NET1.1用なので、動かないみたいで。
    これもペンディングになって久しいです。
    このリンク先、おもしろそうと思ったら、C++でした…。うむむ。
記事No.47881 のレス /過去ログ81より / 関連記事表示
削除チェック/

■47903  Re[5]: JPEG画像からバーコードを読んで数字を取り出したい
□投稿者/ 渋木宏明(ひどり) -(2010/03/17(Wed) 17:26:55)
>
    > ところが、これまた開発マシン兼スキャンマシンとの相性が悪く、USBで直結しているのに動かないんです…。

    その環境を改善するのが先決な気が (^^;
記事No.47881 のレス /過去ログ81より / 関連記事表示
削除チェック/

■47912  Re[6]: JPEG画像からバーコードを読んで数字を取り出したい
□投稿者/ 774RR -(2010/03/17(Wed) 18:53:44)
    雑談ついでに

    > USBハブを外づけするとかとなって、大掛かりになっていくわりに
    逆だと思うぞ。 100% の信頼のおけない機器はPC本体を壊す可能性があるので、
    セルフパワーHUBを身代わり防壁にするのが当然の保護措置だと思うのだが・・・

    まあなんにせよ環境改善が先っぽい。
記事No.47881 のレス /過去ログ81より / 関連記事表示
削除チェック/

■47923  Re[7]: JPEG画像からバーコードを読んで数字を取り出したい
□投稿者/ ヤーレン -(2010/03/17(Wed) 23:26:52)
    再開しました。
    (1)http://appsv.ocrgrid.org/nhocr/index-j.html
    にjpegを送信して、答えを取得しようとしています。
    
    まず
    http://www.atmarkit.co.jp/fdotnet/dotnettips/860controlwb/controlwb.html
    を参考にして、このページを解析すると、
    
    <form enctype="multipart/form-data" action="/cgi-bin/weocr/nhocr.cgi" method="POST">
    <input name="userfile" type="file" size="30"> &nbsp
    <input type="submit" value="認識実行"><br>
    
    というところにファイル名をセットして、認識実行をすればよいと考えました。
    
    HtmlElementCollection HE = webBrowser.Document.All;
    HtmlElementCollection forms = HE.GetElementsByName("userfile");
    forms[0].InnerText = "ocrtest.jpg";
    forms[0].InvokeMember("submit");
    
    としてみました。
    すると、
    forms[0].InnerText = "ocrtest.jpg";
    の行で、
    NotSubbortedExceptionはハンドルされませんでした。
    プロパティはこの型のHtmlElement上でサポートされていません。
    とエラーになります。
    これはどう対応したらよいのでしょう?
    アドバイスよろしくお願いします。
    
記事No.47881 のレス /過去ログ81より / 関連記事表示
削除チェック/

■47934  Re[8]: JPEG画像からバーコードを読んで数字を取り出したい
□投稿者/ .SHO -(2010/03/18(Thu) 07:55:46)
    No47923 (ヤーレン さん) に返信

    なぜ、最も邪道な方法を選択するのでしょう?

    バーコードをスキャンして、(たぶん)その画像を加工して
    バーコードの数値の jpg 画像を作成し、ウェブ上のOCRソフトに
    それを与えて数値を取得する手間を考えたら、始めからアプリに対して
    人間がバーコードに書かれた数値を入力するI/Fにした方が
    よっぽど簡単かつ確実だと思うのですが。
記事No.47881 のレス /過去ログ81より / 関連記事表示
削除チェック/

■47936  Re[9]: JPEG画像からバーコードを読んで数字を取り出したい
□投稿者/ みきぬ -(2010/03/18(Thu) 09:34:44)
    > 人間がバーコードに書かれた数値を入力するI/Fにした方が

    バーコードリーダーが使えれば、その手間すらいらないんだよね。
    読んだバーコードが文字として入力されるから。
記事No.47881 のレス /過去ログ81より / 関連記事表示
削除チェック/

■47939  Re[10]: JPEG画像からバーコードを読んで数字を取り出したい
□投稿者/ .SHO -(2010/03/18(Thu) 09:55:41)
    > バーコードリーダーが使えれば、その手間すらいらないんだよね。
    > 読んだバーコードが文字として入力されるから。

    それが、最も美しい解決策だと思います。
    loop...
記事No.47881 のレス /過去ログ81より / 関連記事表示
削除チェック/

■47941  Re[11]: JPEG画像からバーコードを読んで数字を取り出したい
□投稿者/ 774RR -(2010/03/18(Thu) 10:12:07)
    美しい、かつ安価な解決だと思う。

    ハードウェアに投資し、ソフト自作するコストを抑えるのと
    ハードウェアには投資せず、ソフト自作するコストをかけるのと、
    たぶん前者のほうが圧倒的に安価(お給金だけでなく開発にかかる時間的にも)
    掲示板でこんなやり取りしている間にも人件費がかかっている。
    無駄な検討している暇があったら通販サイトでポチっと・・・
記事No.47881 のレス /過去ログ81より / 関連記事表示
削除チェック/

次の20件>

<< 0 | 1 >>

パスワード/

- Child Tree -