質問: ### 前提・実現したいこと ZXingのライブラリのバーコード読み取りの精度を上げたいです。 理想の結果を得るにはどういう方法が考えられますでしょうか? ★★★ ZXingのライブラリを使用して、jpg内のバーコード読み取りのバッチを作成しています。 しかし1つのjpg内に複数商品と複数バーコードがあるタイプの読み取りの精度が悪く、 正直使い物にならない状態なので、読み取り精度をあげたいです。 ### 試したこと TryHarder他オプションを設定してみました。 画像の2値化も試してみましたが良好な結果が得られませんでした。 精度は4割読めればいい程度。1ファイル内で読み込めないバーコードもあります。 ### 補足 画像全体のサイズから一定の比率以下のサイズだと認識されないかもしれないとの報告もありますが、 正直画像分割する手間はとれない状態です。 なんとかそのままのjpgでバーコード読み取りの精度を上げる方法はないでしょうか? またはもっと精度の高いライブラリはあるのでしょうか? ### ためしたこと追記 画像をバーコードのみで分割して1つのjpgとしてやってみても 読めないものは読めないみたいです。 見た目にはバーコードがつぶれていたり解像度が低すぎるとは思えないのですが 読めないものはどうやっても読めない感じでした。
回答: > > 画像をバーコードのみで分割して1つのjpgとしてやってみても > > 読めないものは読めないみたいです。 > > > この場合、別のライブラリで読んでみるのも1つの手です。ZXing と同じように商用利用にも使えるオープンソースのライブラリとして zbar があります。 .NET で使うには .NET 用にポーティングしたモジュール zbar-sharp を使用する感じになります。 ただ、この zbar-sharp には肝心の zbar の Windows 向け DLL が含まれていません。インストーラーで配布されているものもありますが、なんとなく使うのに抵抗があったので VS2017 向けにビルド環境を構築してみました。 プロジェクト中に上記の zbar と zbar-sharp が含まれています。それを使用するサンプルプロジェクトが1つあります。 サンプルプロジェクトにはシャープネスフィルタを組み込んでいますが、バーコードが読み込めない原因の多くが撮影時の光量と露出量の問題に起因していることが多いです。それを補正するフィルタを探していたのですが、時間がなかったので諦めました。撮影時に対象に光を多く当ててみると事態が改善することが多いかと思います。 あと、質問にも書かれている通り、バーコード解析ライブラリは画像の 6 割ぐらいがバーコードでないと正しく解析できないものが多い気がします。バーコードのみ抜き取るためには OpenCV 等を使われるのが良いかと思います。 読み取りのコツのような話は ZBar のサイトの以下のページにまとめられています。ZBar 以外のバーコード解析ソフトにも適用できる内容になっているかと思います。