Closed6

QR Code Readerの比較

hbsnowhbsnow

https://npmtrends.com/@zxing/browser-vs-html5-qrcode-vs-qr-scanner-vs-qrcode-reader-vs-zxing-wasm

雑に調べた前提知識

QR Code Reader は内部で ZXing-based なライブラリを使用しているものと ZXing を参考にした独自実装(というよりもfork)のライブラリが存在しているようです。

QRコードをブラウザから読み混むためには、カメラからの読み込み、その画像を解析する必要がりますが、これをメインスレッドでやるとパフォーマンスがよくなさそうということは容易に想像がつきます。

基本的にライブラリではこのあたりをWorkerで実装してくれているようなので、使う側はこのへんを意識することなく使えるということになります。

逆にいうと、jsQR のような低レベルのライブラリを使用してしまうと、Workerの実装の他にも場合によってはパフォーマンス向上のためのスキャン領域制御といった処理も必要になります。

高密度のQRコードを読み込ませようとするのは結構大変そうな印象で、Workerを使ったりWasm対応していたりといったことが必要そうで、いくつかのライブラリではそういった内容の Issue も見かけることがちょくちょくありました。

結論

qr-scanner が圧倒的によさそう。Web Workerの対応、BarcodeDetectorが利用できそうであればそっちを使うといったやってほしいことをやってくれるのがこれくらいしかない。

React であれば react-qr-scanner も試してみてもいいかもしれません。ただこれは qr-scannerのReact用のラッパーというわけではなくて、ZXingがWASMの実装になっているので、場合によってはパフォーマンスがいいこともあるのかなというくらい(実際に調べたわけではないのでわかりません)。

また、Reactでとなると react-qr-reader も Workerの実装があるっぽいので試してみてもいいかもしれません。

いずれも公式にデモがあるので、使う予定のQRコードで実際に使うデバイスでスキャンを試してみるというのがいいのではないかと思います。

このスクラップは27日前にクローズされました