INSIGHT / 図面・技術文書
図面AIで、LLMに寸法を考えさせてはいけない理由
「図面のPDFを生成AIに渡せば、寸法や材質を読み取って検図までできるのではないか」。図面を扱う現場でいちばんよく聞かれる期待です。実際に図面の検図を実装してみると、できる部分とやらせてはいけない部分が、はっきり分かれました。
やらせてはいけないのは、寸法の値そのものをAIに考えさせることです。寸法・座標・数量・金額のように、間違うと業務そのものが壊れる値は、可能なかぎり機械的に取り出します。AIに任せるのはその先です。その値が何を指しているのか、どの項目に対応するのか、注記は何を言っているのか。意味のほうを考えさせます。
この記事は「AIは図面を読めない」という話ではありません。読めます。役に立つ場面も多くあります。ただし生成させてよいものと、生成させてはいけないものがあるという設計の話です。
ここで紹介する仕組みは、YURAIの実装として動かし、デモ環境で検証したものです。特定のお客様の本番業務での稼働実績を示すものではありません。図の中の数値は説明のための例です。できないこととまだやらないことは、記事の後半にまとめてあります。
図面は、文章とは違う
注文書や契約書は、文章として読めます。上から下へ、意味のかたまりが並んでいます。図面はそうではありません。意味が、紙の上の位置で決まります。
「120」という数字が図面のどこに書かれているかによって、それは外径なのか、長さなのか、穴の数なのか、注記の中の参照番号なのかが変わります。寸法線の向き、引出線がどこを指しているか、断面図か外形図か、公差の記号が付いているか。同じ文字列が、位置と記号によって別のことを意味します。
もう1つの違いは、間違いの重さです。文章の読み取りを1文字間違えても、読んだ人が気づけることが多い。しかし寸法を1桁間違えたら、その先で作られるものが変わります。図面業務でAIを使うときに最初に決めるべきなのは、精度をどこまで上げるかではなく、どの値をAIに触らせないかです。
寸法は「意味」ではなく、まず事実として取る
そこで私たちが採った方針は単純です。図面に書かれている文字とその位置を、先に機械的に取り出す。PDFの中には、どの文字がどの座標に置かれているかが記録されています。まずそれを、推測を挟まずにそのまま取り出します。
この段階では、意味づけを一切しません。「120という文字が、1枚目のこの位置にある」という事実だけを集めます。読み取りではなく、写し取りに近い作業です。だから同じ図面からは毎回同じものが出てきます。
この記事でいちばん言いたいこと
値は事実として取る。意味はAIに考えさせる。この2つを1つの処理に混ぜると、AIが値のほうも作れるようになってしまいます。
LLMに数字を考えさせると、何が危ないのか
図面の画像を生成AIに渡して「寸法を教えてください」と聞くと、答えは返ってきます。多くの場合、それらしい値が並びます。問題は、その値がどこから来たのか分からないことです。
読み取れた文字をそのまま返しているのか、寸法線の長さから見当をつけたのか、似た図面の常識から埋めたのか。返ってきた数字の見た目は同じです。「たぶん90でしょう」と「図面に90と書いてあります」が、区別されないまま同じ形で出てきます。
やりにくいのは、この誤りが自然に見えることです。90という値そのものは、何も不自然ではありません。公差の付き方も、桁数も、単位も、図面としてありえる形で返ってきます。読み取りのかすれや誤字なら人が気づけますが、もっともらしい値に置き換わった誤りは、確認の網をすり抜けます。
図面をそのままAIに渡す
生成AI
- 図を見る
- 寸法を答える
- 材質を答える
- 可否を答える
「外径は120mm、内径は86mmと読み取れます」
値は返る。ただし図面に書かれていた値なのか、AIが見当をつけた値なのかが区別されない
- 読めなかった場所が、それらしい数字で埋まる
- その値が図面のどこにあったのかをたどれない
- もっともらしいので、人の確認をすり抜ける
先に候補を取り出す
機械が写し取る
- 文字とその位置を、推測せずに取り出す
AIが意味づけする
- どの候補が何を指しているのかを対応づける
候補と突き合わせて確かめる
- 候補に無い値が混ざっていないかを検証する
人が検図する
- 根拠と位置を見て、確認して決める
値の出どころが残る。どの値が図面のどこから来たのかを、後からたどれる
先に候補を取り出し、AIには意味だけを考えさせる
写し取った文字は、そのままでは使えません。「120」がどこにあるかは分かっていても、それが外径なのかは分かりません。ここでAIの出番になります。
AIに渡すのは、候補の一覧です。それぞれの候補には、値と、図面のどこにあったかが付いています。AIに聞くのは1つだけです。「この候補は、何を指しているか」。新しい値を答えさせるのではなく、すでにある候補に名前を付けさせます。
機械が先に取り出したもの
- 候補11201枚目/外形図の寸法線・注記「外径」あり
- 候補2861枚目/断面図の内側から引き出し
- 候補341枚目/注記の行
- 候補4SS4001枚目/表題欄
- 候補5321枚目/引き出し線の行き先が不明
値と、それが図面のどこにあったか。ここは写し取りの結果で、AIの答えではありません
AIがするのは、意味づけだけ
- 候補1外径
- 候補2内径
- 候補3穴の数
- 候補4材質
- 候補5曖昧(意味を付けない)
YURAI
AIが返してよいのは3つの項目だけ
- どの候補か/どんな意味か/どれくらい確かか
- 値や座標に当たる項目が混ざっていたら、その行を落とす
落とした件数は、不確実な箇所として残す
検図は人が行います
この形にすると、AIが得意なことだけを使えます。位置と記号から意味を推し量るのは、まさに生成AIが強い仕事です。引き出し線がどこを指しているか、注記に「外径」と添えられているか、断面図の内側から引かれているか。こうした図面の読み方は、規則として全部書き出すのが難しく、AIに任せたほうがうまくいきます。
候補にない値は採用しない
意味づけをAIに任せるとき、私たちが採ったやり方は「返ってきた数字を検算する」ではありません。数字を返せる項目を、そもそも用意しないやり方です。
AIが返してよい項目は3つだけに決めてあります。どの候補か。どんな意味か。どれくらい確かか。値そのものや座標に当たる項目は、返す場所がありません。それでも応答にそういう項目が混ざっていたら、値を作ろうとしたものとみなして、その行ごと採用しません。実在しない候補を指していたり、決めていない意味の名前を使っていたりする行も、同じように落ちます。
これは念のための保険ではなく、設計の中心です。「候補の中から選んでください」と頼んだつもりでも、生成AIは頼まれた形の外側の答えを返せます。頼み方で防ぐのではなく、受け取り方で防ぐ。指示は書いてありますが、指示だけには頼っていません。
落とした行は、黙って消すのではありません。落とした件数を「不確実な箇所」として結果に残し、人の確認へ回す理由にします。安全側に倒すというのは、処理を失敗させることではなく、人に格上げすることです。
効き目は誤りを防ぐことだけではありません。採用した値のすべてが写し取った候補に由来するので、どの値が図面のどこから来たのかを、常に示せます。検図をする人が最初に確かめたいのは、まさにそこです。
大小で決めると、見つけたい矛盾が消える
意味づけで最も厄介なのが、外径と内径の見分けです。円筒の部品なら、大きい径が外径で小さい径が内径。そう決めてしまえば簡単に見えます。
開発の途中で、これをやってはいけないことが分かりました。検図で見つけたい不備の1つが、「内径が外径以上になっている」という設計上あり得ない値だからです。大小で機械的に割り振ると、内径のほうが大きい図面でも自動的に入れ替わって、矛盾が矛盾でなくなります。見つけたかった不備を、しくみが自分で辻褄合わせして消してしまう。
そこで方針を変えました。径の大小では決めない。注記の文字、引き出し線の向き、断面図の内側から引かれているかといった図面上の手がかりで判断する。手がかりが足りず確定できないときは、意味を付けずに「曖昧」として人へ返します。
開発で分かったこと
もっともらしい既定値を置くと、検出したい異常のほうが先に消えます。「ふつうはこうだから」で埋める処理は、ふつうでない図面のために作ったしくみを無力にします。
読めなかったものを、それらしい数字で埋めない
図面には、機械が写し取れないものがあります。手書きの追記、スキャンでかすれた線、画像として貼られた古い図面、文字が図形に変換された図面。
このとき何を返すかが、設計の分かれ目になります。それらしい値で埋めてしまうと、読めなかったという事実が消えます。受け取った人は、その値が確認されていないことを知る手がかりを持ちません。図面業務では、これがいちばん危ない振る舞いです。
だから、状態を分けて返しています。ラベルはあるのに値が空の欄は「記載なし」。読み取れなかった欄は「読み取り不能」。どちらも、もっともらしい数値や材質名では埋めません。数値が取れていない候補は、AIが意味を付けても寸法としては出力しません。
そもそも扱えない図面については、受け付ける段で止めます。文字の情報を持たず画像だけのPDFは、分類だけして中身の欠けた結果を作るのではなく、理由を返して処理を始めません。「読めるふりをしない」ことのほうが、業務では役に立ちます。
人が見る場所が増えるように見えますが、実際には逆です。確認が必要な場所が特定できるので、全部を見直す必要がなくなります。
設計の原則
読めなかったことは、答えの1つとして持たせる。空欄でもなく、それらしい値でもなく、「読めなかった」という状態として返す。
AIが役に立つ図面業務も多い
ここまでの話は「AIを使わない」という結論ではありません。値を作らせないと決めたうえで、AIに任せられる仕事はたくさんあります。
- 意味づけ どの候補がどの項目に当たるのかを、位置と注記から対応づける
- 注記の解釈 余白や表題欄に書かれた指示が、何を求めているのかを読む
- 確定できないことの申告 手がかりが足りない候補を、曖昧なものとして挙げる
- 確認事項の言語化 なぜ確認が必要なのかを、人が読める文にする
どれも「値を作る」仕事ではなく、すでにある材料を整える仕事です。図面業務でAIが効くのは、実はこちら側です。人が図面を見て確認する時間の多くは、寸法を読むことではなく、どこを見るべきかを探すことに使われています。
逆に、AIに渡していない仕事もあります。直径記号の書き分け、全角と半角、1つの寸法が複数の文字に分かれて描かれている場合、公差が寸法値と同じ文字列に混ざっている場合。こうした表記の揺れは、規則で吸収してからAIに渡します。揺れの直し方は書き出せるので、AIに考えさせる必要がありません。肉厚のような計算も同じで、外径と内径から機械が計算します。人が根拠にする数字を、AIに計算させないためです。
最後の検図を人に残す理由
ここまでを機械が整えても、検図そのものは人に残します。理由は2つあります。
1つめは、図面が単独では完結していないことです。この形状で作れるのか、この材質でこの公差が出るのか、この納期で回るのか。判断には、図面の外にある知識が必要です。設備の状況、これまでの実績、取引先との取り決め。図面に書かれていないところで決まります。
2つめは、間違いの重さが対称ではないことです。確認を1件多く出したときの損は、人が数分見ることです。確認すべきものを見逃したときの損は、作ってしまったあとに出てきます。この2つが釣り合わないなら、機械は確認を出す側に寄せておくのが素直です。
だからYURAIは、検図を代わりに行うものではなく、検図の材料を揃えるものとして作っています。値と、その値が図面のどこから来たか、どの決まりごとに引っかかったか、何が読めなかったか。人が見るべき場所を、根拠つきで並べます。
これは運用の心がけではなく、しくみとして置いています。検図の決まりごとの中に、条件を付けずに「必ず人の確認へ回す」1本を最優先で置いてあります。結果は重いほうが勝つので、この1本があるかぎり、引っかかる点が1つも無かった図面でも人の確認に回ります。画面にも、自動で通すことに当たる操作や表示を作っていません。減らしているのは人が見る手間ではなく、見落とす確率と、どこを見るか探す時間です。
いまやらないと決めていること・できていないこと
合否の判定はしません。この図面で作れるかどうか、規格を満たしているかどうかの結論は出しません。確認すべき点を根拠つきで並べるところまでです。画面にも、自動で通す操作や表示はありません。
受け付けない図面をはっきり決めています。文字の情報を持たない画像だけのPDF、文字が図形化された図面、複数ページ、暗号化されたPDFは、理由を返して処理を始めません。取り出せなかったところを画像認識で補う経路も作っていません。
形状そのものは見ていません。扱っているのは図面上の文字とその位置です。線の形から寸法を割り出すことはしません。
公差は、寸法ごとの紐づけができていません。いま言えるのは「図面の中に公差の指示があるか、ないか」までです。どの寸法にかかる公差なのかの対応づけは未対応です。
精度の数字は出せません。検証に使ったのは、内容が分かっている状態で自作した部品図です。実際のCAD由来の図面での精度は測っていないため、この段階で言えるのは「技術として成り立つか」までです。
御社の検図の決まりごとを預かる必要があります。どの項目を必ず確認するか、肉厚の下限をいくつに置くかは会社ごとに違います。いま入っている値は、御社の設計標準に合わせて差し替える前提の暫定値です。
ここまでの内容は、YURAIの実装として動かし、デモ環境で検証したものです。特定のお客様の本番業務での稼働実績を示すものではありません。
まとめ:生成させるものと、生成させないものを分ける
図面業務にAIを入れるとき、最初に決めるべきなのはどこまで賢くするかではありません。何を生成させないかです。
寸法・座標・数量・材質のように、間違うと業務そのものが壊れる値は、機械的に写し取る。AIに任せるのは、その値が何を指しているのかという意味のほう。そして返ってきたものは必ず元の候補と突き合わせ、候補に無い値は採用しない。読めなかったものは、読めなかったまま返す。
この線引きは、扱う図面や検図の決まりごとによって会社ごとに変わります。だからこそ、AIに業務を合わせるのではなく、業務にAIを合わせる必要があるのだと考えています。