在 Power Automate 中将 PDF 转换为文本文件:使用 PDF4me 将扫描的合同转换为可搜索的 SharePoint 语料库

PDF4me 提取文本和图像 这是一个 Power Automate 操作,它将 PDF 的文本层作为数组返回。结合上游的 OCR 和下游的 Compose 连接,此流程可将 SharePoint 库中的每个 PDF 转换为匹配的文本。 .txt 文件已准备好进行人工智能搜索。
搜索如何操作,第一个结果是微软自己的 PDF 操作参考,其中描述了 Power Automate 桌面 操作。它们并不存在于云流中。正是因为这个细节,接下来的两个结果分别是 Reddit 帖子和 Power Platform 社区帖子,人们都在问同样的问题,却没有得到明确的答案。这个流就是直接的答案,它完全在云端使用标准层连接器运行。
PDF 文件被添加到 SharePoint 文档库中。触发器报告新项目,“获取文件内容”工具提取其字节,PDF4me 仅在文件需要时运行 OCR 功能,然后将文本提取为数组。一行“组合表达式”将该数组连接成一个字符串,SharePoint 将结果以纯文本文件的形式写入下一个文件。整个过程仅需六个操作,无需高级连接器,大约十二秒即可完成。
基于原因的问答
为什么不直接在流程中使用文本,而是要写入 .txt 文件? 流程运行中的字符串仅在该流程运行期间有效。库中的文件是持久的、可索引的,并且之后任何指向它的对象(无论是 SharePoint 搜索、矢量数据库还是提取上下文的聊天机器人)都可以读取它。
为什么获取一个文件需要两个步骤? 仅获取属性的触发器特意设计得非常轻量级。它会报告某个项目已出现,并提供其元数据(包括一个标识符),但不包含任何字节。获取文件内容触发器则会将该标识符与文档本身进行交换。将两者分开可以保持触发器的快速响应,并允许您在下载任何内容之前根据元数据进行筛选。
既然大多数 PDF 文件本身就包含文本,为什么还要进行 OCR 识别呢? 因为单凭肉眼无法分辨。扫描的合同和原生电子合同在文件夹列表中根本无法区分。OCR识别操作的 仅在需要时进行OCR识别 该设置会检查每个文件,并跳过已经包含文本图层的文件,因此您只需为它购买的东西付费。
为什么需要“生成”步骤? 提取文本和图像返回 texts 通常情况下,数据以数组形式存储,每页一个条目。直接将数组写入文件会导致 JSON 格式的括号和转义引号。Compose 会将各个条目合并成清晰的文本,然后再写入磁盘。
您将获得
输入: 任何拖放到 SharePoint 文档库中的 PDF 文件,无论是扫描件还是原生数字文件,都不需要命名规则。 输出: 第二个库中每个 PDF 文件对应一个纯文本文件,其中包含该文档的完整可读内容。

RagInput。将 PDF 文件拖放到此处,流程即可开始。

RagText。每个 PDF 文件对应一个纯文本文件,可直接进行索引。
以下是示例合同的输出结果,与写入磁盘的内容完全一致:
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 操作时进行连接。
- 一个包含两个文件夹的 SharePoint 网站一个用于输入 PDF 文件,一个用于输出文本文件。在构建之前创建这两个文件夹,以便文件夹选择器有指向的目标位置。
- 测试 PDF。 合同样本.pdf一份简短的服务协议,其中包含一个标记行,您可以使用 grep 命令查找该标记行。
先拿到样品。 流程保存后,将 PDF 文件上传到输入文件夹,然后将输出文件夹中的内容与预期的文本文件进行比较。
流程概览
- 创建文件时(仅限属性) (SharePoint 触发器)作用域
/Shared Documents/RagInput。 - 获取文件内容 使用触发器
Identifier。 - PDF - 使用 OCR 将 PDF 转换为可编辑 PDF 质量
Draft仅在需要时进行OCR识别true。 - PDF - 提取文本和图像 提取文本
Yes提取图像No。 - 撰写 运行
join()归还texts大批。 - 创建文件 (SharePoint)写作
.txt进入/Shared Documents/RagText。
完整流程概述

OCR是唯一一个耗时较长的项目,用时11秒。其他五个项目均在半秒内完成。
步骤 1:如何监视 SharePoint 库中的新 PDF 文件?
目前为止的流程: 目前还没有什么,这是触发点。
使用 创建文件时(仅限属性)它会在新项目出现时触发并返回其元数据。请将其范围限定在一个文件夹内,因为库级监视会在任何人在该库中的任何位置上传任何文件时触发。
- 创建一个 自动化云流 并挑选 创建文件时(仅限属性)。
- 配置:
- 网站地址:
https://ynoox1.sharepoint.com/sites/PDF4meSharepoints - 库名称: 挑选 文件 从下拉菜单中
- 网站地址:
- 打开 高级参数, 添加 文件夹并将其设置为
/Shared Documents/RagInput。
SharePoint 触发器配置

“库名称”指的是库本身,即“文档”。其下方的“文件夹”参数用于将触发器范围缩小到库内的特定文件夹。
提示。 你还会找到一个名为“触发器”的 当在文件夹中创建文件时该方法直接返回文件字节,省去了后续操作。它已被标记为已弃用,因此对于任何需要持续运行的操作,请优先使用此处所示的仅属性组合。
步骤 2:为什么需要在触发后获取文件内容?
目前为止的流程: SharePoint触发器。
仅传递属性的触发器传递的是元数据,而不是文档本身。获取文件内容的触发器会交换这些元数据。 Identifier PDF4me 实际需要的字节数。
- 添加 SharePoint > 获取文件内容。
- 配置:
- 网站地址与触发点相同的站点
- 文件标识符:
Identifier从触发器
- 打开 高级参数 并设置 推断内容类型 到
Yes。
获取文件内容配置

推断内容类型为“是”会将实际的 PDF 字节传递给下一个操作,而不是通用的数据块。
标识符是连接这两个步骤的连接点。 使用触发器 标识符 是字段,而不是文件名或路径。文件名在不同文件夹之间会重复出现,并且会在有人重命名文档时发生变化。而标识符则不会。
步骤 3:为什么要先运行 OCR 再提取文本?
目前为止的流程: SharePoint 触发器 + 获取文件内容。
扫描页面本质上是一张图片。在OCR技术为其添加文本图层之前,页面本身并不包含任何文本。此操作正是执行此操作,并且它足够智能,不会对已可读的PDF文件进行任何修改。
- 添加 PDF - 使用 OCR 将 PDF 转换为可编辑 PDF。
- 配置:
- 文件内容:
File Content从 获取文件内容 - 文件名触发器的文件名标记
- 质量类型:
Draft - 仅在需要时进行OCR识别:
true - 语言除非您的文件不是英文的,否则请留空。
- 是否异步:
No
- 文件内容:
OCR参数
| 范围 | 此处使用的值 | 它控制着什么 |
|---|---|---|
| 文件内容 | File Content 从获取文件内容 | 待处理的PDF字节。 |
| 文件名 | 触发文件名标记 | 源名称,用于处理标识。 |
| 质量类型 | Draft | 表彰努力。 Draft 速度快,精度高,扫描效果清晰。移至 High 原件质量差。 |
| 仅在需要时进行OCR识别 | true | 跳过已经包含文本层的文件,因此原生数字 PDF 文件可以直接通过。 |
| 语言 | 空白的 | 识别引擎提示:留空则表示使用英语。 |
| 是否异步 | No | 等待在线结果。切换到 Yes 适用于非常大的文件。 |

此处质量类型设置为“草稿”。在干净的扫描件上,它的读取效果与“高”一样好,而且耗时更短。
提示。 这是慢步,上面跑步的慢步用时11秒,而其他所有动作都只需半秒。开始 Draft检查文本文件,然后仅移动到 High 如果字符返回错误。提高原本不需要提高质量的文档的质量,是让流程变得缓慢的最简单方法。
步骤 4:提取文本和图像如何返回文本?
目前为止的流程: SharePoint触发器+获取文件内容+OCR。
此操作读取文本图层并将其作为名为“文本”的数组返回。 texts. 将其指向 OCR 输出,而不是指向“获取文件内容”,否则扫描的页面将为空。
- 添加 PDF - 提取文本和图像。
- 配置:
- 文件内容:
File Content从 OCR行动 - 文件名触发器的文件名标记
- 提取文本:
Yes - 提取图像:
No
- 文件内容:
提取文本和图像参数
| 范围 | 此处使用的值 | 它控制着什么 |
|---|---|---|
| 文件内容 | File Content 从 OCR 步骤 | 可搜索的PDF文件。重复使用“获取文件内容”的副本是最常见的错误。 |
| 文件名 | 触发文件名标记 | 来源名称,用于识别。 |
| 提取文本 | Yes | 返回 texts 大批。 |
| 提取图像 | No | 跳过嵌入式图像。设置 Yes 只有在需要的时候才使用,这样可以使响应规模更大。 |

请查看图标。文件内容带有 PDF4me 标记,因为它来自 OCR 识别。文件名带有 SharePoint 标记,因为它来自触发器。
步骤 5:如何将文本数组转换为一个字符串?
目前为止的流程: SharePoint触发器+获取文件内容+OCR+提取文本和图像。
texts 是一个数组。文件需要字符串。一个 连接表达式 连接两者。
- 添加一个 撰写 行动。
- 在 输入切换到表达式编辑器并粘贴:
join(body('PDF_-_Extract_Text_and_Images')?['texts'], decodeUriComponent('%0A'))
- 点击 更新。
这 decodeUriComponent('%0A') 这是在 Power Automate 表达式中编写字面换行符的方法。它没有转义序列,所以这是惯用写法。
组合配置

`body()` 函数内部的动作名称使用下划线代替空格和连字符。如果重命名该动作,此表达式将失效。
这一行代码决定了输出结果是否可读。 跳过 Compose 并直接将数组传递给 Create file,文本文件将包含 JSON 括号和转义引号,而不是文档本身。
步骤 6:如何在 SharePoint 中将文本另存为 .txt 文件?
目前为止的流程: SharePoint 触发器 + 获取文件内容 + OCR + 提取文本和图像 + 撰写。
最后一步是将连接后的字符串写入第二个库。
- 添加 SharePoint > 创建文件。
- 配置:
- 网站地址与触发器位于同一位置
- 文件夹路径:
/Shared Documents/RagText - 文件名触发器的文件名标记后跟字面文本
.txt - 文件内容: 这 撰写 输出令牌
SharePoint 创建文件配置

文件内容是“撰写”输出结果,带有紫色数据操作图标,并非来自 PDF4me。此时文本已完成组装。
提示。 触发器的文件名标记已经包含 .pdf 扩展名,因此附加 .txt 产 contract.pdf.txt也就是上面输出文件夹的内容。这无害,而且能清晰地显示指向源文件的链接。如果您更希望…… contract.txt,将令牌包装在 代替() 交换 .pdf 为了 .txt 而不是追加。
运行流程并验证
- 节省 右上角的流水。
- 上传
contract-sample.pdf将数据导入输入文件夹。触发轮询,请稍等片刻。 - 打开流程 运行历史记录 检查所有六项操作是否都显示绿色勾号。OCR识别速度会比较慢。
- 打开
/Shared Documents/RagText. A.txt文件应该在那里。打开它并搜索。PDF4ME-CLEAN-TEST-2026如果存在该标记,则 OCR 和提取过程均能顺利完成。
你实际建造了什么? 文档导入管道。所有进入库中的 PDF 文件都会自动转换为纯文本,这是大规模读取文档的必要前提,例如 SharePoint 搜索、矢量索引、检索增强型聊天机器人或纯文本 grep。如果您只需要流程内部的文本,而无需将其保存到磁盘,则更短的路径更为合适。 在 Power Automate 中从 PDF 中提取文本 本教程涵盖了使用 Dropbox 的相关内容。
无需重建即可添加的常见变体
.json大多数矢量图库都倾向于将元数据与内容一起存储。| 云流与其他方案的比较 | 无人值守运行 | 处理扫描的PDF文件 | 连接器层 |
|---|---|---|---|
| Power Automate 云流中的 PDF4me | 是的 | 是的,OCR已集成到流程中。 | 标准 |
| Power Automate Desktop PDF 操作 | 只有在机器开启时 | 基本操作中没有 OCR | 标准配置,外加一台机器 |
| AI Builder 表单处理 | 是的 | 是的 | 高级,按信用额度计费 |
常见问题
Power Automate 能否从 PDF 文件中提取文本?
在云流中,PDF 操作本身并不可用。微软文档中的 PDF 操作属于 Power Automate Desktop,在云流中不可用,这也是为什么社区中关于此问题的许多讨论帖都未得到解决的原因。添加 PDF4me 连接器才能真正为云流提供 PDF 操作功能。 提取文本和图像 返回文档文本数组的操作。
整个提取过程是一个单独的操作。前面的五个步骤只是将文件导入和文本导出。
如何使用 Power Automate 从 PDF 中提取文本?
触发新文件,并获取其字节 获取文件内容, 跑步 使用 OCR 将 PDF 转换为可编辑 PDF。 因此,扫描的页面会添加一个文本层,然后运行 提取文本和图像 将“提取文本”设置为 Yes返回一个 texts 数组。如果需要的是散文而不是数组,请使用组合表达式将其连接起来。
将提取步骤指向 OCR 操作的输出文件,而不是您下载的文件。重复使用下载的文件副本是导致扫描文档结果为空的原因。
Power Automate 能进行 OCR 吗?
云端流程本身不具备原生 OCR 功能。AI Builder 提供高级版 OCR 功能,但需付费订阅;Power Automate Desktop 则拥有与机器绑定的独立 OCR 引擎。PDF4me 使用 OCR 将 PDF 转换为可编辑 PDF。 该操作在标准层云流中运行,不涉及任何机器。
它是 仅在需要时进行OCR识别 这项设置值得了解。设置为 true它会检查每个文件,如果文本层已存在,则跳过 OCR,这样混合库就不会为每个文档支付费用。
为什么 Power Automate 从 PDF 中提取文本的功能不起作用?
三种原因几乎涵盖了所有情况。第一种情况是,文档是扫描件,未经OCR识别,因此确实没有文本可供查找。第二种情况是,提取步骤读取的是下载的文件而非OCR输出,这导致扫描件也会出现同样的空白结果。第三种情况是,文本本身没有丢失,但却以原始数组的形式写入文件,因此看起来像是JSON而不是文档。
打开运行历史记录,直接检查“提取文本和图像”的输出。 texts 内容在那里,问题出在下游的 Compose 或 Create 文件环节。
如何免费将PDF文件转换为文本文件?
对于单个文档,任何在线转换器都能胜任。构建此流程的原因在于其处理量大且重复性高:它可自动处理文件夹中的每个文件,包括扫描件,无需人工干预。PDF4me 的免费套餐每月可处理相当数量的文档,而且此处使用的所有连接器均为标准版,因此无需付费的 Power Automate 高级许可证。
故障排除
“提取文本和图像”功能读取了错误的文件。它的“文件内容”必须来自带有 PDF4me 图标的 OCR 操作,而不是来自“获取文件内容”。对于原生数字 PDF 文件,这两种方法都有效,因此该错误通常只有在收到实际扫描件后才会出现。
创建文件正在接收原始数据 texts 数组。其文件内容必须是 Compose 输出标记。如果 Compose 存在但仍然返回数组,请检查连接表达式是否同时包含数组和分隔符这两个参数。
文件标识符映射到了错误的令牌。它需要触发器的 标识符不是文件名、路径或项目 ID。这些在动态内容列表中看起来可以互换,但实际上并非如此。
输出文件夹位于触发器监视的文件夹内,因此每个新文本文件都会触发另一次运行。请将 RagInput 和 RagText 分开,使其作为同级对象而不是嵌套对象。
后续步骤
同样的六步模式(监视文件夹、获取、OCR、提取、展平、保存)可以将任何文档库变成机器可读的语料库。