Pythonでバーコード・QRコードを瞬時に読み取る!ZBar入門
![]() |
20万件以上の案件から、副業に最適なリモート・週3〜の案件を一括検索できるプラットフォーム。プロフィール登録でAIスカウトが自動的にマッチング案件を提案。市場統計や単価相場、エージェントの口コミも無料で閲覧可能なため、本業を続けながら効率的に高単価の副業案件を探せます。フリーランスボード |
| |
週2〜3日から働ける柔軟な案件が業界トップクラスの豊富さを誇るフリーランスエージェント。エンド直契約のため高単価で、週3日稼働でも十分な報酬を得られます。リモートや時間フレキシブルな案件も多数。スタートアップ・ベンチャー中心で、トレンド技術を使った魅力的な案件が揃っています。専属エージェントが案件紹介から契約交渉までサポート。利用企業2,000社以上の実績。ITプロパートナーズ |
| |
10,000件以上の案件を保有し、週3日〜・フルリモートなど柔軟な働き方に対応。高単価案件が豊富で、報酬保障制度(60%)や保険料負担(50%)など正社員並みの手厚い福利厚生が特徴。通勤交通費(月3万円)、スキルアップ費用(月1万円)の支給に加え、リロクラブ・freeeが無料利用可能。非公開案件80%以上、支払いサイト20日で安心して稼働できます。Midworks |
目次
この記事では、PythonライブラリのZBarを使って、画像ファイルからバーコードやQRコードを検出・読み取る方法を解説します。在庫管理、チケット認証、情報連携など、様々なシーンで活躍するバーコード・QRコードの読み取り機能をPythonで手軽に実装できます。
バーコード・QRコードとは?
バーコードは、白と黒の線の幅や間隔によって情報を表現する二次元コードの一種です。主に商品の識別や在庫管理に使われます。一方、QRコード(Quick Response Code)は、四角い格子状のパターンで情報を表現する二次元コードで、より多くの情報を格納でき、URLや連絡先などの情報を手軽に共有するのに広く利用されています。
なぜバーコード・QRコードを読み取るのか?
-
データ入力の効率化: 手動入力の手間を省き、入力ミスを減らします。
-
情報連携の自動化: 商品情報、ウェブサイトへの誘導、イベント参加登録などをスムーズに行えます。
-
在庫管理の効率化: 商品の入出荷や棚卸しを迅速かつ正確に行えます。
ZBarとは?
ZBarは、様々なバーコード・QRコードフォーマットを読み取ることができるオープンソースのライブラリです。Pythonから利用するには、pyzbarというPythonバインディングを使用します。ZBarは、画像から複数のバーコードを同時に検出・デコードできる強力な機能を持っています。
pyzbarのインストール方法
pyzbarを利用するには、まずZBar本体をシステムにインストールする必要があります(OSによって手順が異なります)。その後、pipを使ってpyzbarをインストールします。
pip install pyzbar Pillow
※Pillowは画像処理に必要なライブラリです。
pyzbarを使ったバーコード・QRコード読み取りの基本
pyzbarを使って画像ファイルからバーコードやQRコードを読み取る基本的な手順を説明します。
画像ファイルからコードを読み取る
pyzbar.decode()関数にPIL (Pillow) で開いた画像オブジェクトを渡すだけで、画像内のコードを検出・デコードできます。
from PIL import Image
from pyzbar.pyzbar import decode
# 読み込みたい画像ファイルのパス
image_path = "qrcode_example.png" # または "barcode_example.png"
# 画像を開く
img = Image.open(image_path)
# バーコード・QRコードをデコード
decoded_objects = decode(img)
# 検出されたコードの情報を表示
if decoded_objects:
for obj in decoded_objects:
print(f"データ: {obj.data.decode('utf-8')}")
print(f"タイプ: {obj.type}")
print(f"領域: {obj.rect}")
print("-" * 20)
else:
print("コードは検出されませんでした。")
上記のコードは、qrcode_example.png(またはbarcode_example.png)という画像ファイルからバーコードやQRコードを読み取り、そのデータ、タイプ、検出された領域を出力する例です。obj.dataはバイト列で返されるため、.decode('utf-8')で文字列に変換しています。
読み取り結果の活用
decode()関数は、検出された各コードについてDecodedオブジェクトのリストを返します。このオブジェクトには、コードのデータだけでなく、タイプ(例: ‘QRCODE’, ‘CODE128’など)や画像内での位置情報が含まれています。
特定のタイプのコードをフィルタリングする
複数のコードが画像内に存在する場合や、特定のタイプのコードのみを扱いたい場合に便利です。
from PIL import Image
from pyzbar.pyzbar import decode, ZBarSymbol
image_path = "multiple_codes.png"
img = Image.open(image_path)
decoded_objects = decode(img, symbols=[ZBarSymbol.QRCODE]) # QRコードのみを対象
if decoded_objects:
for obj in decoded_objects:
print(f"QRコードデータ: {obj.data.decode('utf-8')}")
print("-" * 20)
else:
print("QRコードは検出されませんでした。")
symbols引数にZBarSymbolから指定することで、読み取るコードのタイプを限定できます。
まとめ
ZBarとpyzbarを組み合わせることで、Pythonで画像ファイルからバーコードやQRコードを簡単に検出・読み取ることができます。これにより、データ入力の自動化や情報連携の効率化など、様々なアプリケーションの可能性が広がります。ぜひこの強力なライブラリを活用して、新しいシステム開発に挑戦してみてください!
■「らくらくPython塾」が切り開く「呪文コーディング」とは?
■プロンプトだけでオリジナルアプリを開発・公開してみた!!
■AI時代の第一歩!「AI駆動開発コース」はじめました!
テックジム東京本校で先行開始。
■テックジム東京本校
「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。
<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。
<月1開催>放送作家による映像ディレクター養成講座
<オンライン無料>ゼロから始めるPython爆速講座
![]() |
20万件以上の案件から、副業に最適なリモート・週3〜の案件を一括検索できるプラットフォーム。プロフィール登録でAIスカウトが自動的にマッチング案件を提案。市場統計や単価相場、エージェントの口コミも無料で閲覧可能なため、本業を続けながら効率的に高単価の副業案件を探せます。フリーランスボード |
| |
週2〜3日から働ける柔軟な案件が業界トップクラスの豊富さを誇るフリーランスエージェント。エンド直契約のため高単価で、週3日稼働でも十分な報酬を得られます。リモートや時間フレキシブルな案件も多数。スタートアップ・ベンチャー中心で、トレンド技術を使った魅力的な案件が揃っています。専属エージェントが案件紹介から契約交渉までサポート。利用企業2,000社以上の実績。ITプロパートナーズ |
| |
10,000件以上の案件を保有し、週3日〜・フルリモートなど柔軟な働き方に対応。高単価案件が豊富で、報酬保障制度(60%)や保険料負担(50%)など正社員並みの手厚い福利厚生が特徴。通勤交通費(月3万円)、スキルアップ費用(月1万円)の支給に加え、リロクラブ・freeeが無料利用可能。非公開案件80%以上、支払いサイト20日で安心して稼働できます。Midworks |







