---
title: Copilot Studio でファイル形式の取り扱い方法
url: "https://www.geekfujiwara.com/tech/powerplatform/7828/"
author: ギークフジワラ
published: "2026-01-19T19:56:22+00:00"
updated: "2026-10-26T12:13:49+00:00"
categories: [Power Platform]
description: "Copilot Studio で PDF や画像ファイルを扱うケースは、領収書 OCR、契約書解析、申請書デジタル化など、多くの業務フローで共通する基本スキルです。特に、トピックで受け取ったファイルを Power Automate に渡して…"
---

# Copilot Studio でファイル形式の取り扱い方法

Copilot Studio で PDF や画像ファイルを扱うケースは、領収書 OCR、契約書解析、申請書デジタル化など、多くの業務フローで共通する基本スキルです。  
特に、トピックで受け取ったファイルを Power Automate に渡して処理したい場合、**ファイルの扱い方と正しいマッピング方法を理解しておくことが重要**です。

**この記事で分かること**

- Copilot Studio のトピックでファイルを受け取る 2 つの方法
- Power Automate に渡すためのレコード（`contentBytes`）の組み立て方
- AI Builder で PDF・画像を文字にする（OCR）流れ

## 流れ

:::raw
<!-- wp:sgb/timeline -->
<div class="wp-block-sgb-timeline"><div class="sgb-tl"><!-- wp:sgb/timeline-item {"itemTitle":"Copilot Studio でファイルを受け取る"} -->
<div class="wp-block-sgb-timeline-item sgb-tl-item"><div class="sgb-tl-item__label--default"></div><div class="sgb-tl-item__title">Copilot Studio でファイルを受け取る</div><div class="sgb-tl-item__main"><!-- wp:paragraph -->
<p>Copilot Studio のトピックでは、質問ノードまたは Teams 添付を通じて PDF や画像を受け取ることができる。<br>受け取ったファイルは <code>Name / ContentType / Content(Base64)</code> を持つレコードとして扱われる。</p>
<!-- /wp:paragraph --></div><div class="sgb-tl-item__marker main-bdr main-bc"></div></div>
<!-- /wp:sgb/timeline-item -->

<!-- wp:sgb/timeline-item {"itemTitle":"Power Automate に渡せる Record 型へ変換する"} -->
<div class="wp-block-sgb-timeline-item sgb-tl-item"><div class="sgb-tl-item__label--default"></div><div class="sgb-tl-item__title">Power Automate に渡せる Record 型へ変換する</div><div class="sgb-tl-item__main"><!-- wp:paragraph -->
<p>Copilot Studio のトピック変数は <code>Content</code> というキーを持っているが、Power Automate が受け取りたいのは <code>contentBytes</code>。<br>そのため、Power Fx で <code>{ contentBytes, name }</code> のレコードを再構築する必要がある。</p>
<!-- /wp:paragraph --></div><div class="sgb-tl-item__marker main-bdr main-bc"></div></div>
<!-- /wp:sgb/timeline-item -->

<!-- wp:sgb/timeline-item {"itemTitle":"Power Automate で OCR（テキスト化）を行う"} -->
<div class="wp-block-sgb-timeline-item sgb-tl-item"><div class="sgb-tl-item__label--default"></div><div class="sgb-tl-item__title">Power Automate で OCR（テキスト化）を行う</div><div class="sgb-tl-item__main"><!-- wp:paragraph -->
<p>Power Automate 側では、渡された <code>contentBytes</code> を AI Builder に接続し、PDF や画像の文字を読み取る。<br>テキスト化後は抽出、整形、保存など自由に処理できる。</p>
<!-- /wp:paragraph --></div><div class="sgb-tl-item__marker main-bdr main-bc"></div></div>
<!-- /wp:sgb/timeline-item --></div></div>
<!-- /wp:sgb/timeline -->
:::

## Copilot Studio でファイルを受け取る

Copilot Studio では、次の 2 つの方法でユーザーがアップロードしたファイルを取得できます。

### ① 質問ノードで受け取る方法

![](https://www.geekfujiwara.com/wp-content/uploads/2026/01/image-28.png)

{.check}
- 質問ノードの Identify を「File」に設定します。
- 「Include file metadata」をオンにします。
- これにより、変数に次のようなレコードが格納されます。

![](https://www.geekfujiwara.com/wp-content/uploads/2026/01/image-20.png)

:::raw
<!-- wp:kevinbatdorf/code-block-pro {"code":"{\n  Name: \u0022receipt.pdf\u0022,\n  ContentType: \u0022application/pdf\u0022,\n  Content: \u0022Base64データ\u0022\n}","codeHTML":"\u003cpre class=\u0022shiki nord\u0022 style=\u0022background-color: #2e3440ff\u0022 tabindex=\u00220\u0022\u003e\u003ccode\u003e\u003cspan class=\u0022line\u0022\u003e\u003cspan style=\u0022color: #ECEFF4\u0022\u003e{\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\u0022line\u0022\u003e\u003cspan style=\u0022color: #D8DEE9FF\u0022\u003e  \u003c/span\u003e\u003cspan style=\u0022color: #D8DEE9\u0022\u003eName\u003c/span\u003e\u003cspan style=\u0022color: #ECEFF4\u0022\u003e:\u003c/span\u003e\u003cspan style=\u0022color: #D8DEE9FF\u0022\u003e \u003c/span\u003e\u003cspan style=\u0022color: #ECEFF4\u0022\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\u0022color: #A3BE8C\u0022\u003ereceipt.pdf\u003c/span\u003e\u003cspan style=\u0022color: #ECEFF4\u0022\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\u0022color: #ECEFF4\u0022\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\u0022line\u0022\u003e\u003cspan style=\u0022color: #D8DEE9FF\u0022\u003e  \u003c/span\u003e\u003cspan style=\u0022color: #D8DEE9\u0022\u003eContentType\u003c/span\u003e\u003cspan style=\u0022color: #ECEFF4\u0022\u003e:\u003c/span\u003e\u003cspan style=\u0022color: #D8DEE9FF\u0022\u003e \u003c/span\u003e\u003cspan style=\u0022color: #ECEFF4\u0022\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\u0022color: #A3BE8C\u0022\u003eapplication/pdf\u003c/span\u003e\u003cspan style=\u0022color: #ECEFF4\u0022\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\u0022color: #ECEFF4\u0022\u003e,\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\u0022line\u0022\u003e\u003cspan style=\u0022color: #D8DEE9FF\u0022\u003e  \u003c/span\u003e\u003cspan style=\u0022color: #D8DEE9\u0022\u003eContent\u003c/span\u003e\u003cspan style=\u0022color: #ECEFF4\u0022\u003e:\u003c/span\u003e\u003cspan style=\u0022color: #D8DEE9FF\u0022\u003e \u003c/span\u003e\u003cspan style=\u0022color: #ECEFF4\u0022\u003e\u0026quot;\u003c/span\u003e\u003cspan style=\u0022color: #A3BE8C\u0022\u003eBase64データ\u003c/span\u003e\u003cspan style=\u0022color: #ECEFF4\u0022\u003e\u0026quot;\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\u0022line\u0022\u003e\u003cspan style=\u0022color: #ECEFF4\u0022\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e","language":"json","theme":"nord","bgColor":"#2e3440ff","textColor":"#d8dee9ff","fontSize":".875rem","fontFamily":"Code-Pro-JetBrains-Mono","lineHeight":"1.25rem","clampFonts":false,"lineNumbers":false,"headerType":"pillString","disablePadding":false,"footerType":"none","enableMaxHeight":false,"seeMoreType":"","seeMoreString":"","seeMoreAfterLine":"","seeMoreTransition":false,"seeMoreCollapse":false,"seeMoreCollapseString":"","highlightingHover":false,"lineHighlightColor":"rgba(201, 218, 248, 0.2)","copyButton":true,"copyButtonType":"heroicons","copyButtonUseTextarea":true,"useTabs":false} -->
<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#2e3440"><span style="background:#c8d0e0;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#2e3440">JSON</span></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>{
  Name: "receipt.pdf",
  ContentType: "application/pdf",
  Content: "Base64データ"
}</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #D8DEE9">Name</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">receipt.pdf</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #D8DEE9">ContentType</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">application/pdf</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #D8DEE9">Content</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Base64データ</span><span style="color: #ECEFF4">&quot;</span></span>
<span class="line"><span style="color: #ECEFF4">}</span></span></code></pre></div>
<!-- /wp:kevinbatdorf/code-block-pro -->
:::

![](https://www.geekfujiwara.com/wp-content/uploads/2026/01/image-21.png)

![](https://www.geekfujiwara.com/wp-content/uploads/2026/01/image-22.png)

### ② Teams などの添付ファイルを自動取得する方法

ユーザーが添付の形式でメッセージにファイルを添付している場合は、次の Power Fx で先頭の添付を取得できます。

:::raw
<!-- wp:kevinbatdorf/code-block-pro {"code":"First(System.Activity.Attachments)","codeHTML":"\u003cpre class=\u0022shiki nord\u0022 style=\u0022background-color: #2e3440ff\u0022 tabindex=\u00220\u0022\u003e\u003ccode\u003e\u003cspan class=\u0022line\u0022\u003e\u003cspan style=\u0022color: #D8DEE9FF\u0022\u003eFirst(System.Activity.Attachments)\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e","language":"pascal","theme":"nord","bgColor":"#2e3440ff","textColor":"#d8dee9ff","fontSize":".875rem","fontFamily":"Code-Pro-JetBrains-Mono","lineHeight":"1.25rem","clampFonts":false,"lineNumbers":false,"headerType":"headlightsMutedAlt","disablePadding":false,"footerType":"none","enableMaxHeight":false,"seeMoreType":"","seeMoreString":"","seeMoreAfterLine":"","seeMoreTransition":false,"seeMoreCollapse":false,"seeMoreCollapseString":"","highlightingHover":false,"lineHighlightColor":"rgba(201, 218, 248, 0.2)","copyButton":true,"copyButtonType":"heroicons","copyButtonUseTextarea":true,"useTabs":false} -->
<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#39404f"><svg xmlns="http://www.w3.org/2000/svg" width="62" height="20" viewBox="0 0 62 20"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="8" cy="8" r="8" fill="#2e3440ff" stroke="#2e3440ff" stroke-width=".5"></circle><circle cx="30" cy="8" r="8" fill="#2e3440ff" stroke="#2e3440ff" stroke-width=".5"></circle><circle cx="52" cy="8" r="8" fill="#2e3440ff" stroke="#2e3440ff" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>First(System.Activity.Attachments)</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9FF">First(System.Activity.Attachments)</span></span></code></pre></div>
<!-- /wp:kevinbatdorf/code-block-pro -->
:::

どちらの方法でも、**`Content` は Base64 のまま保持**されます。このままでは Power Automate が期待する形式ではないため、次の Step で変換します。

## Power Automate に渡すための Record を組み立てます

Copilot Studio のファイル変数は `Content` というキーで Base64 を持っています。  
一方で、Power Automate 側は **`contentBytes`** というキー名を前提にファイルを受け取ります。  
そのため、トピックのアクションノード側で **Power Fx** によってレコードを組み直します。

:::raw
<!-- wp:kevinbatdorf/code-block-pro {"code":"{ \n  contentBytes: Topic.変数名.Content, \n  name: Topic.変数名.Name \n}","codeHTML":"\u003cpre class=\u0022shiki nord\u0022 style=\u0022background-color: #2e3440ff\u0022 tabindex=\u00220\u0022\u003e\u003ccode\u003e\u003cspan class=\u0022line\u0022\u003e\u003cspan style=\u0022color: #ECEFF4\u0022\u003e{\u003c/span\u003e\u003cspan style=\u0022color: #D8DEE9FF\u0022\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\u0022line\u0022\u003e\u003cspan style=\u0022color: #D8DEE9FF\u0022\u003e  \u003c/span\u003e\u003cspan style=\u0022color: #D8DEE9\u0022\u003econtentBytes\u003c/span\u003e\u003cspan style=\u0022color: #ECEFF4\u0022\u003e:\u003c/span\u003e\u003cspan style=\u0022color: #D8DEE9FF\u0022\u003e \u003c/span\u003e\u003cspan style=\u0022color: #D8DEE9\u0022\u003eTopic.変数名.Content\u003c/span\u003e\u003cspan style=\u0022color: #ECEFF4\u0022\u003e,\u003c/span\u003e\u003cspan style=\u0022color: #D8DEE9FF\u0022\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\u0022line\u0022\u003e\u003cspan style=\u0022color: #D8DEE9FF\u0022\u003e  \u003c/span\u003e\u003cspan style=\u0022color: #D8DEE9\u0022\u003ename\u003c/span\u003e\u003cspan style=\u0022color: #ECEFF4\u0022\u003e:\u003c/span\u003e\u003cspan style=\u0022color: #D8DEE9FF\u0022\u003e \u003c/span\u003e\u003cspan style=\u0022color: #D8DEE9\u0022\u003eTopic.変数名.Name\u003c/span\u003e\u003cspan style=\u0022color: #D8DEE9FF\u0022\u003e \u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\u0022line\u0022\u003e\u003cspan style=\u0022color: #ECEFF4\u0022\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e","language":"json","theme":"nord","bgColor":"#2e3440ff","textColor":"#d8dee9ff","fontSize":".875rem","fontFamily":"Code-Pro-JetBrains-Mono","lineHeight":"1.25rem","clampFonts":false,"lineNumbers":false,"headerType":"pillString","disablePadding":false,"footerType":"none","enableMaxHeight":false,"seeMoreType":"","seeMoreString":"","seeMoreAfterLine":"","seeMoreTransition":false,"seeMoreCollapse":false,"seeMoreCollapseString":"","highlightingHover":false,"lineHighlightColor":"rgba(201, 218, 248, 0.2)","copyButton":true,"copyButtonType":"heroicons","copyButtonUseTextarea":true,"useTabs":false} -->
<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#2e3440"><span style="background:#c8d0e0;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#2e3440">JSON</span></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>{ 
  contentBytes: Topic.変数名.Content, 
  name: Topic.変数名.Name 
}</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #ECEFF4">{</span><span style="color: #D8DEE9FF"> </span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #D8DEE9">contentBytes</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">Topic.変数名.Content</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span></span>
<span class="line"><span style="color: #D8DEE9FF">  </span><span style="color: #D8DEE9">name</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">Topic.変数名.Name</span><span style="color: #D8DEE9FF"> </span></span>
<span class="line"><span style="color: #ECEFF4">}</span></span></code></pre></div>
<!-- /wp:kevinbatdorf/code-block-pro -->
:::

Power Automate のフローには、Copilot Studio からの **Record 型入力** を用意しておきます。  
この入力に `contentBytes` と `name` が届きますので、AI Builder の OCR へつなぎます。

テキスト化後は、日付・金額の抽出や、Dataverse / SharePoint 保存、Teams 通知、承認ワークフローなどに展開できます。

使用するアクション: **Recognize text in an image or a PDF document**

ファイル入力欄に **`contentBytes`** を指定します。

OCR の結果は「全文」「ページ単位」「行単位」で取得できます。

![](https://www.geekfujiwara.com/wp-content/uploads/2026/01/image-26.png)

## この仕組みを押さえるとできること

一度「`Content` → `contentBytes` の正しいマッピング」を理解してしまえば、さまざまな自動化に応用できます。

- 経費精算: 領収書の読取 → 金額・日付の抽出 → 自動申請
- 契約書レビュー: PDF 受け取り → テキスト抽出 → 要点サマリー
- 人事: 応募書類受け取り → OCR → データベース登録
- 文書管理: ファイル受け取り → SharePoint 登録 → Chat で要約提示

基礎はシンプルですが、効果は大きいです。まずはこの 3 ステップ（受け取り → 変換 → OCR）を確実に押さえることをおすすめします。

## 次に読む

Excel のデータをエージェントで使う方法と、OCR を支える AI Builder の基本もあわせてどうぞ。

https://www.geekfujiwara.com/tech/powerplatform/7722/

https://www.geekfujiwara.com/tech/powerplatform/6806/

[udemy_coupon_box course="copilot-studio-one"]
