マーキング検査

engiAI · 「テキスト」ボタン
ケーブル、パイプ、テープ、および梱包上のマーキングの認識と検証

カメラはプリンターまたはレーザーマーカーの後に設置されます。engiAIは、ビデオストリームから直接印刷されたテキストを読み取り、通過する文字を分割して認識し、基準となるパターンやリストと比較します。認識した文字をデータベースに保存し、その結果をブラウザ、JSON形式、およびTCP経由のコントローラに送信します。

1. 領域:ビデオ上のテキストが表示される領域。
2. 印刷するべきフレーズ
3. 分析:ニューラルネットワークが、各フレームを読み取ります。
4. 結果「認識できた」または「認識できなかった」 + データベース
約10フレーム/秒
GPU上の領域の読み取り(CUDA)
RU + EN
キリル文字、ラテン文字、数字、記号
0回の学習
PaddleOCRモデルはすぐに利用可能
HTTP + TCP
ブラウザ、JSON、コントローラーからの信号

実際の動作における様子

engiAI — テキスト: 映像の横のウィンドウ
左側にはカメラからの映像、青い枠が認識領域です。右側には「テキスト」ウィンドウ:認識された領域の切り抜き、読み取られた単語の周囲の緑枠、および「現在、この領域に」という文字列。

`テキスト と表示するボタンは、メインウィンドウの`engiAI`の上部に、EXIT、カメラ、トリガー、共通モデル、およびカウントボタンの隣にあります。このボタンは「テキスト - マーク認識」ウィンドウを開きます。このウィンドウは、ビデオの上に重ねて表示できます。ウィンドウを開いた状態またはマーク認識が有効な場合、画面上の特定領域が表示されます。

ウィンドウのヘッダーには、すべてのタブで共通の3つの要素があります。

  • テキスト認識 - これが主要なスイッチです。このスイッチがオフになっている間、テキスト認識機能は動作せず、プログラムに負荷をかけません。
  • ▭ 領域の指定:ビデオ上に四角い枠をマウスのボタンでドラッグして領域を指定します。ウィンドウが開いている間は、右クリックだけで枠を移動させることができます。✖ 「領域をクリア」ボタンをクリックすると、指定された領域が消えます。
  • 右側の状態: マーキング待ち, マーキング, 一時停止、または 信号入力時。その下に、使用されているGPU (CUDAまたはCPU)、1秒あたりのフレーム数、および1フレームあたりのミリ秒数が表示されます。
アドバイス。 撮影範囲を、文字が大きく表示される部分と、移動方向へ伸びている部分の両方に広げるようにしてください。 撮影範囲内に複数の文字があるほど、フレーム間のズレが少なくなり、より安定した撮影が可能です。 撮影後、マーキングがはっきりと表示され、文字がぼやけていない状態である必要があります。

「マーキング」タブ:結果とサンプルとの比較

engiAI — テキスト: 基準フレーズ
「マーキング」タブ:フレーズのサンプル、領域のプレビュー、現在および記録される内容、および下部に用意されたマーキングのリスト。緑色の文字列は「認識済み」、赤色の文字列は「認識できていません」、括弧内の数値は、サンプルとの一致率を示します。

これはオペレーターが使用する作業画面です。上部には、「指定された領域全体を基準と比較する」というモードが設定されています。

engiAI — テキスト: マーク
「サンプル」という入力欄には、印刷するフレーズを入力します。「一致率 (%)」は、どの割合を基準としてフレーズが正しいと判断するかを指定します。右側には、実際の状態が表示されます。
1
「範囲内のすべてを基準と比較する」にチェックを入れ、基準というフィールドに、例えば「Энергокомплект UTCAB-PV1-F 6 4 ТУ BY 300528652.036-2014 EAC 2026 Беларусь」のように、文字列全体を入力してください。大文字・小文字、空白、および見た目が同じロシア文字とラテン文字(例えば、ТとT、УとY、ЕとE)は区別されません。
2
一致率の閾値を設定してください(%)。100は正確な一致を示し、65~80は印刷や読み取りの誤差を考慮した値です。
3
テキスト認識機能を有効にします。長い文章が画面全体に収まらない場合、プログラムはフレームごとに文章を読み取り、それが画面を通過するまで処理を続けます。

フレーズの分析がコンベア上でどのように行われるか:

  • 記録は文の最初から開始されます。 中間に記録を開始した場合、残りの部分はスキップされ、プログラムは次の開始を待ちます。
  • 各フレームはそれぞれ適切な位置に配置され、各文字は、その文字が認識できるすべてのフレームから「評価」を受けます。最終的に、最も多く出現する読み方が選択されます。単一のフレームにおける偶然の誤り(例えば、文字の一部がフレームからはみ出している、または光の反射があるなど)は、隣接するフレームによって修正されます。スローモーションで処理することで、より多くの評価が得られ、結果がより正確になります。
  • 結果が出力されます。 これは、フレーズ全体が認識領域を通過した場合、または「認識」タブの設定時間以上新しい文字が入力されない場合に発生します(つまり、システムが停止し、認識領域が空になっている場合)。 結果が出力されると、プログラムは次のフレーズの開始を待ちます。 連続して入力されるフレーズは、それぞれ個別に記録されます。
  • プログラムは、自動的に移動方向を決定するか、「テキストの取得元」の設定から取得します。

「音声認識が完了するまで、右側のドア付近には、「40/64個の文字を認識」という表示が出ます。また、「記録中」の行には、一致した割合と認識されたテキストが表示されます。認識結果が出た後には、「73% - 認識」または「認識なし」という結果が表示されます。この結果は、動画の上部に大きく表示されます。

「サンプルとの比較」のチェックがオフの場合、連続的な結合が行われます。すべてのテキストは、「開始と終了」タブのルールに従って、最初から最後まで入力され、必要に応じて基準リストと比較されます。

リストの下には、操作機能があります。

  • すべてのマークアップ / 最新のみ — どの程度表示し、ブラウザに渡すか。
  • 日付、時間、およびマーキング / マーキングのみ - ブラウザに送信し、JSON形式で保存する内容。
  • ⚖ 比較する — 各完成した製品を、指定された基準と比較する。
  • 💾 JSONを保存, 📂 JSONをインポート (インポートされたデータが基準となる), リストをクリア — 画面とブラウザから行を削除しますが、データベースには残ります。

「基準」タブには、正しいマーキングのリストが表示されます。

engiAI — テキスト: 基準
「基準」タブ:読み込まれたマーキング、および「このものと比較」のチェック、類似度閾値、および基準との比較による修正機能。

基準は、ライン上で複数の異なるマーキング(異なるセクション、ロット、顧客)が存在する場合に、それぞれの読み取ったマーキングをリストから特定するために使用されます。

  • 📂 JSONのダウンロード — ファイルから取得したリスト:JSON形式の文字列、テキストフィールドを持つオブジェクト、または単一の文字列。重複は削除されます。
  • ✓ 全てを選択, ☐ 全てを解除, 各行にチェックを入れることで、どの基準と比較するかを指定します。 ✖ 基準をクリア — 基準リストを削除します。
  • 類似度(完全一致の場合、%):100%は完全に一致(スペースや大文字・小文字は無視)。それ以外の場合は、タイプミスや読み間違いも考慮されます。
  • 基準値とのずれが…%以下の場合: 読み取った内容が指定された基準値と十分に一致する場合、読み取り結果は基準値のテキストとして記録されます(元の読み取り結果はログに残ります)。

「開始と終了」タブには、マーキングがどこで終わるかを示します。

engiAI — テキスト: 開始と終了
「開始と終了」セクション:開始と終了のテキスト、終了後の一時停止、空白時間、および記録の最大長。

これらのルールは、テンプレートを使用しない「逐次的な結合」モードで機能します。プログラムが、マーキングの開始と終了を自動的に判断します。

  • テキスト開始 - テキストが読み取られた時点で記録が開始されます(例:UTCAB)。テキストがない場合は、任意のテキストから開始されます。テキストが円形に繰り返される場合、テキスト開始の2回目の出現でマーキングが完了します。マーキングにテキスト開始を含める - 結果として含めます。
  • 完了後の停止時間(ms) — 完了後のマーキング後には、記録する必要はありません。
  • 本文の終わり - このテキストが読み終わると、マーキングが終了します(例:BYまたは2026)。
  • 空白時間、ms - 該当の領域にテキストが入力されていない場合、マーキングは終了し、その状態が保持されます。
  • 最大時間:— 連続した文字の入力の場合:各〇秒ごとに別のマーキングが発生します。 0 は制限なしを意味します。

例:「UTCAB」の開始、および「BY」の終了:記録されるのは「UTCAB … BY」となり、その後プログラムは次の「UTCAB」を待ちます。大文字・小文字を区別せず、類似したロシア語およびラテン語の文字は同じとみなされます。

「認識」セクション:領域、角度、モデル

engiAI — テキスト: 認識
「認識」セクション:領域の正確な座標、角度、および拡大、閾値、新しいテンプレートの認識、コンベアの方向、ビデオカード、許可された文字および記号、辞書。
  • 画像内の領域、ピクセル:X座標、Y座標、領域の幅と高さ:元の画像内の領域を正確に指定し、マウスを使用せずに調整します。
  • テキストの向き調整 — テキストをどのように調整すれば、水平になるか。テキストは上から下へ表示される場合(90°反時計回り)、下から上へ表示される場合(90°時計回り)です。画面上のビデオ自体を調整するには、「ビデオ」タブの「ビデオの回転」を使用します。
  • 拡大:テキストを読みやすくするため、表示領域を拡大すると効果的です。「自動」で最適なサイズが選択されます。
  • 最も低い信頼度(%) — 信頼度が低いと判断された文字は、読み取り結果から除外されます(文字の輪郭、端)。
  • 最小のマーキング、記号の長さ - 短い長さのものは保存されません。
  • サンプル:新しいシンボルが到着しない場合、結果を提示 - 新しいシンボルが到着するまで、どれくらいの時間を待つべきか(コンベアが停止、エリアが空、テキストが読み取れない)。結果は読み取った内容に基づいて提示され、新しい分析が開始されます。
  • テキストの発生元:テキストがどこから現れるか。「Auto」は、フレームごとに判断し、貼り付け機能を使用するとより正確です。
  • ビデオカード(GPU)を使用すると、特にNVIDIAのCUDAに対応した環境では、処理速度が大幅に向上します。
  • 文字と記号:製品のラベルに記載できるものは、英語とロシア語の単語、または英語のみ、または任意の記号、数字とスペースなど。記号(ピリオド、ハイフン、逆スラッシュ、番号など)はチェックマークで示されます。モデルは許可された記号のみを選択し、不要な記号は表示されません。類似した記号はより正確に認識されます。
  • 辞書に基づいて単語を選択:辞書に登録されている単語(3文字以上、数字やコードではない)で、指定された割合以上の割合で辞書の単語と類似しているものが、正しい単語に置き換えられます。辞書には、各行に1つの単語が記載され、オプションで基準となる単語も追加できます。

このタブの下には、モデルの選択肢が表示されています。文字列の検索(v3は高速版、v5サーバーはより正確にはビデオカード向けのバージョンです。)テキストの読解(キリル文字、ラテン文字、および数字を使用;ラテン文字と数字のみを使用;ヨーロッパ言語のラテン文字を使用;正確なサーバーモデルを使用;または、2つのモデルを同時に使用し、どちらかの結果を採用する - 両方のモデルで読み取りを行い、より確実な結果を選択します)。不足しているモデルは、ボタンをクリックしてダウンロードできます⬇ ダウンロードボタン⚖ 現在の領域でモデルを比較この機能を使うと、画像の一部分を様々なモデルで処理し、どのモデルがあなたのデータに最も適しているか、そして処理にかかる時間を比較することができます。これにより、どのモデルがあなたのデータの特徴を最も正確に認識できるか、また、その処理速度を把握することができます。

モデルの学習は不要です。 PaddleOCR を使用しており、インストール後すぐに英語、キリル文字、数字を認識できます。設定は、認識範囲、傾き、許可する記号のリストの指定のみです。

「データベース」セクション:すべてのマーキングが保存されます。

engiAI — テキスト: データベース
「データベース」セクション:保存されているマーキングの数、JSONへのエクスポート、エクスポートを基準として読み込み、クリーンアップ。

認識されたマーキングは、画面に表示されている内容に関わらず、プログラムのデータベースに、日付、時間、カメラ、テキスト、および比較結果とともに保存されます。

  • 📤 データベースのエクスポート (JSON形式) — データベースの内容をファイルに保存し、レポート作成やシステムへのデータ転送に使用します。
  • 📥 データベースのダウンロード (マーキング → 基準) - ダウンロードされたデータから、マーキングされたテキストのみを抽出し、それを基準として使用します。これにより、検証済みの変更を、今後の基準として活用できます。
  • 🗑 データベースをクリア - すべてのデータを削除

「ネットワーク」タブ:ブラウザとJSONでの結果

engiAI — テキスト: ネットワーク
「ネットワーク」タブ:組み込みのHTTPサーバー、PCのすべてのネットワークアダプターへの接続アドレス、およびAPIアドレスのリスト。

ネットワーク経由でのデータ送信 を選択すると、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` へのアクセス許可を求める場合があります。必要なネットワークへのアクセスを許可してください。

「入力」タブ:コントローラーからの信号によるキャプチャ

engiAI — テキスト: 入力
「入力」タブ:PLCまたはセンサーからの信号を受信するTCPサーバー— ネットワーク、ポート、信号値、クライアントへの応答、および「現在のキャプチャ」の確認。

製品がカメラに到着すると、「入力を認識する (TCP)」という設定で、engiAIがTCPサーバーを起動します。各信号は、特定の領域の画像として捉えられ、テキストの認識、比較、およびデータベースへの保存は、連続モードと同様に行われます。

  • ネットワーク:信号を待機するネットワークアダプターを選択します(「すべてのネットワーク」を選択すると、どのアダプターでも動作します)。IPアドレスは、必要に応じて手動で入力できます。ポート番号:デフォルトは8097です。
  • 信号:どのようなものを「コマンド」とみなすか。 デフォルトでは 1:テキスト(「1」、「1\r\n」)または 0x01 のバイト。
  • 顧客への応答として、認識されたテキストを返す。 応答には、マークアップされた文字列が含まれます。比較時には、タブ区切りで "OK" または "NG" が返されます。 "NO TEXT" はテキストが見つからないことを示し、"ERROR …" は、領域またはフレームが存在しないことを示します。
  • 📸 現在の画像(確認用) - これは信号と同じですが、ボタンから送信できます。コントローラーなしで確認するには、TCP-UDP(クライアント)プログラムを使用します。アドレス、ポート、「1」、および「送信」という値を設定します。

テキスト認識と連続認識を同時に実行:テキスト認識が選択されている場合、プログラムはベルトを監視し続け、各信号に対して追加でキャプチャを行います。

5分で簡単な設定

1
`テキスト をクリックし、次に `領域を選択` をクリックして、動画内のテキストに沿って枠をドラッグしてください。
2
「認識」タブで、プレビュー内のテキストを縦向きにするオプション、およびテキストの拡大(×2~×4)、ベルトの移動方向を選択します。
3
「マーキング」タブで、「ゾーン全体を基準と比較する」にチェックを入れ、比較対象となるフレーズと閾値を入力してください。
4
テキスト認識機能を有効にします。認識されたフレーズは緑色(「認識済み」)で、認識されなかったフレーズは赤色(「認識されず」)でリストに表示されます。
5
必要に応じて、「ブラウザ」およびJSON用の「ネットワーク」と、コントローラーからの信号用の「入力」を有効にします。