マーキング検査
カメラはプリンターまたはレーザーマーカーの後に設置されます。engiAIは、ビデオストリームから直接印刷されたテキストを読み取り、通過する文字を分割して認識し、基準となるパターンやリストと比較します。認識した文字をデータベースに保存し、その結果をブラウザ、JSON形式、およびTCP経由のコントローラに送信します。
実際の動作における様子
`テキスト と表示するボタンは、メインウィンドウの`engiAI`の上部に、EXIT、カメラ、トリガー、共通モデル、およびカウントボタンの隣にあります。このボタンは「テキスト - マーク認識」ウィンドウを開きます。このウィンドウは、ビデオの上に重ねて表示できます。ウィンドウを開いた状態またはマーク認識が有効な場合、画面上の特定領域が表示されます。
ウィンドウのヘッダーには、すべてのタブで共通の3つの要素があります。
- テキスト認識 - これが主要なスイッチです。このスイッチがオフになっている間、テキスト認識機能は動作せず、プログラムに負荷をかけません。
- ▭ 領域の指定:ビデオ上に四角い枠をマウスのボタンでドラッグして領域を指定します。ウィンドウが開いている間は、右クリックだけで枠を移動させることができます。✖ 「領域をクリア」ボタンをクリックすると、指定された領域が消えます。
- 右側の状態: マーキング待ち, マーキング, 一時停止、または 信号入力時。その下に、使用されているGPU (CUDAまたはCPU)、1秒あたりのフレーム数、および1フレームあたりのミリ秒数が表示されます。
「マーキング」タブ:結果とサンプルとの比較
これはオペレーターが使用する作業画面です。上部には、「指定された領域全体を基準と比較する」というモードが設定されています。
フレーズの分析がコンベア上でどのように行われるか:
- 記録は文の最初から開始されます。 中間に記録を開始した場合、残りの部分はスキップされ、プログラムは次の開始を待ちます。
- 各フレームはそれぞれ適切な位置に配置され、各文字は、その文字が認識できるすべてのフレームから「評価」を受けます。最終的に、最も多く出現する読み方が選択されます。単一のフレームにおける偶然の誤り(例えば、文字の一部がフレームからはみ出している、または光の反射があるなど)は、隣接するフレームによって修正されます。スローモーションで処理することで、より多くの評価が得られ、結果がより正確になります。
- 結果が出力されます。 これは、フレーズ全体が認識領域を通過した場合、または「認識」タブの設定時間以上新しい文字が入力されない場合に発生します(つまり、システムが停止し、認識領域が空になっている場合)。 結果が出力されると、プログラムは次のフレーズの開始を待ちます。 連続して入力されるフレーズは、それぞれ個別に記録されます。
- プログラムは、自動的に移動方向を決定するか、「テキストの取得元」の設定から取得します。
「音声認識が完了するまで、右側のドア付近には、「40/64個の文字を認識」という表示が出ます。また、「記録中」の行には、一致した割合と認識されたテキストが表示されます。認識結果が出た後には、「73% - 認識」または「認識なし」という結果が表示されます。この結果は、動画の上部に大きく表示されます。
「サンプルとの比較」のチェックがオフの場合、連続的な結合が行われます。すべてのテキストは、「開始と終了」タブのルールに従って、最初から最後まで入力され、必要に応じて基準リストと比較されます。
リストの下には、操作機能があります。
- すべてのマークアップ / 最新のみ — どの程度表示し、ブラウザに渡すか。
- 日付、時間、およびマーキング / マーキングのみ - ブラウザに送信し、JSON形式で保存する内容。
- ⚖ 比較する — 各完成した製品を、指定された基準と比較する。
- 💾 JSONを保存, 📂 JSONをインポート (インポートされたデータが基準となる), リストをクリア — 画面とブラウザから行を削除しますが、データベースには残ります。
「基準」タブには、正しいマーキングのリストが表示されます。
基準は、ライン上で複数の異なるマーキング(異なるセクション、ロット、顧客)が存在する場合に、それぞれの読み取ったマーキングをリストから特定するために使用されます。
- 📂 JSONのダウンロード — ファイルから取得したリスト:JSON形式の文字列、テキストフィールドを持つオブジェクト、または単一の文字列。重複は削除されます。
- ✓ 全てを選択, ☐ 全てを解除, 各行にチェックを入れることで、どの基準と比較するかを指定します。 ✖ 基準をクリア — 基準リストを削除します。
- 類似度(完全一致の場合、%):100%は完全に一致(スペースや大文字・小文字は無視)。それ以外の場合は、タイプミスや読み間違いも考慮されます。
- 基準値とのずれが…%以下の場合: 読み取った内容が指定された基準値と十分に一致する場合、読み取り結果は基準値のテキストとして記録されます(元の読み取り結果はログに残ります)。
「開始と終了」タブには、マーキングがどこで終わるかを示します。
これらのルールは、テンプレートを使用しない「逐次的な結合」モードで機能します。プログラムが、マーキングの開始と終了を自動的に判断します。
- テキスト開始 - テキストが読み取られた時点で記録が開始されます(例:UTCAB)。テキストがない場合は、任意のテキストから開始されます。テキストが円形に繰り返される場合、テキスト開始の2回目の出現でマーキングが完了します。マーキングにテキスト開始を含める - 結果として含めます。
- 完了後の停止時間(ms) — 完了後のマーキング後には、記録する必要はありません。
- 本文の終わり - このテキストが読み終わると、マーキングが終了します(例:BYまたは2026)。
- 空白時間、ms - 該当の領域にテキストが入力されていない場合、マーキングは終了し、その状態が保持されます。
- 最大時間:— 連続した文字の入力の場合:各〇秒ごとに別のマーキングが発生します。 0 は制限なしを意味します。
例:「UTCAB」の開始、および「BY」の終了:記録されるのは「UTCAB … BY」となり、その後プログラムは次の「UTCAB」を待ちます。大文字・小文字を区別せず、類似したロシア語およびラテン語の文字は同じとみなされます。
「認識」セクション:領域、角度、モデル
- 画像内の領域、ピクセル:X座標、Y座標、領域の幅と高さ:元の画像内の領域を正確に指定し、マウスを使用せずに調整します。
- テキストの向き調整 — テキストをどのように調整すれば、水平になるか。テキストは上から下へ表示される場合(90°反時計回り)、下から上へ表示される場合(90°時計回り)です。画面上のビデオ自体を調整するには、「ビデオ」タブの「ビデオの回転」を使用します。
- 拡大:テキストを読みやすくするため、表示領域を拡大すると効果的です。「自動」で最適なサイズが選択されます。
- 最も低い信頼度(%) — 信頼度が低いと判断された文字は、読み取り結果から除外されます(文字の輪郭、端)。
- 最小のマーキング、記号の長さ - 短い長さのものは保存されません。
- サンプル:新しいシンボルが到着しない場合、結果を提示 - 新しいシンボルが到着するまで、どれくらいの時間を待つべきか(コンベアが停止、エリアが空、テキストが読み取れない)。結果は読み取った内容に基づいて提示され、新しい分析が開始されます。
- テキストの発生元:テキストがどこから現れるか。「Auto」は、フレームごとに判断し、貼り付け機能を使用するとより正確です。
- ビデオカード(GPU)を使用すると、特にNVIDIAのCUDAに対応した環境では、処理速度が大幅に向上します。
- 文字と記号:製品のラベルに記載できるものは、英語とロシア語の単語、または英語のみ、または任意の記号、数字とスペースなど。記号(ピリオド、ハイフン、逆スラッシュ、番号など)はチェックマークで示されます。モデルは許可された記号のみを選択し、不要な記号は表示されません。類似した記号はより正確に認識されます。
- 辞書に基づいて単語を選択:辞書に登録されている単語(3文字以上、数字やコードではない)で、指定された割合以上の割合で辞書の単語と類似しているものが、正しい単語に置き換えられます。辞書には、各行に1つの単語が記載され、オプションで基準となる単語も追加できます。
このタブの下には、モデルの選択肢が表示されています。文字列の検索(v3は高速版、v5サーバーはより正確にはビデオカード向けのバージョンです。)テキストの読解(キリル文字、ラテン文字、および数字を使用;ラテン文字と数字のみを使用;ヨーロッパ言語のラテン文字を使用;正確なサーバーモデルを使用;または、2つのモデルを同時に使用し、どちらかの結果を採用する - 両方のモデルで読み取りを行い、より確実な結果を選択します)。不足しているモデルは、ボタンをクリックしてダウンロードできます⬇ ダウンロードボタン⚖ 現在の領域でモデルを比較この機能を使うと、画像の一部分を様々なモデルで処理し、どのモデルがあなたのデータに最も適しているか、そして処理にかかる時間を比較することができます。これにより、どのモデルがあなたのデータの特徴を最も正確に認識できるか、また、その処理速度を把握することができます。
「データベース」セクション:すべてのマーキングが保存されます。
認識されたマーキングは、画面に表示されている内容に関わらず、プログラムのデータベースに、日付、時間、カメラ、テキスト、および比較結果とともに保存されます。
- 📤 データベースのエクスポート (JSON形式) — データベースの内容をファイルに保存し、レポート作成やシステムへのデータ転送に使用します。
- 📥 データベースのダウンロード (マーキング → 基準) - ダウンロードされたデータから、マーキングされたテキストのみを抽出し、それを基準として使用します。これにより、検証済みの変更を、今後の基準として活用できます。
- 🗑 データベースをクリア - すべてのデータを削除
「ネットワーク」タブ:ブラウザとJSONでの結果
ネットワーク経由でのデータ送信 を選択すると、engiAI が HTTP サーバー(デフォルトポート:8096)を開始します。 ネットワーク上の任意のコンピューターまたはタブレットで、通常のブラウザから、マーキング、比較、基準を表示するページを開きます。 インストールは不要です。 📋 コピー と 🌐 ブラウザで開く のボタンは、リストからアドレスを取得します。
| アドレス | どのような情報を送信するか |
|---|---|
| / | ページ:マーキング、比較、基準、JSON |
| /api/marks | マーキング:すべてまたは最新のもの、日付付きまたは日付なし(ウィンドウで選択したもの) |
| /api/marks?show=last&format=text | 最新のマーキングをテキスト形式で |
| /api/last | 最新のマーキング |
| /api/state | 現在のゾーンの状態とテキスト |
| /api/refs | 基準; `POST /api/refs` - 基準データをJSON形式でアップロードします。 |
| /api/export | すべてのマーキング |
初めて起動した際に、Windowsのファイアウォールが `engiAI` へのアクセス許可を求める場合があります。必要なネットワークへのアクセスを許可してください。
「入力」タブ:コントローラーからの信号によるキャプチャ
製品がカメラに到着すると、「入力を認識する (TCP)」という設定で、engiAIがTCPサーバーを起動します。各信号は、特定の領域の画像として捉えられ、テキストの認識、比較、およびデータベースへの保存は、連続モードと同様に行われます。
- ネットワーク:信号を待機するネットワークアダプターを選択します(「すべてのネットワーク」を選択すると、どのアダプターでも動作します)。IPアドレスは、必要に応じて手動で入力できます。ポート番号:デフォルトは8097です。
- 信号:どのようなものを「コマンド」とみなすか。 デフォルトでは 1:テキスト(「1」、「1\r\n」)または 0x01 のバイト。
- 顧客への応答として、認識されたテキストを返す。 応答には、マークアップされた文字列が含まれます。比較時には、タブ区切りで "OK" または "NG" が返されます。 "NO TEXT" はテキストが見つからないことを示し、"ERROR …" は、領域またはフレームが存在しないことを示します。
- 📸 現在の画像(確認用) - これは信号と同じですが、ボタンから送信できます。コントローラーなしで確認するには、TCP-UDP(クライアント)プログラムを使用します。アドレス、ポート、「1」、および「送信」という値を設定します。
テキスト認識と連続認識を同時に実行:テキスト認識が選択されている場合、プログラムはベルトを監視し続け、各信号に対して追加でキャプチャを行います。
