図面を“画像”で横断検索。文字で探せないPDFから同じ図記号を探すツールを作りました
1. はじめに
「この図記号、ほかのどの図面に載っていたっけ」。
そう思いながら、PDFを1枚ずつ開いて、目で追って、違うと分かって閉じる。
また次のPDFを開いて、閉じる。
製造業の設計や図面管理の現場では、よくある光景だと思います。
私も、お目当ての1枚にたどり着くまで、何十枚もこの開け閉めを繰り返してきました。
気づくと、探すだけで小一時間が過ぎていることもありました。
図面のつらいところは、文字で探せないことです。
銘板の刻印や、部品図の小さな記号は、文字検索のキーワードになってくれません。
だから結局、目視で1枚ずつ確かめるしかない。
そう思い込んでいました。
でも、あるとき発想を切り替えました。
文字で探せないなら、画像で探せばいい。
お手本になる図記号や銘板を1つ用意して、「これと同じ見た目のものが載ったページ」を機械に探させればいいのではないか、と。
以前、図面PDFをめぐっては、別の困りごとも解決していました。
同じ図面が何リビジョンも溜まる中から、最新版だけを取り出す話です。
そのときのことは、こちらの記事に書いています。
今回は、その図面PDFを「画像の見た目で横断検索する」ツールを作りました。
名前は pdf_image_search(ピーディーエフ・イメージ・サーチ)です。
この記事では、そのツールを配ります。
あわせて、Pythonを一度も触ったことがない方でも動かせるよう、導入手順を最初から順番に書きました。
「自分には難しそう」と感じている方こそ、読んでいただけたらうれしいです。
2. このツールでできること
pdf_image_search は、お手本の画像と同じ図記号・銘板・部品図などが載ったページを、フォルダ内のPDFから横断して探すデスクトップツールです。
文字ではなく、画像の見た目(テンプレートマッチング)で探します。
主なはたらきは、次のとおりです。
お手本の画像で、フォルダ内のPDFを横断検索する(サブフォルダも対象にできる)
お手本は、手元のPDFの一部を切り出してそのまま作れる(別途、画像を用意しなくてよい)
類似度のしきい値を調整して、厳しめ/ゆるめを切り替えられる(推奨0.55〜0.75)
ヒットしたページをスコア順に一覧表示・プレビューできる
ヒットページを1つのPDFにまとめて出力できる
並列処理で、複数のPDFをまとめて処理する
たとえば、ある銘板や部品図をお手本に設定し、「それと同じものが載ったページ」だけを束ねて1冊のPDFにする、といった使い方を想定しています。
プログラミングの知識は不要で、画面(GUI)の操作だけで動きます。
3. 導入手順(Pythonをまったく使ったことがない方へ)
ここがこの記事の中心です。
Pythonが入っていないパソコンを前提に、4つの手順に分けて書きます。
焦らず、上から順に進めてください。
なお、動作の前提はWindowsです(Windows推奨)。
手順1:Pythonをインストールする
まず、Pythonという「ツールを動かすための土台」を入れます。
下記の公式サイトから、インストーラーをダウンロードします。
公式サイト
ダウンロードしたインストーラーを開くと、最初の画面の下のほうに、チェックボックスがあります。
「Add python.exe to PATH」に、必ずチェックを入れてください。
ここのチェックを忘れると、あとの手順でツールが動きません。
私自身、ここを見落として動かず、原因に気づくまで少し時間がかかりました。
チェックを入れたら、あとは画面の案内どおりにインストールを進めれば大丈夫です。
なお、このツールはPython 3.9以上で動きます。
公式サイトの最新版を入れれば、この条件は満たせます。
手順2:ツールをダウンロードする
次に、ツール本体をダウンロードします。
配布ページ(GitHub)を開き、緑色の「Code」ボタンを押します。
表示されたメニューから「Download ZIP」を選ぶと、一式がまとまったZIPファイルが手に入ります。
配布ページ(GitHub)はこちらです。
ダウンロードはこちら(GitHub):
ダウンロードしたZIPファイルは、右クリックから「すべて展開」を選んで解凍してください。
解凍後のフォルダの中に、pdf_image_search.py という本体ファイルが入っています。
手順3:必要なライブラリを入れる
ツールを動かすために、いくつかの部品(ライブラリ)を追加します。
ここでは「コマンドプロンプト」という黒い画面を使います。
コマンドプロンプトの開き方は、次のとおりです。
キーボードの「Windowsキー」を押す
続けて cmd と入力する
表示された「コマンドプロンプト」を選んで開く
開いた画面に、下のコマンドをそのまま貼り付けて、Enterキーを押します。
コピペで大丈夫です。
python -m pip install opencv-python pymupdf pypdf numpy Pillow頭に python -m を付けるのがコツです。こうすると、いま使っているPythonに確実に部品が入ります(pip だけだと、別のPythonに入ってしまい「入れたのに動かない」が起きがちです)。
解凍したフォルダの中で実行する場合は、次のコマンドでも同じ結果になります。
python -m pip install -r requirements.txtしばらく文字が流れて、止まれば完了です。
なお、opencv-python は少しダウンロードに時間がかかることがあります。
途中で止まったように見えても、しばらく待ってみてください。
手順4:ツールを起動する
最後に、ツールを起動します。
起動の方法は、2つあります。どちらでも構いません。
解凍フォルダの中の pdf_image_search.py を、ダブルクリックする
コマンドプロンプトから起動する
コマンドプロンプトから起動する場合は、先に解凍したフォルダを開き、上の「アドレスバー」に cmd と入力してEnterキーを押します。すると、そのフォルダの場所でコマンドプロンプトが開きます。あとは、次のコマンドを実行します。
python pdf_image_search.py(手順3の python -m pip install -r requirements.txt を使う場合も、同じように「解凍フォルダでコマンドプロンプトを開いてから」実行してください。)
操作画面(GUI)が表示されれば、起動成功です。
ここまで来れば、あとは画面の操作だけで使えます。
うまくいかないとき
つまずいても、あなたのせいではありません。
よくある原因は、だいたい次のどれかです。
「python が見つからない」と出る → 手順1の「Add python.exe to PATH」のチェックが外れている可能性があります。Pythonを入れ直し、チェックを入れてみてください。
「pip が見つからない」と出る → 同じくPATHのチェック漏れが多いです。手順1からやり直すと直ることがあります。
ライブラリのインストールが途中で止まる → opencv-python はサイズが大きめです。ネットワークの状態を確認し、少し待つか、コマンドをもう一度実行してみてください。
ツールは起動するのにライブラリが無いと出る → 部品が、ツールを動かしているのとは別のPythonに入っている可能性があります。手順3を python -m pip install …(頭に python -m を付ける形)でやり直してください。
一度で通らなくても、珍しいことではありません。
少し時間を置いて、落ち着いて試してみてください。
4. 使い方
起動すると、画面は3つのタブに分かれています。
上から順に進めるだけで使えます。
① 「テンプレート設定」タブ(お手本をつくる)
お手本にしたい図記号・銘板・部品などが載ったPDFを選ぶ
ページとDPIを指定する
必要なら、画面上で範囲を切り出す(お手本の画像を別途用意しなくてよい)
「テンプレート設定」を押す
② 「検索実行」タブ(横断検索する)
検索対象フォルダ・出力先フォルダを指定する
類似度しきい値を決める(推奨0.55〜0.75。まずは0.6あたりから)
DPIを指定する(テンプレートと同じ値を推奨)
サブフォルダ検索・並列数を設定する
「🔍 検索実行」を押す
③ 「結果一覧」タブ(まとめて出力する)
ヒットしたページを、スコア順に確認・プレビューする
「💾 ヒットページをPDF出力」で、1つのPDFにまとめて保存する
しきい値は、上げるほど厳密に(似ていないものを除外)、下げるほど広く拾います。
最初は、テスト用の少数のPDFで一度試してみるのがおすすめです。
動きとしきい値の感覚をつかんでから、本番のフォルダに使うと安心です。
5. 注意とお願い(免責・ライセンス)
ファイルを扱うツールなので、はじめにお願いがあります。
本ツールは無保証・自己責任でお使いください。
大切なファイルは、必ずバックアップを取ってからお使いください。
本ツールの使用によって生じたいかなる損害についても、作者は責任を負いません。
検索は読み取り専用で行い、出力はPDFの新規書き出しです。
出力先フォルダの指定先には、十分ご注意ください。
ライセンスは MIT License です。
改変や再配布は自由です。詳しくは、配布物に同梱の LICENSE ファイルをご確認ください。
6. おわりに
このツールで伝えたかったのは、速さそのものよりも、「探す手間を、見つける時間に変えられる」という感覚です。
図面を1枚ずつ開いて目で確かめていた時間が、お手本を1つ設定するだけの作業に変わる。
その分の時間は、本来やりたかった仕事に戻せます。
文字で探せないものは、画像で探せばいい。
この発想は、以前作った「文字で横断検索するツール」と地続きです。
PDF・Excel・Wordを文字で横断検索する話は、こちらの記事に書いています。
あわせて読んでいただけると、考え方の全体像が伝わると思います。
最初の導入で、少し手間がかかるかもしれません。
それでも、一度通してしまえば、毎回の図面探しがぐっと軽くなります。
うまくいかないときは、手順1から落ち着いて見直してみてください。
製造業の現場で「図面を目視で探すのが大変」「自分には難しそうで踏み出せない」というお悩みがあれば、コメントをください。
解決に役立つ、もう少し深堀した記事をお届けします。
