はじめに
PDFは便利なファイル形式である一方、データ分析の観点では「厄介な存在」となることが少なくありません。なぜなら、PDFに格納された情報は人間にとっては読みやすくても、機械にとっては扱いにくい非構造化データだからです。
本記事では、Dataikuを活用してPDF内の重要な情報を自動的に抽出し、分析可能な構造化データに変換する実践的な方法をステップバイステップで解説します。手作業でのデータ入力から解放され、より価値の高い分析業務に時間を使えるようになります。Dataikuの基本操作は理解しているが、より高度な活用方法を学びたい方にもおすすめの機能です。
この記事で学べること
- DataikuのText Extraction Pluginを使ったPDFからのテキスト抽出方法
- Prepareレシピと正規表現を組み合わせたデータ構造化のテクニック
- スマートパターンビルダーによる効率的な正規表現の作成方法
- 様々なPDFレイアウトに対応するための実践的なパターン例
処理の流れ
使うレシピはPluginレシピのText extractionとVisualレシピのPrepareの2つです。
Text extractionでPDF内のテキストを抽出、Prepareで抽出したテキストから正規表現を使って構造化する流れになっています。正規表現を利用するのでPDFの書類の構成ごとにPrepareの修正が必要になります。
以下の処理ではPluginの「Text extraction and OCR」を利用します。まだインストールしていない場合は、プラグインメニューから検索してインストールしてください。
データの準備
今回はサンプルで作成したPDFを利用します。DSSのFlow画面から[+アイテムを追加] > [フォルダー] で新規フォルダーを作成し、解析したいPDFファイルをアップロードします。
1. Text extraction
最初にPluginの「Text extraction」を実行します。
作成したフォルダーを入力に指定し、実行すると、ファイルごとに抽出テキストが格納されたデータセットが作成されます。
実行後のデータは、フォルダ内のファイル毎にレコードが作成されます。
2. Prepare
次に抽出されたテキストの構造化を行います。Prepareレシピの「Extract with regular expression」ステップを使用します。
Prepareで「Extract with regular expression」ステップを追加、入力列にPDFから抽出したテキストtext、出力列の接頭辞に任意の列名を設定します。 正規表現パターンは自分で入力して動かすこともできますが、[スマートパターンを選択]機能を使うと、抽出したい範囲をマウスで指定するだけで、Dataikuが最適な正規表現を動的に生成してくれます。
https://knowledge.dataiku.com/14/data-preparation/prepare-recipe/tutorial-smart-pattern-builder.html
Wrap Linesのチェックボックスにチェックを入れるとフルテキストが表示され、マウスクリックの範囲指定で、抽出したい範囲を選択することができます。
複数の候補からマッチ率(Match rate)が高いものを選択することで、精度の高い抽出設定が可能です。また、複数のレコードを使って、正規表現の候補を絞ることもでき、意図しない部分の抽出を減らせます。
正規表現を選択して[OK]をするとステップとして、任意のテキストを抽出するスクリプトが完成しました。
抽出したい要素ごとに正規表現のパターンを作成して実行すると構造化されたテーブルを取得することができました。 以下はご参考までに、自分で正規表現パターンを作成する場合の例と利用しているパターンの補足を記載しておきます。
正規表現パターンの解説
パターン①:キー項目が横並びの場合
以下の中で「件名→Dataiku支援」や「作業完了日→2025年10月20日」のような、取得したい値に対してキーとなる項目が横並びに配置している場合の正規表現パターンを考えます。
# 件名の後ろ「Dataiku支援」の部分から空白までの間の文字を抽出する正規表現パターン
(?<=件名)(.*)\s| パーツ | 役割 | 意味 |
|---|---|---|
| (?<=件名) | 肯定的戻り読み | 「件名」という文字が直前にある場所を特定(抽出には含まない) |
| (.*) | キャプチャグループ | 任意の文字を好きなだけ繰り返して抽出するメイン部分 |
| \\s | 空白文字 | スペースや改行。抽出の「終わり」を示す目印 |
パターン②:位置指定型(テーブル形式)
次は、抽出したい箇所の行番号や単語の順番が固定されている場合に有効なパターンです。
^(?:[^\n]*\n){14}(?:\S+\s+){1}(.*?\s)
この例では、15行目(index=14)の2番目の単語を抽出しています。
まとめ
次の画像のように、フォーマットが決まったPDFファイルから構造化データを作成できました。
本記事では、Dataikuを使ってPDF内の非構造化データを構造化データに変換する方法を解説しました。以下が主なポイントになります。
- PDF抽出の課題:手作業の転記はミスが起きやすく時間がかかる
- 使用するツール:Text extractionでPDF内のテキストを抽出 → Prepareレシピで正規表現を使って必要な情報を抽出・構造化
- 正規表現の活用:Prepareの「Extract with regular expression」ステップを使用。スマートパターンビルダーで範囲指定することで正規表現を自動生成できる
この手法により、PDFからのデータ入力作業を大幅に効率化し、分析可能な構造化データを迅速に作成していきましょう。