LoginSignup
23
26

More than 5 years have passed since last update.

rubyで画像からQRコードを読み取り

Last updated at Posted at 2016-01-14

やりたかったことと、結論

  • Rubyスクリプトで画像からQRコードを読み取りたい
  • QAコードの生成については沢山情報があるが、読み取りはそれほどでもない
  • ZBarが色々なバーコードに対応していて便利らしい
  • 折角ZBarのgemが用意されていたが、いきなりgemのバグを踏んだのでコマンドライン呼び出しで組むのが早かった

MacにZBarをインストール

install

  • ZBar
    • QRコードなど複数形式のバーコードリーダー
  • brewで入れるとお手軽 bash $ brew install zbar
  • ImageMagickが必要らしいので、ない場合はDL&Install。Macの場合はこちら。

Usage

$ zbarimg -q qr.jpg
QR-Code:xxxxxxx

こんな感じで出力されます。

Rubyスクリプトの中から使用する

Ruby bindingを使う

  • なんとgem様がいらっしゃる
  • Gemfileに書いてbundle installするだけでOK!
  • GitHub repository
    • 上記でUsageを参照...と思ったらなかった。のでtestを見ながら使う。
read-qr.rb
require 'zbar'
ZBar::Image.from_jpeg(File.read('qr.jpg')).process

実行してみる

$ ruby read-qr.rb
Corrupt JPEG data: premature end of data segment

あら、そう?
github issue をのぞいてみると、gemのバグっぽいです。
2016/01/14現在未修整のようです。
ここを追うのは面倒なのでコマンドラインでやってみる方針に変更。

Ruby上からコマンドライン呼び出し

read-qr.rb
value = `zbarimg -q qr.jpg`
puts value

実行してみる

$ ruby read-qr.rb
QR-Code:xxxxxxx

動作検証環境

  • Mac OS X 10.9.5
  • ruby 2.3.0

参考URL

23
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
26