ベクターPDFとラスターPDFの違いとは?図面をAIで読む前に知っておきたい基本

「同じPDFの図面なのに、こっちはAIでうまく読めて、あっちは全然ダメ……なんで?」——図面のデジタル化を進めていると、こんな場面に出くわすことがあります。実はその原因、PDFの「種類」にあるかもしれません。PDFには大きく分けてベクターPDFとラスターPDFの2種類があるんです。この記事では、ベクターPDFとラスターPDFの違いと見分け方、そして図面をAIやPythonで読み取るときに何が変わるのかを、カジュアルに解説します。

ベクターPDFってどんなもの?

ベクターPDFは、線や文字を「データ(命令)」として持っているPDFです。たとえば「この座標からこの座標まで線を引く」「ここにこの文字を書く」といった情報が中に入っています。

CADソフトやWord、Excelなどから直接PDFに書き出すと、たいていはベクターPDFになります。拡大してもカクカクせず、線がくっきりしたままなのが特徴です。

ラスターPDFってどんなもの?

ラスターPDFは、中身が「画像(写真)」になっているPDFです。紙の図面をスキャナーで読み込んだり、FAXで受け取ったりしたものは、ほとんどがこのタイプ。見た目は図面でも、データとしては細かい点(ピクセル)の集まりでしかありません。

画像PDFやスキャンPDFと呼ばれることもあります。拡大すると線がぼやけたり、ギザギザになったりするのが特徴です。

ざっくり比較表

項目 ベクターPDF ラスターPDF
中身 線や文字のデータ 画像(ピクセル)
よくある作られ方 CADやOfficeから書き出し スキャン・FAX・写真
拡大したとき くっきりのまま ぼやける・ギザギザ
文字の選択・検索 できることが多い 基本できない
Pythonで線の座標を取る できる できない

手元のPDFはどっち?かんたんな見分け方

① 思いっきり拡大してみる

PDFビューアーで400%くらいまで拡大してみてください。線がシャープなままならベクター、ぼやけたりギザギザになったりすればラスターの可能性が高いです。

② 文字を選択してみる

図面の中の文字をドラッグして選択できればベクターの可能性が高いです。ただし、CADから書き出した図面は文字が線に変換されていて、ベクターでも選択できないことがあるので、①とあわせて判断するのがおすすめです。

③ Pythonでチェックする

枚数が多いなら、プログラムで判定するのもアリです。「PyMuPDF」という無料のライブラリを使えば、ページごとに図形と画像の数を数えられます。

import pymupdf

doc = pymupdf.open("drawing.pdf")
for page in doc:
    shapes = len(page.get_drawings())
    images = len(page.get_images())
    print(f"p{page.number + 1}: 図形 {shapes} / 画像 {images}")

図形がたくさんあればベクター、図形がほぼゼロで画像が1枚だけならラスター、と判断できます。

図面をAIで読むとき、何が変わる?

ベクターPDFなら「正確な計測」ができる

ベクターPDFは線の座標をそのまま取り出せるので、Pythonで長さや面積を正確に計算できます。AIには「この線は何の部材か」という判断だけを任せればいいので、精度の高い積算につなげやすいです。

ラスターPDFは「AIに見てもらう」のが基本

ラスターPDFは画像なので、座標のデータはありません。そのため、文字はOCRで読み取り、図面の内容は画像を理解できる生成AIに見てもらう、という方法になります。ただ、スキャン時のゆがみや汚れ、解像度の低さで読み間違いが起きやすく、寸法を正確に測るのはベクターPDFより難しくなります。

ちなみに「混ざっている」PDFもある

ベクターの図面に写真が貼り込まれていたり、スキャンした画像にOCRの文字情報が重ねられていたりと、両方が混ざったPDFもよくあります。「全部どっちか」と決めつけず、ページごとに確認するのが安心です。

まとめ

ベクターPDFとラスターPDFの違いは、ひとことで言うと「データか、画像か」です。図面をAIやPythonで読み取るなら、できるだけベクターPDFで受け取るのが近道。取引先から図面をもらうときに「CADから直接書き出したPDFでください」とお願いするだけでも、後の作業がずいぶん変わりますよ。「うちの図面はどっち?AIで読める?」と気になったら、hello-opensky までお気軽にご相談ください。