ハネウェル

OCR プログラミング
ユーザーガイドOCR-UG Rev A-1-

注意事項
ハネウェル・インターナショナル・インク(以下、HII と略します)は、本ドキュメントに記載される仕様、その他の情報に関して、事前の通達なく、変更する権利を有します。読者は、いかなる場合も、HII に変更の有無を問い合わせる必要があります。本著作物は、HII の誓約を表すものではありません。
HII は、この中に含まれる技術あるいは編集上の誤り、あるいは脱落に関する責任を負わないものとします。本マニュアルを装備、実施、運用することで生じた損害に関して、偶然あるいは必然を問わず、責任を負わないものとします。
本ドキュメントは、著作権で保護された専有情報を含みますが、その全ての権利を HIIが保有しています。HII からの事前の書面による承諾なしに、本ドキュメントの複写、複製あるいは他言語への翻訳を行うことはできません。
2010 ハネウェル・インターナショナル・インク

全ての権利を保有します。

本ドキュメントに記載されている、その他の製品名や表示は、他の企業の商標や登録商標である可能性があり、その場合は、各所有者の財産であります。
ウェブアドレス： www.honeywellaidc.com

OCR-UG Rev A-2-

ＯＣＲプログラミング
以下の説明は、お客様のスキャナーを、光学文字認識（OCR）のためにプログラムするためのものです。
OCR テンプレートの選択および、あるいは入力には、シリアルコマンドをご使用されることを、推奨いたします。ハネウェルは、プログラムのためのシリアルコマンドを入力することのできる無料のソフトウェアツールをご提供いたしております。
www.honeywellaidc.com より、「EZConfig-Scanning」というソフトウェアツールをダウンロードして、ご使用ください。
スキャナーは、OCR-A、OCR-B、MICR E-13B および SEMI フォントを、6～16 ポイントの OCR活字書体で読み取ることができます。あらかじめ定義された OCR テンプレートを選択することもできますし、お客様の OCR のフォーマットに合わせてカスタムテンプレートを作成することもできます。
以下の OCR 文字が現在のところ、サポートされております。
OCR-A:OCR-B:MICR E-13B:

OCR-UG Rev A-3-

OCR デフォルト設定
以下のバーコードを読み取ることで、OCR の全ての設定を、カスタムあるいは工場出荷時のデフォルト状態にリセットすることができます。

OCR の全設定をデフォルトにする

OCR-UG Rev A-4-

OCR の読取を有効にする
以下のいずれかのバーコードをスキャンすることで、スキャナーの OCR 読取を、通常ビデオ（白い背景上の黒字）、反転ビデオ(黒い背景上の白字)、通常および反転ビデオモードに、設定することができます。OCR をオフにするバーコードをスキャンすることで、OCR読取を無効にできます。
注意：一度、OCR 読取を有効にした場合、OCR 文字を読み取るためには、定義済みのテンプレートを選択するか、カスタムＯＣＲテンプレートを作成する必要があります。

通常ビデオモード

反転ビデオモード

通常および反転ビデオモード

OCR をオフにする

定義済み OCR テンプレート
パスポートテンプレート
パスポートテンプレートは、パスポート、ビザ、ICAO 規格に基づく、公式旅行証明書の読取に使用することができます。このテンプレートでは、OCR-A と OCR-B のどちらのフォントも読み取ることができます。パスポートおよびＡ形式ビザは、どちらも 2 段構成の44 文字の OCR-B から成ります。
B 形式ビザと TD-2 旅行証明書は、2 段構成の 36 文字の OCR-B から成ります。一方、TD-1
旅行証明書では、3 段構成の 30 文字の OCR-B を使用しています。
例：パスポート OCR-B

OCR-UG Rev A-5-例：A 形式ビザ OCR-B

例：B 形式ビザ OCR-B

例：TD-1 旅行証明書 OCR-B

例：TD-2 旅行証明書 OCR-B

パスポートテンプレートを有効にする

ISBN テンプレート
ISBN テンプレートは、OCR-A あるいは OCR-B フォントの国際標準図書番号(ISBN)の読取に使用されます。
例：13 文字の OCR-A から成る ISBN フォーマットOCR-UG Rev A-6-このフォーマットは、ISBN という 4 文字と、それに続く 13 文字(ハイフンを含む)から成ります。最後の数字は、モジュラス 11 のチェックサムで、10 個の数字(0-9)あるいは「X」といずれかとなります。全ての ISBN の結果について、チェックサムが正しいことを確かめます。
例：１７文字の OCR-A から成る ISBN フォーマット

このフォーマットは、13 文字のフォーマットと比べて、チェックサムがモジュラス 10 で、10 個の数字(0-9)のいずれかになる点が異なります。
以下のバーコードのスキャンすることで、ISBN テンプレートを有効にすることができます。

ISBN テンプレートを有効にする
ISBN テンプレートと、複数の定義済み OCR テンプレートを、同時に有効にすることができます。「複数の定義済み OCR テンプレート」をご参照ください。

価格欄テンプレート
価格欄は、書籍の価格を含む、多くのアプリケーションで使用されます。価格欄テンプレートは、OCR-A と OCR-B のどちらのフォントでも読取ることができます。以下のようなフォーマットとなります。

価格欄は、C で始まり、E で終わります。前半は、C とそれに続く 4 個の数字から成ります。後半は、通貨を表す文字で始まります。上例では P と記されていますが、価格欄テン
プレートでは、さらに以下の文字を使用することができます。

通貨文字のあとに、3、4、5、6 個の数字から成る数値のグループが、さらに終端を表す E
OCR-UG Rev A-7-が続きます。このテンプレートは、OCR-A および OCR-B フォントのどちらも読み取ることができます。以下のいくつかの例も、価格欄テンプレートが有効になっている場合に、読み取ることができます。

以下のバーコードをスキャンすることで、価格欄テンプレートを有効にすることができます。

価格欄テンプレートを有効にする
価格領域テンプレートと、複数の定義済み OCR テンプレートを、同時に有効にすることができます。複数の定義済み OCR テンプレートをご参照ください。

MICR E-13B テンプレート
MICR E-13B は、14 種類の文字、すなわち 0-9 の数字と 4 個の制御文字からなります。4個の制御文字は、TOAD(Transit(トランジット), On-Us(オンアス), Amount(金額)、Dash(ハイフン))として知られ、以下の方式で出力されます。

OCR-UG Rev A-8-MICR E-13B は、小切手など、金融関係のアプリケーションで使用され、銀行の口座番号、銀行コード、小切手の番号、その他の情報が１段にエンコードされています。標準ガイド
ラインがあり、小切手や他の金融関係の書面に、データがどのように表示されるべきか規定されていますが、非常に大きな自由度があり、文書をデザインする人の裁量に任されています。
MICR E-13B テンプレートは、4～40 文字の長さのどんな MICR 文字列でも、読み取ることができます。このテンプレートでは、1 個の連続する空白のみが許されています。多くの小切手では、1 個以上の空白で隔てられた複数の領域から成る MICR 文字列として印字されていますので、これらの領域は、別々の MICR 文字列として読取り、出力されます。MICRとして出力される文字列は非常に多岐に亘りますので、ターゲットとする MICR 文字列だけをスキャナーの読取視野において、その読取を確認するようにしてください。
以下の例は、MICR E-13B テンプレートを有効にすることで、読み取ることができます。

3 番目の例では、第 1 の領域と第 2 の領域の間に、4 個の空白から成るギャップが存在するため、出力結果は 2 つになります。
以下のバーコードを読み取ることで、MICR E-13B を有効にすることができます。

MICR E-13B テンプレートを有効にする
MICR E-13B テンプレートと、複数の定義済み OCR テンプレートを、同時に有効にすることができます。複数の定義済み OCR テンプレートをご参照ください。
MICR E13-B の中の標準的な領域の 1 つは、銀行コードです。トランジットシンボル(A)で始まり、9 個の数字と 1 個の終端文字が続きます。ある種類の小切手では、銀行コードは、その両端が少なくとも 1 つの空白で区切られており、単独の領域として読み取ることができます。このような読取は、以下のテンプレートを作成することで実現できます
OCR-UG Rev A-9-(カスタム OCR テンプレートをご参照ください)。
1 4 x 4 1 5 1 4 9 x 4 1 9
銀行コードが、より長い領域の一部である(すなわち、先頭あるいは後尾のトランジット文字と、他の MICR データの間に空白がない)場合、カスタムテンプレートは、それらのドキュメントを読み取るように作成される必要があります。

OCR-UG Rev A- 10 -

複数の定義済み OCR テンプレート
以下のバーコードのいずれかをスキャンすることで、定義済み OCR テンプレートの組合せを、有効にすることができます。

ISBN とカスタムテンプレート
有効にするISBN と価格欄テンプレート
有効にするISBN と MICR E13-B テンプレート
有効にする

ISBN、カスタムおよび価格欄テンプレートを有効にする

ISBN、カスタムおよび MICR E-13B
テンプレートを有効にする

ISBN、価格欄および MICR E-13B
テンプレートを有効にする

ISBN、カスタムおよび価格欄およびMICR E-13B テンプレートを有効にする

OCR-UG Rev A- 11 -

価格欄およびカスタムテンプレートを有効にする

価格欄と MICR E-13B テンプレートを有効にする

価格欄、カスタムおよび MICR E-13B
テンプレートを有効にする

MICR E-13B とカスタムテンプレートを有効にする

OCR-UG Rev A- 12 -

カスタム OCR テンプレート
お客様ご自身で、カスタムテンプレートを作成し、お手元のスキャナーで読み取る OCR
文字列の長さおよび内容を、定義することができます。カスタムテンプレートでは、行および列のフォーマットを含む文字列のレイアウトはもちろん、OCR フォントも定義できます。各行は 50 字まで含むことができ、1 つのテンプレートに最大 18 行、文字数は 320 個まで定義することができます。各文字位置に対して、許される文字を、明示的なアスキー値、アスキー値のグループ、ワイルドカード、あるいはこれらの組合せで、指定できます。
OCR の読取結果を良くするために、各文字位置の値を、アプリケーション上、期待される値に設定してください。

空白
1 つのテンプレートの中で、1 個の空白よりも長いギャップは、許されていません。例えば、以下の OCR テキストは、E と S の間が 1 個の空白なので、妥当です。しかし、以下のテキストでは、O と S の間が、2 個の空白であるため、正しくありません。

ラインの先頭と後尾では、任意の個数の空白が許されます。これらの空白は、空白文字(10進数で 32、16 進数で 0x20)のアスキー値として、テンプレートで指定する必要があり、アスキー値のグループの一部、あるいはワイルドカード文字として、指定することはできません。

文字のサイズサンプリングされた後の OCR 文字の理想的な高さは、約 20 ピクセルですが、50 ピクセルまでの高さの文字を読み取ることが可能です。OCR 文字が常に 40 ピクセル以上の高さである場合、解像度を半分に落とすことで、速度および読取率の結果を良くすることができます。

ユーロ、ポンド、円の通貨文字
OCR テンプレートストリングでは、７ビットのアスキー値が使用されます。しかし、７ビ
OCR-UG Rev A- 13 -ットのアスキー値の中には、ユーロ、ポンド、円の通貨文字がありません。これらの文字の 8 ビットコードは、下表のようになります。

通貨 10進数 16進数
ユーロ 128 0x80
ポンド 163 0xA3
円
165 0xA516 進数の文字が出力されます。例えば、ユーロの出力は[0xA3]となります。アスキー変換チャートをご参照ください。

OCR-UG Rev A- 14 -

カスタム OCR テンプレートの作成
カスタム OCR テンプレートは、様々な制御コードと、標準的なアスキー値からなるストリング(文字列)です。

制御コードチャート
制御コード
テンプレート終了

値0

新規テンプレート1

新規ライン
グループ定義の開始
グループ定義の終了
ワイルドカード(数字)ワイルドカード(英字)ワイルドカード(英数字)ワイルドカード(空白を含む任意の文字)
定義済みグループ
埋め込みグループの開始
埋め込みグループの終了
チェックサム固定長文字の繰り返し
可変長文字の繰り返し

2
3
4
5
6
78
A
B
CD
E

アスキー値(16進数)

x##

F

引数
フォント：
1-OCR-A
2-OCR-B
3-OCR-A&B
4-MICR
5-SemiID[001-255][0-9][A-Z大文字][0-9][A-Z大文字]
ID[001-255]
重み、タイプ、モジュラス[01-50]長さの最小値[01-50]
長さの最大値[01-50]
２つの数字

注意事項：以下の全ての例では、テンプレートストリングで空白を使用していますが、読み易くするためだけに使用しています。

OCR-UG Rev A- 15 -

新規テンプレート
全ての OCR テンプレートは、新規テンプレート制御コードで始まります。この制御コードの直後に続く値は、このテンプレートで使用されるフォントを表します。
例： OCR-A あるいは OCR-B のいずれかで、8 個の数字を読み取る必要がある場合、テンプレートストリングは、1 3 5 5 5 5 5 5 5 5 0 となります。
これを説明すると、下表のようになります。

制御コード 説明1
新規テンプレート
3OCR-AおよびOCR-Bフォント
5555
ワイルドカード(数字) ８個
55550
テンプレート終了
同じテンプレートストリングの中に、複数の別個のテンプレートを定義することができます。この場合、各テンプレートの定義は、新規テンプレートで開始します。

複数ライン
複数ラインから成るテンプレートに、新しいラインを追加する場合、新規ライン制御コードによって、指定します。
例： 2 ラインから成る OCR-A 文字列を読み取る必要があるとします。第 1 ラインは、4個の数字からなり、第 2 ラインは、8 個の英数字および空白からなります。

この場合のテンプレートストリングは、1 1 5 5 5 5 2 8 8 8 8 8 8 8 8 0 となります。
これを説明すると、下表のようになります。

OCR-UG Rev A- 16 -

制御コード 説明
1
新規テンプレート
1OCR-Aフォント
ワイルドカード(数字) 4個
55552
新規ライン
ワイルドカード(空白を含む任意の文字) 8個
888888880
テンプレート終了

文字の繰り返しユーザーテンプレートの作成を容易にするために、固定長文字の繰り返し制御コードを使用して、1 つの文字を決められた回数繰り返すことができます。特定のアスキー値、ワイルドカード、グループのいずれでも繰り返すことができます。各 OCR 文字列は、最大 50文字までに制限されていますので、固定長文字の繰り返しを用いることで、テンプレートストリングを短縮することができます。
例：新規テンプレートの例を用いますと、OCR-A あるいは OCR-B の 8 個の数字を読み取る必要があります。
文字の繰り返しを適用しない場合、テンプレートストリングは 1 3 5 5 5 5 5 5 5 5 0 となります。文字の繰り返しを適用すると、1 3 5 E 0 8 0 となります。
これを説明しますと、下表のようになります。

制御コード 説明1
新規テンプレート
3
OCR-AおよびOCR-B
5
ワイルドカード(数字)固定長文字の繰り返し：８回
E080
テンプレート終了
OCR-UG Rev A- 17 -

可変長文字の繰り返し
可変長文字の繰り返し制御コードを使用すると、1 つの文字を、可変回数繰り返すことができます。特定のアスキー値、ワイルドカード、グループのいずれでも繰り返すことができます。
制御コードは、4 バイト必要で、その文字がテンプレートの中に現れる可能性のある回数の最小値と最大値を、それぞれ 2 バイトで与えます。OCR の各ラインは、最大で５０文字と制限されていますので、可変長文字の繰り返しを用いることで、テンプレートストリングを短縮することができます。最小値および最大値は 1～50 までの値をとり、最小値は最大値以下であることが必要です。
例：5、6 あるいは 7 個の数字からなる OCR-B 文字列を、読み取りたいとします。可変長文字の繰り返しを適用しないと、テンプレートストリングは、
1 2 5 5 5 5 5 1 2 5 5 5 5 5 5 1 2 5 5 5 5 5 5 5 0となります。可変長文字の繰り返しを適用すると、テンプレートは、1 2 5 F 0 5 0 7 0となります。
これを説明すると、下表のようになります。

制御コード 説明1
新規テンプレート
2
OCR-Bフォント
5ワイルドカード(数字)
可変長文字の繰り返し：最小5、最大7回F
05070
テンプレート終了

グループ
任意の文字位置で、その文字がどのような値をとるかを規定する必要があります。テンプレートのサイズを小さくするために、共通のアスキー文字のグループを定義して、その定義されたグループ制御文字を使用することで、同じ文字の並びを何度も繰り返すことを、避けることができます。
グループは、個々のアスキー値あるいはワイルドカード値で、構成されます。ワイルドカード値とは、制御コードの数字(5)、英字(6)、英数字(7)および任意の文字(8)を指します。
グループを定義するためには、定義済みグループ制御コードの後に、1～255 の ID を続けます(1 つのテンプレートの中で、255 グループまで定義することが可能です)。テンプレートの中でグループを使用する場合、このグループ ID を使用します。
OCR-UG Rev A- 18 -

例：3 個の数字と、A、B、C のいずれかあるいは 1 個の数字を読取りたいとします。テン
プレートストリングは、
1 2 3 0 0 1 x 4 1 x 4 2 x 4 3 5 4 5 5 5 A 0 0 1 0となります。
注意: この例の中で、空白を使用しているのは、読みやすくするためだけです。
これを説明すると、下表のようになります(太枠がグループの定義を表します)。

制御コード 説明1
新規テンプレート
2
OCR-AおよびOCR-Bフォント
3
定義済みグループ
グループID001
Aのアスキー値(16進数)
x41
Bのアスキー値(16進数)x42x43
Cのアスキー値(16進数)
数字
54
グループ定義の終了
３個の数字
555A001
定義済みグループID001
0
テンプレート終了
文字を 16 進数に変換する方法は、アスキー変換チャートをご参照ください。

埋め込みグループ
埋め込みグループは、テンプレートの中で、ある文字位置に特定のグループを、一度だけ埋め込みます。特定のグループを、一度しか使用しない場合に、使用してください。

OCR-UG Rev A- 19 -

チェックサムと重みチェックサムは、誤読の確率を減少させるのに役立ちます。チャックサムには、段とブロックという 2 つのタイプがあります。さらにチェックサムを強化するために、4 種類(1、12、13 および 137)の重み係数を、ご使用いただけます。チェックサムの計算は、モジュロ演算に基づいています。モジュロ因子(モジュラス)は、6 から 36 までの値をとります。
チェックサム制御コード(D)の直後に続くバイトは、チェックサムのタイプを定義しており、下表のように使用されます。

チェックサム表
ビット位置
意味7,6 : 重み計算方法 00 : 重み係数１01 : 重み係数１2
10 : 重み係数１3
11 : 重み係数１37
5 : チェックサムのタイプ 0 : 段
1 : ブロック
4-0 : モジュロ値
チェックサムのモジュラスから5を引いた値
段チェックサム(0)は、チェックサムの計算を、同じ段の先頭の文字までの全ての文字を用いて行います。ブロックチェックサム(1)は、チェックサムの計算を、テンプレートの先頭の文字まで、複数段に亘って、全ての文字を用いて行います。5 ビットのモジュロ値
は、チェックサムモジュラスから 5 を引いた値を表します。モジュロ値は 1～31 までの値をとり、1 はチェックサムモジュラスが 6 であること、31 はチェックサムモジュラスが36 であることを表します。モジュロ値 0(すなわちチェックサムモジュラス 5)は、許されておりません。チェックサム領域内の各文字は、チェックサムの計算で使用される数値を有しています。数字はそのまま数値(0-9)に変換されて、大文字英字は A が 10、Z が 36となり、10～36 までの値に変換されます。全ての句読点文字は、チェックサムの計算では、0 に変換されますが、重み係数を決定する際には、1 つの文字としてカウントされます。

重み係数
重み係数は、上記の値が、文字位置によって、どのように変わるかを定義します。デフォルトの重み係数は 1 です。この場合、チェックサムは、文字の値だけで決まり、文字の位置には依存しません。その他の重み係数の場合、文字の値と、文字の位置によって周期的に変化する重みを掛け合わせることで計算され、文字の位置が入れ替わってしまった場合
OCR-UG Rev A- 20 -に、検出できるようになっています。4 種類の重み係数は、下表のようになります。

重み係数11213137

重み係数表
掛け合わせる値
11111…
121212…
131313…
137137137…

チェックサム文字の重み係数は、必ず 1 で始まります。チェックサム文字から左に移動するたびに、重みは更新されて、上表の並びで次の数値を使用します。段タイプのチェックサムの場合、1 つの段の最初の文字まで、ブロックタイプのチェックサムの場合、テンプレートの最初の文字まで、シーケンスは続きます。計算された総和を、チェックサムのモジュロラスで割り算します。割り算の結果の余りが 0 になると、チェックサムが正しいということになります。

チェックサムの例

上記の 2 段 OCR-B テキストは、段タイプのチェックサムを含んでいます。さらに、2 段目の最後の文字は、ブロックチェックサムとなっています。2 つの段チェックサムは、モジュラス 10 と重み係数 13(10 進数で 133、16 進数で 0x85)で、ブロックチェックサムは、モジュラス 36 と重み係数 137(10 進数で 255、16 進数で 0xFF)です。以下のテンプレート
によって、このテキストを読み取ることができます。
1 2 6 6 6 6 D 8 5 2 6 6 6 D 8 5 D F F 0(注意)太字は、段およびブロックチェックサムの記述を表しています。

OCR-UG Rev A- 21 -段チェックサム部分を説明すると、下表のようになります。
D85

内容

1

重み係数：13(チェックサム表を参照してください)00

チェックサムのタイプ：段(チェックサム表をご参照ください)

0

モジュロ値を２進数で表した値。

01
01
ブロックチェックサム部分を説明すると、下表のようになります。
DFF

内容

1

重み係数：137(チェックサム表をご参照ください)1
1

チェックサムのタイプ：ブロック(チェックサム表をご参照ください)

1

モジュロ値を２進数で表した値。

1
1
1
1
上段のチェックサム文字は、ライン最後の文字 6 です。この例では、チェックサムはラインの最後にありますが、ライン上のどの位置でも構わず、それより左側にある文字を保護します。以下のように和を計算することで、１段目のチェックサムが正しいことを確かめることができます。
6DCBA(1x6) + (3x13) + (1x12) + (3x11) + (1x10) = 100
重み係数 13 の場合、チェックサム文字での係数が 1 となり、チェックサム文字から左に進むに従って、1 と 3 を交互に繰り返し、同じライン上の最初の文字まで計算します。英字の場合、その数値は A が 10、Z が 36 となります。チェックサム値は 100 となりますが、これは 10 の倍数ですので、モジュラス 10 のチェックサムをパスしたことになります。2段目の段チェックサム文字は、G の次の 5 となります。この段のチェックサムを計算し、OCR-UG Rev A- 22 -

それが正しいことを確認します。
5GF
E(1x5) + (3x16) + (1x15) + (3x14) = 110
この段についても、計算された和は、10 の倍数となりましたので、段チェックサムが正しいことが確かめられました。2 段目の最後の X は、モジュラス 36 と重み係数 137 のブ
ロックチェックサム値です。この値は、１段目を含むテンプレート内の全ての文字を保護します。ブロックチェックサム文字から逆にたどって、重み係数 137 で、和を計算します。
X5GFE6DCB
A(1x34)+(3x5)+(7x16)+(1x15)+(3x14)+(7x6)+(1x13)+(3x12)+(7x11)+(1x10)=396
計算された和は 36 の倍数ですので、ブロックチェックサムが正しいことが確かめられました。

OCR-UG Rev A- 23 -

OCR プログラミングコード
OCR テンプレートの入力には、シリアルコマンドを使用することを、推奨いたしておりますが、バーコードを使用した入力も可能です。最初に、OCR テンプレート開始バーコードをスキャンした後、設定したい OCR プログラミングコードをスキャンしていただき、最後に OCR テンプレート保存バーコードをスキャンしてください。設定したテンプレートを削除したい場合、OCR テンプレート削除をスキャンしてください。

OCR テンプレート開始

OCR-UG Rev A- 24 -

定義済みグループ

埋め込みグループ開始

埋め込みグループ終了

チェックサム固定長文字の繰り返し

可変長文字の繰り返し

アスキー値(16 進数)

OCR テンプレート保存

OCR テンプレート削除

OCR-UG Rev A- 25 -

アスキー変換チャート

OCR-UG Rev A- 26 -OCR-UG Rev A- 27 -OCR-UG Rev A- 28 -OCR-UG Rev A- 29 -

Honeywell Scanning & Mobility
9680 Old Bailes Road
Fort Mill, SC 29707
www.honeywellaidc.com

OCR-UG Rev A- 30 -