Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

README.md

QR Asset Label Automation

マシンと関連パーツを管理番号の末尾5桁で照合し、QRコード付き管理シールを自動生成するPythonツールです。

ポートフォリオ用として、すべて架空のダミーデータを使用しています。

開発について

本プロジェクトは、Pythonと業務自動化の学習を目的に、生成AIのサポートを活用して開発しました。

要件整理、データ構成、照合ルール、異常データの検証、QRコードの読み取り確認は自分で行い、実装方法やエラー修正について生成AIから助言を受けました。

作成したコードについては、処理の流れを確認しながら実行・検証し、マシンとパーツの照合から印刷用PDFの生成まで動作確認しています。

背景

1台のマシンに対して、以下の5種類のパーツがひも付きます。

  • MB
  • SSD
  • SATA
  • GB
  • D(電源)

マシンとパーツの管理番号は末尾5桁が共通です。このルールを利用し、セットの照合とQRシール作成を自動化しました。

主な機能

  • マシン100件・パーツ約500件のダミーデータ生成
  • マシンとパーツを別シートへランダム配置
  • 管理番号の末尾5桁による自動照合
  • パーツの不足・重複・想定外データの検出
  • 正常セットだけをシール出力対象として抽出
  • 管理番号を格納したQRコードの生成
  • A4・3列×8段の印刷用PDF生成

処理の流れ

  1. Excelからマシンとパーツを読み込む
  2. 管理番号の末尾5桁を抽出する
  3. 同じ末尾5桁を持つデータをセット化する
  4. 必要なパーツが1個ずつ存在するか確認する
  5. 異常セットを出力対象から除外する
  6. 正常セットのQRシールを生成する
  7. A4印刷用PDFとして保存する

異常検出

以下の異常を検出できます。

  • パーツ不足
  • 同じ種類のパーツの重複
  • 想定外のパーツ名

サンプルデータでは、意図的に作成した10件の異常セットをすべて検出します。

シールの内容

各シールには以下を表示します。

  • マシン名またはパーツ名
  • セットを表す末尾5桁
  • 管理番号全体を格納したQRコード

QRシールのサンプル

使用技術

  • Python
  • openpyxl
  • qrcode
  • Pillow
  • ReportLab

セットアップ

python3 -m pip install -r requirements.txt

実行方法

ダミーデータを生成します。

python3 generate_sample_data.py

照合・異常検出・QRシールPDF作成を実行します。

python3 create_qr_labels.py

実行後、印刷用のportfolio_qr_labels.pdfが生成されます。

ファイル構成

QR_DATA/
├── README.md
├── generate_sample_data.py
├── create_qr_labels.py
├── requirements.txt
├── samples/
│   ├── sample_assets.xlsx
│   └── test_label.png
└── .gitignore

工夫した点

  • 元データの並び順に依存せず、末尾5桁でセットを照合
  • パーツ数だけでなく、必要な5種類が揃っているかを検証
  • QRには共通の末尾5桁ではなく、一意の管理番号全体を格納
  • 1セット6枚をまとめ、セットの途中でページが変わらないよう配置
  • 実データを公開せずに検証できるダミーデータ生成機能を用意

今後の改善案

  • シール用紙の商品番号に応じたレイアウト選択
  • 異常内容をExcelレポートとして出力
  • GUIからファイルを選択できる画面の追加
  • QR読み取り後にセット情報を表示するWeb画面との連携

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages