Pythonでバーコードを生成して読み取る方法

お店から商品を購入すると、購入した商品にさまざまな幅の平行な黒のストライプがあるのを見かけます。それがバーコードです。バーコードは、視覚的に機械で読み取り可能な形式でデータを表現する方法です。バーコードは、製品に関する情報を保存して、識別や追跡を容易にします。さまざまな業界が、在庫管理のためにバーコードを使用しています。

Pythonを使用すると、バーコードを生成したり、バーコードの内容をスキャンして読み取ることができます。

バーコードを生成してカスタマイズする方法

次の手順は、python-barcodeライブラリを使用してバーコードを生成する方法を示しています。

1.必要なライブラリをインストールする

ターミナルまたはコマンドプロンプトを開いて、次のpipコマンドを実行して、必要なライブラリをインストールします。お使いのマシンにpipがインストールされていることを確認してください。

pip install python-barcode

2.必要なモジュールをインポートする

スクリプトに、バーコード生成に必要なモジュールをインポートする次のインポート文を含めます。

import barcode
from the barcode.writer import ImageWriter

ライターは、さまざまな形式でバーコード画像の生成と保存を処理します。python-barcodeライブラリは、さまざまなバーコードライターを提供します。ここでは、バーコードを画像としてレンダリングするImageWriterクラスを使用します。

3.バーコードを生成するコード

python-barcodeライブラリは、Code39、Code128、EAN13、ISBN-10などのさまざまなバーコード形式を提供して、バーコードを生成します。

def generate_barcode(data, barcode_format, options=None):
# 指定された形式に対応するバーコードクラスを取得
barcode_class = barcode.get_barcode_class(barcode_format)
# 提供されたデータと形式を使用してバーコード画像を作成
barcode_image = barcode_class(data, writer=ImageWriter())
# 指定されたオプションでバーコード画像を「barcode」という名前のファイルに保存
barcode_image.save("barcode", options=options)

generate_barcode関数は、指定されたdataと形式(barcode_format)に基づいてバーコードを生成し、バーコード画像をファイルbarcode.pngに保存します。ファイル拡張子は、使用するライタークラスによって異なります。

4.バーコードを生成してカスタマイズする

バーコードを生成するには、generate_barcode関数を呼び出して、必要なパラメータを渡します。

generate_barcode("MakeUseOf", "code128")

ライターは、バーコードをカスタマイズできるように、いくつかのオプションを受け取ります。カスタマイズオプションには、バーコードのサイズ、フォント、色などを変更することが含まれます。python-barcodeのドキュメントを参照して、一般的なライターオプションの完全なリストにアクセスできます。

generate_barcode("MakeUseOf", "code128", options={"foreground":"red",
"center_text": False,
"module_width":0.4,
"module_height":20})

バーコードをスキャンしてデコードする方法

次の手順は、Python pyzbarライブラリを使用してバーコードをスキャンしてデコードする方法を示しています。

1.必要なライブラリをインストールする

バーコードをスキャンしてデコードするには、次のライブラリをインストールする必要があります。

brew install zbar # Mac OS X
sudo apt-get install libzbar0 # Linux OS
pip install pyzbar opencv-python

2.必要なモジュールをインポートする

ライブラリをインストールしたら、次のインポート文をスクリプトに追加して、必要なモジュールをインポートします。

import cv2
from pyzbar import pyzbar

3.画像からバーコードをスキャンする

画像ファイルからバーコードをスキャンするには、次の手順を実行します。

  1. OpenCVのimread関数を使用して、画像をロードします。これはnumpy.ndarrayのインスタンスを返します。
  2. 検出とデコードのために、出力配列をpyzbar.decodeに渡します。PIL.Imageのインスタンスを渡すこともできます。
def scan_barcode_from_image(image_path):
# 指定されたファイルパスから画像を読み取る
image = cv2.imread(image_path)
# pyzbarを使用して画像からバーコードをデコードする
barcodes = pyzbar.decode(image)
# 検出されたバーコードを反復処理して、バーコードからデータを抽出する
for barcode in barcodes:
# UTF-8エンコーディングを使用
barcode_data = barcode.data.decode("utf-8")
barcode_type = barcode.type
print("Barcode Data:", barcode_data)
print("Barcode Type:", barcode_type)

この関数はimage_pathパラメータを受け取り、画像を読み取って、画像に存在するバーコードをデコードし、検出された各バーコードのデコードされたデータとバーコードの種類を出力します。

scan_barcode_from_image("barcode.png")
> Barcode Data: MakeUseOf
> Barcode Type: CODE128

4.ウェブカメラストリームからバーコードをスキャンする

Python OpenCVライブラリを使用すると、ウェブカメラストリームからリアルタイムでバーコードをスキャンして読み取ることができます。

def scan_barcode_from_webcam():
# デフォルトのWebカメラ(インデックス0)からのビデオキャプチャを初期化する
video_capture = cv2.VideoCapture(0)
while True:
# Webカメラストリームからフレームを取得
_, frame = video_capture.read()
# フレーム内のバーコードをデコード
barcodes = pyzbar.decode(frame)
# 検出されたバーコードを処理
for barcode in barcodes:
# バーコードデータとタイプを抽出して表示
barcode_data = barcode.data.decode("utf-8")
barcode_type = barcode.type
print("Barcode Data:", barcode_data)
print("Barcode Type:", barcode_type)
# 終了条件をチェック:'q'を押してループを終了
if cv2.waitKey(1) & 0xFF == ord("q"):
break
# ビデオキャプチャを解放してOpenCVウィンドウを閉じる
video_capture.release()
cv2.destroyAllWindows()
scan_barcode_from_webcam()

scan_barcode_from_webcam関数は、Webカメラからフレームを連続的にキャプチャし、フレーム内のバーコードをデコードして、バーコードに関する情報を抽出して表示します。終了するには、キーボードの「q」を押します。

PythonでバーコードとQRコードを生成する

Pythonを使用すると、バーコードの生成と読み取りが簡単かつ効率的になります。説明した手順に従うことで、ニーズに合ったさまざまなバーコードを生成できます。

QRコード(Quick Responseコード)は、カメラとQRコードリーダーアプリを搭載したスマートフォン、タブレット、またはその他のデバイスでスキャンして読み取ることができる2次元バーコードです。Pythonのqrcodeライブラリを使用すると、QRコードを効率的に生成、スキャン、読み取ることができます。