ガイド
PDFから商品データを抽出する方法
サプライヤーのPDFにはカタログに必要な仕様が載っていますが、そのままではインポートできません。ここでは、構造化された商品データに変換する4つの方法と、その選び方を紹介します。
商品データの抽出とは、文書に印刷されている値(型番、寸法、素材、容量、定格、警告表示など)を、システムが利用できる項目に変換することです。数点の商品であれば手作業のコピーで十分ですが、数百SKUのサプライヤーカタログで、メーカーごとにPDFのレイアウトが異なる場合は、選ぶ手法によって導入にかかる時間と、ストアに混入する誤りの数が決まります。
ここでは、一般的な4つのアプローチを比較したうえで、どの手法でも重要になるチェック項目を取り上げます。
まず出力を決める:商品スキーマを定義する
抽出を始める前に、必要な項目とその形式を決めます。小型家電であれば、スキーマには型番、ブランド、EAN、幅・高さ・奥行(ミリメートル)、重量(キログラム)、電力(ワット)、電圧、素材、色、警告表示などが含まれるでしょう。単位と許容値をあらかじめ定義しておくことで、サプライヤー間で抽出データを比較できるようになります。
複数のチャネルで販売する場合は、各項目をそれぞれのチャネルで使われる属性名(たとえばShopifyの商品オプションやWooCommerceの属性)に対応付けておくと、再整形することなく抽出結果を再利用できます。
手法1:手作業でのコピー&ペースト
担当者がPDFを開き、スプレッドシートや商品登録フォームに値を入力または貼り付けます。特別なツールが不要でどのレイアウトにも対応できるため、多くのチームがここから始めます。
ただし、件数が増えるほどコストも膨らみます。作業が遅く、集中力も途切れがちで、型番の数字の入れ違いや別の列の値を拾ってしまうといった転記ミスは、後から見つけにくいものです。手入力は、小規模なカタログや、自動化した手法の上に重ねる確認ステップとして有効です。
手法2:PDF表抽出ツール
表抽出ツール(オープンソースのものやPDFエディタのエクスポート機能を含む)は、デジタルPDF内の表を検出してCSVやExcelに書き出します。データが整った表に収まっている場合は高速です。
一方、本文中に書かれた値、結合セル、複数ページにまたがる表、スキャン文書は苦手です。また、名前付きの項目ではなく生の表が返されるため、列をスキーマに対応付け、見出し、単位、脚注を整える作業は残ります。
手法3:テンプレート/ゾーン解析
テンプレート型のパーサーでは、特定のレイアウトについて、各項目がページ上のどこにあるかを定義します。一度設定すれば、まったく同じレイアウトの文書はすべて一貫して抽出されるため、同一送信元からの請求書のような、同一形式の文書を大量に処理する場合に適しています。
ところが、サプライヤーのデータシートがそこまで統一されていることはまれです。メーカーごと、場合によっては製品ライン単位でテンプレートが必要になり、サプライヤーがデザインを変更するとテンプレートは使えなくなります。多数のサプライヤーから調達するカタログでは、メンテナンスの負担がすぐに利点を上回ります。
手法4:AI抽出
AI抽出は、言語モデルと視覚モデルを使い、人が読むように文書を読み取ります。型番がヘッダー、表、文章のどこにあっても見つけ出し、スキーマの項目を値と単位とともに返します。固定位置に依存しないため、スキャンしたページを含め、ひとつの設定で多くのサプライヤーのレイアウトに対応できます。
トレードオフとして、AIの出力は確認が必要です。優れたツールは、抽出した値に信頼度の目安と根拠となる出典を示すため、確認者は不確かな箇所に集中できます。また、文書に記載がない項目は推測せず、空欄のままにするか、要確認として示します。Doc2ShelfのPDF製品データ抽出は、抽出ごとに信頼度と網羅度をスコア化し、抽出した事実をページ番号と短い引用とともに記録します。確認済みのレコードは、出品情報やコンプライアンスの下書きに利用できます。
手法の選び方
目安として、次のように考えるとよいでしょう。
- 商品が約20点未満、または単発の追加の場合:明確なスキーマを用意したうえでの手入力。
- 整ったデジタル表で、サプライヤーが1〜2社の場合:表抽出ツールと、その後の整形。
- 同一レイアウトの文書が大量にある場合:テンプレート解析。
- サプライヤーが多い、レイアウトが多様、またはスキャンPDFの場合:人によるレビュー付きのAI抽出。
抽出データの正確性を保つチェック項目
どの手法でも、誤りの大半は同じような原因で発生します。確認ステップに次のチェックを組み込んでください。
- モデルの対応付け:1枚のシートに複数のモデルが載っている場合は、各値が正しいモデルの列に属しているか確認します。
- 単位:単位(mmとcm、WとkWなど)を統一し、数値には必ず単位を併記します。
- 脚注と条件:容量や稼働時間などの値は、記載された試験条件に依存することがよくあります。
- 識別子:EAN/GTINのチェックディジットと型番を1文字ずつ確認します。
- 欠落または矛盾する値:文書に記載のない値を推測せず、サプライヤーに問い合わせます。
- トレーサビリティ:元のPDFをレコードに紐付けて保管し、後からでも誰でも値を再確認できるようにします。
抽出方法の比較一覧
上記の4つの方法は、読み取れる内容よりも、精度を左右する要因と必要なセットアップの量に違いがあります。OCRも比較対象に含まれますが、方法というより1つの層です。スキャンしたページをテキストに変換するもので、そのテキストを項目に変換するには、他のいずれかの方法が必要です。
精度は、方法だけで決まるものではありません。入力する文書、スキーマで各項目がどれだけ明確に定義されているか、確認作業の徹底度によって変わります。そのため、公表されている数値に頼るよりも、実際のサプライヤーPDFのサンプルで測定することをお勧めします。
| 方法 | 精度を左右する要因 | セットアップの手間 | 出力 | 適した用途 |
|---|---|---|---|---|
| 手入力 | 確認者の注意力と明確なスキーマ | なし | 入力どおりの名前付き項目 | 小規模なカタログ、単発の追加、確認作業 |
| コピー&ペーストまたはPDFからExcelへの書き出し | 実際のテキストレイヤーと、結合のない整った表 | 低 | 手作業で対応付けるプレーンテキストまたは表 | 1~2社のサプライヤーによる整ったデジタルの表 |
| テンプレート解析またはゾーン解析 | すべての文書でレイアウトが同一であること | レイアウトごとに高く、レイアウトが変わるたびに再度必要 | 名前付き項目 | 1種類の固定レイアウトの大量処理 |
| OCR | スキャンの解像度、コントラスト、傾き、フォント、言語 | 低~中 | テキストのみ | スキャンしたページを他の方法で読み取れる状態にする |
| LLMベースの抽出 | スキーマの明確さ、文書の品質、確認作業の徹底度 | レイアウトごとの手間は低い。確認ワークフローが必要 | 値と単位を伴う名前付き項目 | 多数のサプライヤー、多様なレイアウト、文章と表が混在する文書 |
仕様表と複数バリエーションの表の扱い方
データシートの抽出エラーの大半は表で発生し、その多くは1つの表が複数のモデルを説明している場合に起こります。読む人には分かりやすく見える表でも、パーサーや疲れた担当者が間違えやすい構造が隠れています。たとえば、見出しにしか記載のない単位、複数のモデルにまたがって結合されたセル、数値に付いた脚注マーカー、次のページに続く表などです。
値をレコードにコピーする前に、各仕様表を決まった順序で確認します。
- 向きを確認します:モデルやバリエーションは列に並んでいますか、行に並んでいますか。最後にレコード数を照合できるよう、その数を控えておきます。
- 括弧内の単位も含め、すべての見出し行を読み、その単位を該当する列または行の各セルに引き継ぎます。
- 結合セルを展開します:複数のモデル列にまたがる値は、最初のモデルだけでなく、そのすべてのモデルに適用されます。
- ページをまたいで分割された表を結合し、繰り返された見出しがデータ行として読み込まれていないこと、ページの切れ目で行が欠けていないことを確認します。
- 脚注マーカーを数値から分離します:「1.1¹」は、脚注1の付いた1.1であり、1.11ではありません。脚注の文は、その値の条件として保存します。
- 空欄、「—」、「n/a」、「任意」を区別します:空欄は不明、ダッシュは多くの場合「該当なし」を意味し、どちらもゼロにしてはいけません。
- 表の下の「全モデル:230 V」のように、表の外にある値を探し、対象となるすべてのモデルに適用します。
- 表をモデルまたはバリエーションごとに1レコードに分割し、レコード数が手順1と一致することを確認します。
スキャンしたPDFとOCRの品質
まず、PDFにテキストレイヤーがあるか確認します。テキストを選択または検索できればデジタルのPDFです。できなければ画像であり、表を読み取るツールを使う前にOCRが必要です。サプライヤーからスキャンしたものが届いた場合は、デジタルの元データを依頼してください。これだけで、ある種類のエラーをまとめてなくせます。自分でスキャンする場合、テキストには300 dpi前後の解像度が一般的に推奨されており、解像度と同じくらい、ページが傾いておらずコントラストが高いことが重要です。
OCRのエラーは、もっともらしい出力になるため危険です。取り違えられやすい文字にはパターンがあるため、チェックの方法も予測できます。
| OCRエラー | 例 | 見つけ方 |
|---|---|---|
| 文字と数字の取り違え(O/0、l/1、S/5、B/8) | AX-100が「AX-1OO」になる | 型番のパターンチェック、GTINのチェックディジット |
| 小数点の欠落 | 「1,5 l」が「15 l」と読み取られる | 項目ごとの妥当な範囲のチェック |
| 脚注が数値に混入 | 「1.1¹ kg」が「1.11 kg」と読み取られる | 同系列のモデルと比較し、脚注の文を確認する |
| 読み取り順序の誤り | 2つの列が1行に結合される | モデルごとの値の数を確認する |
| 単位記号の誤読 | 「°C」が「oC」、「µm」が「um」になる | 項目ごとの許容単位リスト |
| マイナス記号やダッシュの欠落 | 「−20 °C」が「20 °C」と読み取られる | 範囲の最小値≦最大値であることを確認する |
実例:データシートが構造化レコードになるまで
ここでは、1つの表に2つのモデルが載っている電気ケトルのデータシート(例示用)を使って、上記の手順をどのように適用するかを示します。これは説明用の例であり、実在の製品でも、実際の抽出結果でもありません。ソースの各行を項目に対応付け、正規化し、確認します。
結果として、容量・電力・電圧を共有しつつ、色・重量・識別子はそれぞれ独自に持つ2つのバリエーションレコードと、サプライヤーへの2つの未解決の質問が得られます。仮定で補った値は1つもありません。2つ目のモデルのEANと原産国は、サプライヤーから提供されるまで空欄のままです。1枚のシートではなく、多数のサプライヤーにまたがる値と単位の正規化については、商品属性のガイドで解説しています。
| 印刷されているソース行 | 項目 | 抽出された値 | 実施した確認 |
|---|---|---|---|
| モデル:AX-100 | AX-100B | model_number | AX-100、AX-100B | 2列あるため、バリエーションレコードは2件 |
| 容量 1,5 l(両モデルにまたがって結合) | capacity | 各モデル 1.5 L | 小数点がカンマ。結合セルを両方のモデルにコピー |
| 電力 1850–2200 W | rated_power | 最小 1850 W、最大 2200 W | 1つの数値にせず、範囲のまま保持 |
| 220–240 V~ 50/60 Hz | rated_voltage、frequency | 220–240 V AC、50/60 Hz | 1行から2つの項目 |
| 色:ヘアライン仕上げのスチール | ブラック | color | ヘアライン仕上げのスチール、ブラック | バリエーションごとに1つの値 |
| 正味重量(kg) 1.1¹ | 1.0¹ | net_weight | 1.1 kg、1.0 kg | 単位は見出しから取得。脚注¹「ベースを除く」を保持 |
| EAN 6291041500213 | — | gtin | 6291041500213、空欄 | チェックディジットは有効。欠けているEANを問い合わせる |
| (記載なし) | country_of_origin | 空欄 | サプライヤーに依頼する。推測では補わない |
よくある失敗パターンと検証ワークフロー
抽出方法にかかわらず、抽出エラーの大半は、ごく少数の同じ文書上の特徴が原因です。それらを把握しておけば、すべての値を同じ注意度で読み直すのではなく、実際のリスクに合わせて確認作業を設計できます。
- 文書を確認します:製品が正しいか、最新の版か、全ページが揃っているか。
- すべての識別子(型番、チェックディジット付きのGTIN)と、安全に関わるすべての値(警告、電気定格、危険情報)を、ソースと照合します。
- それ以外の項目には自動チェックをかけます:単位があるか、値が妥当な範囲内か、必須項目が入力されているか。
- サプライヤーごとに、残りの項目からサンプルを抽出して確認し、エラーが見つかった場合はサンプルを広げます。
- 解消されなかった不明点は、推定で埋めずに、サプライヤーへの質問にします。
- ソースPDF、確認者、確認日をレコードとともに保存します。
| 失敗パターン | 起こる問題 | 対策 |
|---|---|---|
| 単位が見出しにしかない | 数値だけになって単位が失われる | 見出しの単位を各セルに引き継ぐ。単位のない測定値は不採用とする |
| 脚注と試験条件 | 「標準値」「25 °Cの場合」「ベースを除く」が抜け落ちる | 条件を値とともに保存する |
| 結合セル | 値が最初のモデルにしか割り当てられない | バリエーションに分割する前に結合セルを展開する |
| 多言語のデータシート | 小数点のカンマを誤読する。同じ値が2つの言語で二重に取得される | ロケールに対応した数値解析、見出しの同義語リスト、重複の排除 |
| 1つのPDFに複数の製品 | 値が別の製品に紐づく | 製品ごとに1レコードにする。各型番を確認する |
| 古い版 | 古いシートが最新のシートと食い違う | 文書の日付または版を記録し、最新のものを優先する |
| 図面や画像にしか値がない | 技術図面上の寸法が見落とされる | 図面を確認し、不足している寸法に印を付ける |
よくある質問
- スキャンしたPDFからもデータを抽出できますか?
- 可能ですが、先にOCR(光学文字認識)で文字を認識する必要があります。デジタルテキストしか読めない表ツールでは、スキャンしたページから何も取得できません。OCR対応ツールやAIベースのツールなら読み取れますが、画質の低いスキャンでは特に注意が必要です。
- PDFのデータシートから製品属性を抽出するには?
- 必要な属性(素材、色、容量など)を定義し、データシートの表や文章から値を取り出します。手作業でも、表のセルや文を項目に対応付けるAIツールでも構いません。宣伝文句にしか書かれていない属性は慎重に扱い、技術的な値は仕様表で確認してください。
- 抽出した商品データはどの形式にすればよいですか?
- 後続のシステムが取り込める形式にします。スプレッドシートやストアのインポーターであればCSV、APIやPIMシステムであればJSONが一般的です。バリエーションごとに1行または1オブジェクトとし、項目名と単位は統一してください。
- AI抽出は、レビューなしで公開できるほど正確ですか?
- レビューなしでの公開はおすすめできません。AI抽出で入力作業の大半は省けますが、データを使用する前に、不確かな項目、識別子、安全に関わる内容については、人が元の文書と照らして確認する必要があります。
- PDFのデータシートから表を抽出する最良の方法は?
- 整ったデジタルの表であれば、表抽出ツールでもAI抽出ツールでも対応できます。スキャンした表は、先にOCRが必要です。ツールにかかわらず、結合セルを展開し、見出しの単位を各値に引き継ぎ、脚注マーカーを数値から分離し、複数モデルの表はモデルごとに1レコードに分割してください。
- PDFからのAIによる製品データ抽出は、どのくらい正確ですか?
- 文書の品質、レイアウトの複雑さ、項目の定義の明確さによって変わるため、お使いの文書に当てはまる単一の精度の数値はありません。ご自身で測定してください。サプライヤーPDFのサンプルを抽出し、各項目をソースと照合して、誤った値と欠落した値を別々に数えます。
- PDFカタログをストア用のCSVに変換できますか?
- はい。製品またはバリエーションごとに1レコードを、固定の列構成に抽出し、単位と値を正規化したうえで、ストアのインポート用テンプレートに合わせて列名を変更します。カタログは個別のデータシートよりも、製品ごとの情報が少ないことが多いため、他の情報源から補うべき不足が出ることを見込んでおいてください。
- 他の言語のデータシートからデータを抽出するには?
- 抽出時は値を印刷されたとおりに保持し、文書のロケール(小数点のカンマ、桁区切りなど)に従って数値を解析し、外国語の見出しは同義語リストで自社の項目名に対応付けます。説明文は別途翻訳し、確認を受けてください。