← 手順一覧へ戻る
Power Automate DesktopPDF初心者向け

PDFから文字を取り出して保存する(ページ範囲・空欄を確認)

文字情報を含むPDFから、必要なページのテキストを取り出します。3ページの練習例で範囲指定を図解し、空欄や同名ファイルがあるときは保存せずに終了します。

画面上の名前は、表示言語やバージョンによって異なる場合があります。Desktopの例は、フロー作成時に「Power Fx を有効にする」をオフにした標準構文です。Power Fx対応フローでは式・変数参照・インデックスの書き方が異なります。このページでは変数を %変数名% と表記します。出力変数の名前を入力する欄では、前後の % は付けません。

実行前に確認

  • WindowsのPower Automate for desktopを有人・手動実行する練習です。この例ではクラウドコネクタを使いません。利用できる実行方法は自分の契約・ライセンスで確認し、クラウドからの起動や無人実行は別途要件を確認してください。
  • 対象は文字情報を含むPDFです。画像だけのスキャンPDFは別途OCRが必要です。スキャンPDFで必ず空文字になるとは限らず、この空欄確認だけでは読取内容の正しさを保証できません。業務文書を外部OCRサービスへ送る練習は含みません。
  • 構造化データ用に最適化は、文書の配置を考慮して文字を取り出すための設定です。表や段組みを扱うときは保存前にオン・オフを比較し、原本と照合します。出力はどちらも1つの文字列で、表データや元のレイアウトを再現する保証はありません。この練習ではオフです。
  • 既存ファイルの確認後、書き込みまでに別の処理が同名ファイルを作る競合は防げません。1回ずつ手動実行し、練習専用の未使用名を使います。書き込み側の上書き設定だけを使うと既存の内容が失われるため、同名確認を省略しないでください。
  • 空欄または同名の案内は、フローを正常終了させて保存を見送る設定です。保存完了ではありません。空欄でなくても、文字化け・抜け・順序違いがないか原本と照合し、保存成功だけで抽出内容も正しいと判断しないでください。

1使うアクション

  1. アクション 1PDF からテキストを抽出範囲2〜3ページ → ExtractedPDFText
  2. アクション 2テキストのトリミング空欄確認用のCheckedTextを作る
  3. アクション 3IfCheckedTextが空か
  4. アクション 4メッセージを表示空欄:保存しない理由を表示
  5. アクション 5フローを停止正常に終了。書き込みへ進まない
  6. アクション 6End空欄確認の終わり
  7. アクション 7ファイルが存在する場合出力先に同名ファイルがあるか
  8. アクション 8メッセージを表示存在する:別の出力名を案内
  9. アクション 9フローを停止正常に終了。既存ファイルを保持
  10. アクション 10End同名確認の終わり
  11. アクション 11テキストをファイルに書き込む抽出した元の文字列をUTF-8で保存
  12. アクション 12メッセージを表示書き込み成功後だけ保存先を表示

図で見る処理のイメージ

概念図

3ページの練習.pdfから、2〜3ページの文字だけを取り出す例です。ページの選択と、保存してよいかの確認を分けて見ます。

取り出すページと、保存する文字

練習.pdf / 全3ページ文字を選択・コピーできるPDF

1ページ目備品確認

確認対象:会議室

対象外
2ページ目作業手順

机を確認する

取り出す
3ページ目確認結果

問題なし

取り出す

範囲(Range)開始ページ 2終了ページ 32つの数値欄に分けて入力

PDF からテキストを抽出

ExtractedPDFText / 1つの文字列

作業手順 机を確認する
確認結果 問題なし

含まれる語句の例。改行・空白はPDFにより変わります
  1. 1 空欄を確認

    前後の空白を除いたCheckedTextが空?

    空なら案内を表示して終了
  2. 2 同名を確認

    保存先にpages-2-3.txtがある?

    あるなら案内を表示して終了

両方の確認を通ったときだけ

pages-2-3.txt / UTF-8元の抽出文字列を保存CheckedTextではなく、ExtractedPDFTextを使う

ページ選択は、文字を取り出す範囲新しいPDFや表データは作りません。入力PDFはそのままです。

抽出成功時の流れを示す概念図です。空欄・同名は保存せず正常終了、抽出エラーはその場で停止する設定です。同時書き込みを防ぐ仕組みではありません。
結果の例

範囲2〜3なら「作業手順」「机を確認する」「確認結果」「問題なし」を含むtxtを期待します。1ページ目の語句は含みません。空欄・同名なら保存を見送ります。

狭い画面では、表を横にスクロールして抽出範囲と保存可否を確認できます。

ページ指定と保存可否の確認例(期待値)
確認する状態抽出文字・判定の目安この実行での保存
すべて/未使用の出力名備品確認・作業手順・確認結果を含む3ページ分の文字を保存
単一:2/未使用の出力名作業手順・机を確認するだけを含む2ページ目の文字を保存
範囲:開始2・終了3/未使用名作業手順・確認結果を含み、備品確認は含まない2〜3ページ分の文字を保存
抽出成功だが空文字CheckedTextが空 → 最初のIf保存しない。案内後に正常終了
代わりに半角スペース3個を設定Trim後は空 → 最初のIf保存しない。分岐だけの練習
文字あり・出力先に同名txtあり同名確認 → フローを停止上書きしない。既存txtは保持
入力PDFが見つからない抽出アクションがエラーで停止書き込みへ進まない
保護されたPDFのパスワード不正抽出アクションがエラーで停止書き込みへ進まない

架空の文書と設定から示した期待値です。改行・空白や抽出精度はPDFにより変わります。実際のPower Automateフローを実行して確認した結果ではありません。

設定と処理を説明する模式図です。実際の設定画面や実行結果のスクリーンショットではありません。

2実際の設定内容

入力する値・操作手順を確認する11ステップの設定と確認方法
  1. 1

    準備:自分で読み書きできる C:\Work\PDFPractice フォルダーを作ります。文書作成ソフトで改ページを入れた3ページを用意し、1ページ目に「備品確認」「確認対象:会議室」、2ページ目に「作業手順」「机を確認する」、3ページ目に「確認結果」「問題なし」を入力して、練習.pdfとしてこのフォルダーへPDF出力します。パスワード・画像・表・ヘッダー・フッターは付けず、PDF上で文字を選択・コピーできることと3ページあることを確認します。

  2. 2

    まず保存せずに抽出を確認します。Power Fxをオフにした新しいデスクトップフローへ「PDF からテキストを抽出」だけを置きます。PDFファイル=C:\Work\PDFPractice\練習.pdf、抽出するページ=範囲(Range)、開始ページ番号=2、終了ページ番号=3。2と3は別の数値欄に入力します。1つの欄へ「2-3」とは入力しません。詳細のパスワードは空欄、構造化データ用に最適化=オフ。生成された変数は既定のExtractedPDFTextのままにします。

  3. 3

    この1アクションだけで保存して手動実行し、変数ペインのExtractedPDFTextを開きます。「作業手順」「机を確認する」「確認結果」「問題なし」を含み、「備品確認」「確認対象:会議室」を含まないか確認します。改行や空白の数が原本と同じとは限りません。この段階ではテキストファイルを作りません。期待した文字を確認できてから、以降のアクションを追加します。

  4. 4

    抽出の次に「テキストのトリミング」(Trim text)を追加。トリミングするテキスト=%ExtractedPDFText%、対象=先頭と末尾の空白文字、出力変数の名前=CheckedTextです。CheckedTextは空欄判定専用です。保存するExtractedPDFTextは書き換えません。目印の前後を切り取るCrop textとは別のアクションです。

  5. 5

    直後に「If」を置き、最初のオペランド=%CheckedText%、演算子=空である(Is empty)とします。内側の「メッセージを表示」は本文=文字を取得できなかったため保存しません。原本とページ範囲を確認してください。 その次、同じIfの内側へ「フローを停止」を置き、終了方法=正常に終了(Successfully)。Endで閉じます。これで空欄・空白だけなら書き込み前に終了します。

  6. 6

    最初のEndの後に「ファイルが存在する場合」を追加。ファイルの条件=存在する、ファイルパス=C:\Work\PDFPractice\pages-2-3.txt。内側の「メッセージを表示」は本文=出力ファイルが既にあります。別の未使用名に変えてから再実行してください。 続けて内側に「フローを停止」(正常に終了)を置き、Endで閉じます。出力名を変えるときは、この確認と次の書き込みで同じフルパスにします。

  7. 7

    2つ目のEndの後に「テキストをファイルに書き込む」を置きます。ファイルパス=C:\Work\PDFPractice\pages-2-3.txt、書き込むテキスト=%ExtractedPDFText%、新しい行を追加=オフ、ファイルが存在する場合=既存の内容を上書き、エンコード=UTF-8。直前の確認を通った未使用のパスに書き込みます。このアクションには出力変数がありません。次の「メッセージを表示」は本文=保存先:C:\Work\PDFPractice\pages-2-3.txt とします。すべてのメッセージはボタン=OK、自動的に閉じる=オフです。

  8. 8

    確認A(基本例):出力名が未使用であることを確認し、フローを保存して最初から実行します。保存先のtxtを開き、抽出時と同じ4つの語句を検索します。原本PDFも残っていることを確認します。同じ設定で再実行すると、同名確認の案内で終了し、前のtxtを変更しない想定です。入力PDFや出力先を他の処理が同時に変更しない状態で試します。

  9. 9

    確認B(ページを変える):抽出するページ=すべて(All)なら3ページ分、単一(Single)で単一ページ番号=2なら2ページ目だけです。確認用の出力名もpages-all.txt、page-2.txtなど未使用名へ変更し、同名確認と書き込みの2か所をそろえてから、保存して最初から実行します。印刷された見出しや文中の数字ではなく、PDFを開いて先頭から数えたページで確認します。確認後は範囲2〜3に戻します。

  10. 10

    確認C(空欄の分岐だけを練習):本番用とは別の練習フローで抽出アクションを「変数の設定」に置き換え、変数名ExtractedPDFTextに半角スペース3個を設定します。残りは同じにして手動実行すると、Trim後が空になり、空欄の案内で終了してtxtを作らない想定です。これはPDFの読取精度やスキャンPDFの挙動を確認するテストではありません。

  11. 11

    読み取りや保存でエラーになったら:この例はエラー時にフローを停止する既定の動作を使います。「エラー発生時」を次のアクションへ続行する設定に変えないでください。見つからないPDFはフルパス、パスワードエラーは利用許可と正しいパスワード、抽出失敗はPDFの状態、書き込み失敗は保存先フォルダーの存在・権限を確認します。抽出失敗と空欄判定による正常終了は別です。

Microsoft公式ページで確認する

設定を確認できる公式資料