メインコンテンツへスキップ

Power AutomateでPDFをテキストファイルに変換する:PDF4meを使用してスキャンした契約書を検索可能なSharePointコーパスに変換する

· 1分で読める
SEO and Content Writer

PDF4me テキストと画像を抽出する これは、PDF のテキスト レイヤーを配列として返す Power Automate アクションです。上流の OCR と下流の Compose 結合と組み合わせることで、このフローは SharePoint ライブラリにドロップされたすべての PDF を一致する PDF に変換します。 .txt AI検索に対応したファイル。

この方法を検索すると、最初の結果はマイクロソフト自身のものだった。 PDFアクションリファレンスPower Automate について説明しています デスクトップ アクションはクラウドフローには存在しません。この一点こそが、次の2つの検索結果が、同じ質問をしながら明確な回答が得られていないRedditのスレッドとPower Platformコミュニティのスレッドである理由です。このフローこそが明確な回答であり、標準ティアコネクタ上で完全にクラウド上で実行されます。

流れの概要
1. When a file is created (properties only)
SharePoint trigger on the library, scoped to the RagInput folder. Returns metadata, not bytes.
2. Get file content
Fetches the actual PDF bytes using the identifier the trigger handed over.
3. Convert PDF to editable PDF using OCR
Adds a text layer to scans. OCR Only When Needed skips PDFs that already have one.
4. Extract Text and Images
Returns the text as an array. Extract Images stays No.
5. Compose
join() flattens the texts array into one newline separated string.
6. Create file
SharePoint writes the string to /Shared Documents/RagText as .txt.
要約版

PDFファイルがSharePointライブラリに保存されると、トリガーが新しいアイテムを報告し、「ファイルコンテンツを取得」でファイルのバイト列を取得します。PDF4meは、必要に応じてOCRを実行し、テキストを配列として抽出します。1行の「Compose」式でその配列を1つの文字列に結合し、SharePointはその結果をプレーンテキストファイルとして隣の場所に書き込みます。6つのアクション、プレミアムコネクタ不要、そして全体の処理は約12秒で完了します。

なぜ?という問いに対する質疑応答​

フロー内でテキストを使用する代わりに、なぜ.txtファイルを作成するのですか? フロー実行内の文字列は、その実行期間中のみ有効です。ライブラリ内のファイルは永続的で、インデックス作成が可能であり、SharePoint検索、ベクターデータベース、コンテキストを取得するチャットボットなど、後から参照するあらゆるものから読み取り可能です。

1つのファイルを取得するのに、なぜ2つの手順が必要なのですか? プロパティのみのトリガーは、意図的に軽量化されています。アイテムが出現したことを報告し、識別子を含むメタデータを提供しますが、データデータは提供しません。ファイルコンテンツの取得トリガーは、その識別子をドキュメント自体に置き換えます。この2つの処理を分離することで、トリガーの高速性を維持し、ダウンロード前にメタデータに基づいてフィルタリングを行うことができます。

ほとんどのPDFには既にテキストが含まれているのに、なぜOCRを実行する必要があるのでしょうか? 見た目では区別できないからです。スキャンされた契約書とデジタルネイティブの契約書は、フォルダ一覧では区別できません。OCRアクションの OCRは必要な時のみ使用 この設定では各ファイルを検査し、既にテキストレイヤーが含まれているファイルはスキップするため、実際にテキストレイヤーが必要な部分のみにコストが発生します。

そもそもなぜ「構成」ステップが必要なのでしょうか? テキストと画像を抽出する結果 texts 配列として書き込まれる場合、通常は1ページに1つのエントリが入ります。配列をファイルに直接書き込むと、JSONの括弧とエスケープされた引用符がそのまま使用されます。Composeは、ディスクに書き込まれる前に、エントリを結合してきれいな文章に変換します。


得られるもの​

入力: SharePointのドキュメントライブラリにドロップされたPDFファイルであれば、スキャンされたものでもデジタルネイティブのものでも構いません。命名規則は不要です。 出力: PDFファイル1つにつき、2つ目のライブラリにプレーンテキストファイルが1つ格納され、そこには文書の完全な読み取り可能な内容が含まれています。

SharePoint ドキュメント ライブラリには、rag-test.pdf、rag-test2.pdf、services-agreement.pdf を含む RagInput フォルダーが表示されており、これらはすべて Pdf4me Flow アカウントによって変更されています。

RagInput。ここにPDFファイルをドロップすると、処理が開始されます。

SharePoint ドキュメント ライブラリには、フローによって生成された rag-test.pdf.txt と rag-test2.pdf.txt を含む RagText フォルダーが表示されています。

RagText。PDFファイル1つにつき1つのプレーンテキストファイル。インデックス作成準備完了。

以下は、サンプル契約をディスクに書き込んだとおりに出力された内容です。

MASTER SERVICES AGREEMENT
Between Initech LLC and Umbrella Inc.
Effective date: 1 January 2026. Auto-renews annually.
Liability cap: USD 100000. Confidentiality: 5 years.
CLEAN TEST MARKER: PDF4ME-CLEAN-TEST-2026.

先頭の空白に注意してください。OCRはレイアウトの空白を保持するため、検索や言語モデルへの入力には問題ありません。後続のパーサーが空白に厳しい場合は、後で削除してください。


必要なもの​

  • パワーオートマタ。 Power Automateを開くこれはクラウドフローです。ここにあるものはすべて標準ティアであり、プレミアムコネクタもゲートウェイもありません。
  • PDF4me APIキー。 APIキーを取得してくださいPDF4meアクションを初めて追加する際に接続してください。
  • 2つのフォルダを持つSharePointサイト入力用PDFと出力用テキストの2つのフォルダを作成します。フォルダ選択ツールが参照先を指定できるように、ビルド前に両方を作成してください。
  • テスト用PDF。 契約サンプル.pdfマーカー行を含む短いサービス契約書。grepで検索できます。

まずはサンプルを入手してください。 フローを保存したら、PDFファイルを入力フォルダにアップロードし、出力フォルダに保存されたファイルと想定されるテキストファイルを比較してください。


フローの概要​

  1. ファイルが作成されたとき(プロパティのみ) (SharePoint トリガー) スコープは /Shared Documents/RagInput。
  2. ファイルの内容を取得する トリガーを使用する Identifier。
  3. PDF - OCRを使用してPDFを編集可能なPDFに変換 品質 Draft OCRは必要な時のみ使用する true。
  4. PDF - テキストと画像を抽出 抽出テキスト付き Yes 画像を抽出 No。
  5. 作曲する 実行中 join() 返された texts 配列。
  6. ファイルを作成する (SharePoint)ライティング .txt の中へ /Shared Documents/RagText。

フローの概要全体​

Power Automate の実行履歴には、以下の 6 つのアクションが順番に成功したことが示されています: SharePoint ファイルが作成されたときのプロパティのみ (0.3 秒)、ファイルコンテンツの取得 (0.2 秒)、PDF OCR を使用して PDF を編集可能な PDF に変換 (11 秒)、PDF テキストと画像の抽出 (0.4 秒)、作成 (0 秒)、SharePoint ファイルの作成 (0.3 秒)

OCRだけが11秒と最も遅い。他の5つのステップはそれぞれ0.5秒未満で完了する。


ステップ1:SharePointライブラリで新しいPDFファイルを監視するにはどうすればよいですか?​

これまでの流れ: まだ何も起きていない。これが引き金だ。

使用 ファイルが作成されたとき(プロパティのみ)新しいアイテムがアップロードされると、そのメタデータが返されます。ライブラリ全体を対象とする監視では、そのライブラリ内のどこかで誰かがアップロードを行うたびに監視が開始されるため、監視対象を1つのフォルダに限定してください。

  1. 作成する 自動化されたクラウドフロー そして選ぶ ファイルが作成されたとき(プロパティのみ)。
  2. 設定する:
    • サイトアドレス: https://ynoox1.sharepoint.com/sites/PDF4meSharepoints
    • 図書館名: 選ぶ 文書 ドロップダウンから
  3. 開ける 詳細パラメータ、 追加 フォルダ、そしてそれを /Shared Documents/RagInput。

SharePoint トリガー構成​

Power Automate ファイルが作成されたとき、プロパティのみでパネルがトリガーされ、サイト アドレスが PDF4me Sharepoints、ライブラリ名が Documents、詳細フォルダー パラメーターが /Shared Documents/RagInput に設定されます。

ライブラリ名はライブラリ自体の名前、つまり「Documents」です。その下の「フォルダ」パラメータは、トリガーをその中の特定のフォルダに絞り込むためのものです。

ヒント。 また、トリガーも見つかります。 フォルダ内にファイルが作成されるとこれはファイルバイトを直接返し、次の操作を省略します。ただし、非推奨となっているため、今後も継続して実行する場合は、ここに示したプロパティのみの組み合わせを使用することをお勧めします。


ステップ2:トリガー後にファイルコンテンツを取得する必要があるのはなぜですか?​

これまでの流れ: SharePointトリガー。

プロパティのみのトリガーはメタデータを渡し、ドキュメントは渡しません。ファイルコンテンツを取得するトリガーは、 Identifier PDF4meが必要とする実際のバイト数。

  1. 追加 SharePoint > ファイルの内容を取得する。
  2. 設定する:
    • サイトアドレストリガーと同じサイト
    • ファイル識別子: Identifier トリガーから
  3. 開ける 詳細パラメータ そして設定する コンテンツタイプを推測する に Yes。

ファイルコンテンツ構成を取得します​

SharePointの「ファイルコンテンツの取得」アクションパネルで、サイトアドレスをPDF4me SharePointサイトに設定し、ファイル識別子をトリガーの識別子トークンにマッピングし、コンテンツタイプの推測を「はい」に設定します。

コンテンツタイプを推測する「はい」を選択すると、次のアクションで汎用的なデータではなく、実際のPDFバイトが渡されます。

識別子は、2つのステップ間の結合を表します。 トリガーを使用する 識別子 ファイル名やパスではなく、フィールドです。フォルダ間で名前が重複したり、ドキュメントの名前が変更されると名前も変わりますが、識別子は変わりません。


ステップ3:テキスト抽出前にOCRを実行する理由とは?​

これまでの流れ: SharePointトリガーとファイルコンテンツの取得機能。

スキャンされたページは画像です。OCRがテキストレイヤーを重ねるまでは、抽出できるテキストは存在しません。この処理はそのテキストレイヤーを重ねるものであり、既に読み取り可能なPDFファイルはそのまま残すように賢く設計されています。

  1. 追加 PDF - OCRを使用してPDFを編集可能なPDFに変換。
  2. 設定する:
    • ファイルの内容: File Content から ファイルの内容を取得する
    • ファイル名トリガーのファイル名トークン
    • 品質タイプ: Draft
    • OCRは必要な時のみ使用: true
    • 言語: 文書が英語でない場合は空欄のままにしてください
    • 非同期: No

OCRパラメータ​

パラメータここで使用されている値それが制御するもの
ファイルの内容File Content ファイルコンテンツを取得処理対象のPDFバイト数。
ファイル名トリガーファイル名トークンソース名。処理識別に使用されます。
品質タイプDraft認知度向上への取り組み。 Draft 高速かつ高精度でクリーンなスキャンが可能です。 High 質の低いオリジナル作品のために。
OCRは必要な時のみ使用true既にテキストレイヤーを持つファイルはスキップされるため、デジタルネイティブのPDFファイルはそのまま通過します。
言語空白認識エンジンへのヒント。英語の場合は空欄のままにしてください。
非同期No結果をインラインで待機します。 Yes 非常に大きな文書の場合。
PDF4meのOCRアクションパネルを使用してPDFを編集可能なPDFに変換するには、ファイルコンテンツは「ファイルコンテンツを取得」から、ファイル名はトリガーから、品質タイプは「下書き」、OCRは必要なときにのみ有効、言語は空白、非同期はいいえの設定を使用します。

QualityTypeはここではDraftに設定されています。クリーンなスキャンではHighと同等の読みやすさで、しかも処理時間が短縮されます。

ヒント。 これはスローステップで、上記のランニングでは11秒かかりますが、他のすべてでは0.5秒です。 Draftテキストファイルを確認し、移動するのは High 文字が正しく表示されない場合。必要のないドキュメントの品質を上げることは、この流れを遅く感じさせる最も簡単な方法です。


ステップ4:テキストと画像の抽出はどのようにしてテキストを返しますか?​

これまでの流れ: SharePointトリガー、ファイルコンテンツ取得機能、OCR機能を組み合わせたもの。

このアクションはテキストレイヤーを読み取り、配列として返します。 textsOCR出力先を指定してください。「ファイルコンテンツを取得」に戻さないでください。そうしないと、スキャンされたページが空のまま返されます。

  1. 追加 PDF - テキストと画像を抽出。
  2. 設定する:
    • ファイルの内容: File Content から OCRアクション
    • ファイル名トリガーのファイル名トークン
    • テキストを抽出: Yes
    • 画像を抽出する: No

テキストと画像の抽出パラメータ​

パラメータここで使用されている値それが制御するもの
ファイルの内容File Content OCRステップから検索可能なPDF。ここで「ファイルのコンテンツのコピーを取得」を再利用することは、最もよくある間違いです。
ファイル名トリガーファイル名トークン情報源名は、識別のためそのまま記載されています。
テキストを抽出Yes返します texts 配列。
画像を抽出するNo埋め込み画像をスキップします。 Yes 必要な場合にのみ使用してください。そうすることで、応答がはるかに大きくなります。
PDF4meのテキストと画像の抽出アクションパネル。ファイルコンテンツはPDF4me OCRアクションからマッピングされ、ファイル名はSharePointトリガーから取得され、テキストの抽出は「はい」、画像の抽出は「いいえ」に設定されています。

アイコンを見てください。ファイルコンテンツにはOCRから生成されたデータであるため、PDF4meのマークが付いています。ファイル名にはトリガーから生成されたデータであるため、SharePointのマークが付いています。


ステップ5:テキスト配列を1つの文字列に変換するにはどうすればよいですか?​

これまでの流れ: SharePointトリガー、ファイルコンテンツの取得、OCR、テキストと画像の抽出機能。

texts は配列です。ファイルには文字列が必要です。1つ 結合式 両者をつなぐ架け橋となる。

  1. 追加する 作曲する アクション。
  2. で 入力式エディタに切り替えて、以下を貼り付けます。
join(body('PDF_-_Extract_Text_and_Images')?['texts'], decodeUriComponent('%0A'))
  1. クリック アップデート。

の decodeUriComponent('%0A') Power Automate の式でリテラルの改行を記述するには、このように記述します。エスケープシーケンスは存在しないため、これが慣用表現となります。

構成設定​

Power Automate の Compose アクションで、式エディターを開き、PDF の Extract Text と Images のテキスト配列を decodeUriComponent のパーセント ゼロ A を区切り文字として結合した様子を示します。

body() 内のアクション名では、スペースとハイフンの代わりにアンダースコアが使用されています。アクション名を変更すると、この式は動作しなくなります。

これは、出力が読みやすいかどうかを決定するたった1行です。 Composeをスキップして配列を直接Create fileに渡すと、テキストファイルにはドキュメントではなくJSONの括弧とエスケープされた引用符が含まれます。


ステップ6:SharePointでテキストを.txtファイルとして保存するにはどうすればよいですか?​

これまでの流れ: SharePointトリガー、ファイルコンテンツの取得、OCR、テキストと画像の抽出、および作成。

最後のステップでは、結合された文字列を別のライブラリに書き込みます。

  1. 追加 SharePoint > ファイルを作成する。
  2. 設定する:
    • サイトアドレス: トリガーと同じサイト
    • フォルダパス: /Shared Documents/RagText
    • ファイル名トリガーのファイル名トークンに続いて、リテラルテキストが続きます。 .txt
    • ファイルの内容: その 作曲する 出力トークン

SharePoint ファイル構成の作成​

SharePoint のファイル作成アクションで、サイトアドレスは PDF4me Sharepoints、フォルダーパスは /Shared Documents/RagText、ファイル名はトリガーファイル名トークンに .txt を追加したもの、ファイルコンテンツは Compose 出力トークンに設定されます。

ファイルコンテンツとは、PDF4meからの出力ではなく、紫色のデータ操作アイコンが付いたComposeの出力のことです。この時点で既にテキストは組み立てられています。

ヒント。 トリガーのファイル名トークンには既に .pdf 拡張子を追加する .txt 生産する contract.pdf.txtこれは、上記の出力フォルダに示されているものです。これは無害で、ソースへのリンクが明確になります。もしあなたが contract.txtトークンをラップします 交換する() そして交換する .pdf のために .txt 追加する代わりに。


フローを実行して検証する​

  1. 保存 右上の流れ。
  2. アップロード contract-sample.pdf 入力フォルダに保存されます。トリガーはポーリングを行うため、しばらくお待ちください。
  3. 流れを開く 実行履歴 6つの操作すべてに緑色のチェックマークが付いていることを確認してください。OCR処理は時間がかかります。
  4. 開ける /Shared Documents/RagText. A .txt ファイルはそこにあるはずです。それを開いて検索してください。 PDF4ME-CLEAN-TEST-2026そのマーカーが存在する場合、OCRと抽出は両方ともエンドツーエンドで正常に動作したことになります。

実際に何を作ったのですか? ドキュメント取り込みパイプライン。ライブラリに格納されるすべてのPDFは自動的にプレーンテキストに変換されます。これは、SharePoint検索、ベクターインデックス、検索機能拡張チャットボット、プレーンテキストの全文grepなど、大規模なドキュメント読み取りを行うあらゆるものにとって、地味ながらも必須の前提条件です。フロー内のテキストのみが必要で、ディスク上には保存しない場合は、より短い Power AutomateでPDFからテキストを抽出する チュートリアルでは、Dropbox を使ったその方法を解説しています。


再構築せずに追加できる一般的なバリエーション​

ダウンロードする前にフィルターをかける
トリガーは最初にメタデータを返すため、「ファイルコンテンツを取得」を実行する前に、ファイル名または列に条件を追加できます。そうすれば、PDF以外のファイルのアップロードにはコストがかかりません。
検索可能なPDFも保存してください。
OCR処理の出力結果を保存する2つ目のファイル作成機能を追加してください。1回の実行で、機械向けのテキストコピーと人間向けの検索可能なPDFファイルの両方が生成されます。
プレーンテキストではなくJSONを記述してください
Compose式を変更してファイル名、日付、テキストを含むオブジェクトを作成し、保存します。 .jsonほとんどのベクターストアは、コンテンツに加えてメタデータも提供することを好みます。
クラウドフローと代替案の比較
Power Automate DesktopおよびAI Builderとの違いについては、以下の比較表をご覧ください。
クラウドフローと代替案の比較無人で稼働するスキャンしたPDFファイルを処理しますコネクタ層
Power Automateクラウドフロー内のPDF4meはいはい、OCRがフローに組み込まれています標準
Power Automate Desktop PDF アクション機械の電源が入っている間のみ基本アクションにはOCR機能はありません標準仕様に加えて、機械も付属
AI Builderフォーム処理はいはいプレミアム、クレジットメーター

よくある質問​

Power AutomateはPDFからテキストを抽出できますか?​

クラウドフローでは単独では利用できません。Microsoft のドキュメントにある PDF アクションは Power Automate Desktop のものであり、クラウドフローでは利用できません。そのため、この質問に関するコミュニティ スレッドが多数未解決のままになっています。PDF4me コネクタを追加すると、クラウドフローに真の機能が追加されます。 テキストと画像を抽出 ドキュメントのテキストを配列として返すアクション。

抽出処理全体は1つの動作で完了します。前後の5つの手順は、単にファイルをインプットし、テキストをアウトプットするだけです。

Power Automateを使用してPDFからテキストを抽出する方法は?​

新しいファイルでトリガーし、そのバイトをフェッチします ファイルの内容を取得する、 走る OCRを使用してPDFを編集可能なPDFに変換する スキャンされたページにはテキストレイヤーが付けられ、次に テキストと画像を抽出 テキスト抽出設定 Yes. それは以下を返します texts 配列。配列ではなく文章にしたい場合は、Compose 式で結合してください。

抽出ステップは、ダウンロードしたファイルではなく、OCR処理の出力先を指定してください。ダウンロードしたファイルを再利用すると、スキャンした文書が空になってしまう原因となります。

Power AutomateはOCRを実行できますか?​

クラウドフローにはネイティブのOCRアクションはありません。AI Builderはプレミアムなクレジット課金ライセンスでOCR機能を提供しており、Power Automate Desktopはマシンに紐づいた独自のOCRエンジンを備えています。PDF4me OCRを使用してPDFを編集可能なPDFに変換する このアクションは、マシンを介さずに標準ティアのクラウドフローで実行されます。

その OCRは必要な時のみ使用 設定は知っておく価値があります。 trueこの機能では各ファイルを検査し、テキストレイヤーが既に存在する場合はOCRをスキップするため、混合ライブラリではすべてのドキュメントに対してコストが発生しません。

Power AutomateでPDFからテキストを抽出する機能が動作しないのはなぜですか?​

ほぼすべてのケースで、以下の3つの原因が考えられます。まず、文書がスキャン画像であり、OCR処理が行われていないため、そもそもテキストが存在しない。次に、抽出処理でOCR出力ではなくダウンロードしたファイルを読み込んでいるため、スキャン画像では同じように空の結果となる。最後に、テキスト自体は正しく取得できたものの、生の配列としてファイルに書き込まれたため、文書ではなくJSONのように見えてしまう。

実行履歴を開き、「テキストと画像の抽出」の出力を直接確認してください。 texts コンテンツはそこにありますが、問題はComposeまたはCreate fileの下流にあります。

PDFファイルを無料でテキストファイルに変換するにはどうすればいいですか?​

単一の文書であれば、どのオンラインコンバーターでも対応できます。このワークフローを構築する理由は、処理量と反復性です。フォルダに格納されるすべてのファイルに対して自動で実行され、スキャン処理も行い、キーボード操作も不要です。PDF4meの無料プランでも、毎月相当数の文書を処理できます。また、ここで使用するコネクタはすべて標準プランなので、Power Automateのプレミアムライセンスは必要ありません。


トラブルシューティング​

.txtファイルは作成されますが、中身は空です。

「テキストと画像の抽出」機能が間違ったファイルを読み込んでいます。ファイルコンテンツは、PDF4meアイコンが付いたOCRアクションから取得する必要があり、「ファイルコンテンツの取得」から取得してはいけません。デジタルネイティブのPDFではどちらの方法でも正常に動作するため、このバグは通常、実際のスキャンデータが届いた後にのみ発生します。

出力はテキストではなく ["line one","line two"] のようになります。

ファイルの作成は生データを受信しています texts 配列。そのファイルコンテンツは、Compose の出力トークンである必要があります。Compose が存在するにもかかわらず配列が返される場合は、結合式に配列と区切り文字の両方の引数が含まれていることを確認してください。

ファイルコンテンツの取得に失敗し、「ファイルが見つかりません」というエラーが発生します。

ファイル識別子が間違ったトークンにマッピングされています。トリガーの 識別子ファイル名、パス、アイテムIDではありません。これらは動的コンテンツリストでは同じように見えますが、実際には異なります。

流れが繰り返し発生する

出力フォルダはトリガーが監視するフォルダ内に配置されるため、新しいテキストファイルが作成されると、それぞれ別の実行が開始されます。RagInputとRagTextは、ネストされた関係ではなく、兄弟関係にあるように分けて配置してください。


次のステップ​

同じ6つのステップ(フォルダの監視、データの取得、OCR処理、データの抽出、データの統合、データの保存)によって、あらゆるドキュメントライブラリを機械可読なコーパスに変換できます。