質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Q&A

解決済

2回答

3686閲覧

ZXing.Mobile.Netを用いたQRコードアプリで、複雑なQRコードが読み取れない問題

Nsgroup

総合スコア8

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

0グッド

0クリップ

投稿2018/03/28 06:26

編集2018/04/02 07:35

前提・実現したいこと

Xamarin.formsとZXing.Net.Mobileを使用し、QRコードの読み取りを行っています。
使用環境:iOS11.2.6 iPhone7 VisualStudio2017

■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

簡単なQRコードの読み取りは可能なのですが、複雑なQRコード(約200文字程の文字)になると読み取りができません。
読み取りができないというのは、「QRコードを一切読み込まない」という事ではなく、読み込みの際に取得した文字列が、入力した文字列と大幅に異なっているという事です。

該当のソースコード

ソースコードは、https://github.com/ytabuchi/Study/tree/master/XFP_ZXingSample を使用させていただいています。
QR読み取りオプションとしては、以下を追加しています。
var Options = new MobileBarcodeScanningOptions
{
AutoRotate = true,
UseNativeScanning = true,
TryHarder = true,
TryInverted = true,
};

var scanPage = new ZXingScannerPage(Options) { DefaultOverlayTopText = "バーコードを読み取ります", DefaultOverlayBottomText = "",

       }

試したこと

QR読み取りのオプションをいじってみましたが、解決できませんでした。
Zxing.Mobile.MobileBarcodeScanningOptions

補足情報(FW/ツールのバージョンなど)

原因や、解決策がわかりません。
よろしくお願いします。

追加確認について、
①別のQRコード読み取りアプリでは読み取れますか?
→市販されているQR読み取りアプリ等を用いると、読み取ることができています。
②アプリの話ではなく、QRコード自体にも誤り補正レベルというのがありますが、その設定はどうなっていますか?
→読み取りたいQRコードを作成したサイトでは、レベルH(30%復元)となっております。
③このQRが読み取れません。とQR画像を貼ってしまってもいいかもしれません。
→QRコードの画像を張らせていただきます。
イメージ説明
QRコードの内容
「3kajae556620180329021003☆IANFAI90626JAIiet4w 内容内容内容 09902267BABESTCONDTAAE 2141.5512 00000008000200009384004864345 002-22046 34-872-00 10123-21-0168030088 BESTCONDTAAE 1241.421123 20180329 0002000000 AAPRIIAJR」

上記のアプリを用いて読み取った結果
イメージ説明
イメージ説明
イメージ説明

上記のように、QRコードに含まれていない文字が読み取られます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KoichiSugiyama

2018/03/28 11:58

まず、どういった文字列がどう読み込まれたのか、QR読み取りのオプションのどこをどういじったのか明記していただいた方が、第三者に判りやすいと思います。
_shunsuke_kawai

2018/03/30 04:33

3点ほど追加で確認させてください。①別のQRコード読み取りアプリでは読み取れますか?②アプリの話ではなく、QRコード自体にも誤り補正レベルというのがありますが、その設定はどうなっていますか?③このQRが読み取れません。とQR画像を貼ってしまってもいいかもしれません。
Nsgroup

2018/04/02 02:01

質問して頂いた内容を更新しました。宜しくお願い致します。
KoichiSugiyama

2018/04/02 06:58

元の文字列と読み取った文字列はどう違いますか?画面のQRコードをスマホのカメラで読むことができましたが、希望される内容と一致しているかはわかりませんので、そのあたりも追加してみてはいかがでしょうか。
Nsgroup

2018/04/02 07:35

読み取った文字列の画像を追加しました。QRコード内の文字列に含まれていない文字が読み取られています。
guest

回答2

0

ベストアンサー

https://github.com/ytabuchi/Study/tree/master/XFP_ZXingSample のサンプルに、質問にかかれている追加設定を行って、同じく質問に添付された QRコード の画像をスキャンしてみました。

私のスマホ(VAIO Phone A)では、正しくスキャンできる(こともある)ようです。

スキャン結果

正しくスキャンできない(質問者さんの言われるように十数桁の文字列しか得られない)こともありました。が、再現方法は分かりません。

とりあえず、同じライブラリで正しく読み取る事ができたということは、ZXing のライブラリ自体の問題ではなく、 QRコード自体に起因することだろうと思われます。

QRコードの仕様には詳しくないですが、これほどの大きな量のデータを入れようとすると、画像が複雑化し、認識に時間がかかり、認識率も低下するのではないかと思います。

格納したい内容のIDのみをQRコード化し、実際の内容は ID からデータベースやWebサーバに問い合わせる仕組みにした方がよいような気もします。

(再度ですが、QRコードの仕様や ZXing の使い方に詳しくないので、それらで解決できる可能性もあるかも知れません。)

投稿2018/04/02 09:47

amay077

総合スコア1075

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Nsgroup

2018/04/04 01:29

回答ありがとうございます。 QRコードがが複雑なので、may077様の助言の通り、データベース等を用いて解決します。 KoichiSugiyama様もご丁寧にありがとうございました。
guest

0

解決策ではないですが、今回使用されているライブラリがQRコード(モデル2)の仕様をすべてカバーして読み込めるつくりになっていないのではないかと思えてきました。

文字数を減らせば正常に読み込めるのであれば、ある程度のサイズ(QRコードではバージョンと言いますが)までしか読めないという制限があるのかもしれません。

もし、QRコードを作成するツールなどで、文字数に寄らず、バージョン、誤り訂正レベルを指定して作成できるものがあるようでしたら、どのバージョン、誤り訂正レベルまで読み取り可能か調査されてみてはどうでしょうか。

ZXing.Mobile.Netでネットを検索してみましたが、制限があるような情報は拾えませんでしたので、実際に試してみるしかないのではないかと思います。

投稿2018/04/02 11:53

KoichiSugiyama

総合スコア3041

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KoichiSugiyama

2018/04/02 11:56

amay077さんが実際にライブラリを使って読み込めているようですね。だとしたら私の指摘は的外れのようです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問