みなさん、こんにちは!前回からスタートした「機器図からPlant3Dの機器を自動生成できないか?」シリーズ。
第1回では、機器図(PDF)をAIに読ませ、必要な情報を整理し、最終的にPlant3DのEquipmentとして自動生成するという全体構想を紹介しました。今回はいよいよ最初の実験です。
そもそもAIは、機器図をどこまで「機器」として理解できるのか?
文字をOCRで拾うだけではなく、胴、鏡板、フランジ、ノズルなどの関係まで読み取れるのか。まずはここを確認してみました。
まずはV-1の機器図をAIに読ませてみる
今回の検証に使うのは、前回紹介した参考機器「V-1」です。
機器図には、機器径や胴長さだけでなく、鏡板、胴フランジ、ノズル、ハンドホール、支持構造など、3Dモデルを作るために必要な情報が色々な場所に書かれています。
さらに厄介なのが、必要な寸法が必ずしも「そのまま3D座標」として書かれているわけではないこと。
例えばノズル位置ひとつでも、基準線からの高さ、機器中心からのオフセット、取付方向、突出し寸法など、複数の情報を組み合わせないと最終的な位置が決まりません。
AIにはまず「図面に書いてある事実」を拾わせる
最初は「AIに図面を読ませて、そのままXYZ座標まで出してもらえば早いのでは?」とも考えました。でも検討を進めるうちに、これはちょっと危ないなと感じました。
AIが図面の読み取りと座標計算を同時にやってしまうと、結果が間違っていたときに、図面を読み間違えたのか、計算を間違えたのか分からなくなるからです。
そこで役割を分けることにしました。
AIは図面に書かれている事実を抽出する。
座標や形状の計算はプログラム側で行う。
例えば「ノズルの高さは○○mm」「中心から○○mmオフセット」「傾斜角は20°」といった情報はAIが拾います。でも、その情報から最終的なXYZ座標を求めるのはAIではなく計算ロジック側です。
この分け方なら、あとから確認もしやすいし、計算ルールを一度作れば別の機器にも使い回せます。
部品表だけでは位置が分からない
ここで機器図ならではの面白いところも見えてきました。ノズル表や部品表を見ると、「何が付いているか」はかなり分かります。サイズや用途、フランジ仕様などですね。
ところが、それだけでは3Dモデルは作れません。
そのノズルがどこに付いているのか、どちらを向いているのかは、正面図や平面図、寸法線などを合わせて見ないと分からないからです。
つまり、部品表は「WHAT(何があるか)」、図面ビューは「WHERE / HOW(どこに、どう付くか)」という感じ。
AIに機器図を読ませる場合も、この両方を結び付ける必要があります。
分からないものは、無理に決めない
もうひとつ大事にしたのが、図面から確定できない情報をAIに勝手に補完させないことです。
例えば、ノズルの向きが図面から明確に判断できなければ「HOLD」。記載がなければ「unknown」。そもそも対象外なら「not applicable」。
それっぽい値をAIが推測して埋めてしまう方が、実務ではむしろ怖いですよね。
分からないものを「分からない」と残して、人間が確認すべき場所を見えるようにする。この考え方で抽出データを作っていくことにしました。
AIは思った以上に機器図を読める
実際にV-1を読み取らせてみると、機器径や胴長さのような基本寸法だけでなく、ノズルのサイズ、取付位置の基準、オフセット、突出し寸法、傾斜など、かなり細かいところまで情報を拾えることが分かりました。
もちろん、AIが出した値をそのままPlant3Dへ送るわけではありません。
大事なのは、「図面を読む工程」と「3Dモデルを作る工程」の間に、確認できるデータを置くことでした。これならAIの読み取り結果を人間が確認してから、次の工程へ進められます。
次は「AIの回答」を設計データにする
ということで、機器図から必要な情報を抽出するところまではかなり手応えがありました。でも、ここからが重要です。
AIが読み取った文章や数値を、そのままプログラムへ渡すのは危険です。どの値が確定していて、どれが要確認なのか。どの寸法がどこからどこまでを示しているのか。それを機械が扱える形に整理する必要があります。
次回は、AIが読み取った情報をextracted JSON → 人間の確認 → confirmed JSONという形に整理し、さらに座標計算や形状生成へつなげる仕組みを紹介します!

コメント