バーコードの規格_「Code 39」について

1Dバーコードの規格「Code 39」では、
数字の文字とアルファベットを扱えるそうですが、

画像にする際の元の文字列としては
何文字、あるいは何桁まで扱えるのでしょうか?

    ↓

`python-barcode` における
**Code 39**(`code39`) の文字列の長さに関する仕様は
以下の通りです。

### **Code 39 の文字数制限**

- **理論上の制限**:`

    python-barcode` には
    Code 39 の最大文字数に関する明確な制限はありません。

- **実用上の制限**:

  - 画像サイズの問題により、
    あまりにも長いバーコードは適切にレンダリングできない可能性があります。
 
  - 読み取り精度の観点から、
  一般的に **20~25文字程度** が実用的な上限とされることが多いです。

### **扱える文字**

- **英大文字** (`A-Z`)

- **数字** (`0-9`)

- **特殊記号**:`-`, `.`, `space`, `*`, `$`, `/`, `+`, `%`


### **長いバーコードを生成する際の注意**

1. **解像度を上げる**
   - `python-barcode` の `ImageWriter` を使って
    `dpi` を上げることで、長い文字列でも読み取り可能な画像を生成できます。
    
   - 例: `options={"dpi": 300}` を指定する。

2. **バーの幅を広くする**
   - `module_width` を大きくすると、長い文字列でも認識しやすくなります。

### **Python で Code 39 を生成する例**

```python

import barcode
from barcode.writer import ImageWriter


# Code 39 で長いバーコードを作成
code39 = barcode.get(
    'code39', 'HELLO-123456-TESTCODE', writer=ImageWriter())

# 画像として保存 (DPIを上げて長いバーコードをきれいに表示)
filename = code39.save(
    'code39_barcode', options={"dpi": 300, "module_width": 0.5})
```

### **まとめ**
- `python-barcode` では
    **Code 39 の文字数制限は理論上なし**
            (ただし画像サイズの影響あり)。
    
- **実用的には 20~25文字程度まで** が望ましい。

- 画像の DPI を上げたり、バーの幅を広くすることで、
    長いコードの読み取りを改善できる。


長い文字列を使いたい場合は、
上記の工夫を試すと良いでしょう。


コメント