在 Power Automate 中按文本拆分 PDF:使用 PDF4me 将一批扫描件拆分为多个文件

PDF4me 按文本拆分 PDF 这是一个 Power Automate 操作,它会将一个 PDF 文件分割成多个文件,分割位置取决于文本标记的出现。此流程会监视 SharePoint 文件夹,并在每次扫描时根据标记进行分割。 Serial#: 标记后,将结果循环导入 Dropbox。一次批量扫描会生成三个命名文件,无需手动选择页面。
任何使用扫描仪的人都知道这个问题。有人把一叠文件放进进纸器,按一下扫描键,结果得到的是一个包含二十条毫不相干记录的PDF文件。谷歌首页上的所有在线文件分割工具都能轻松解决这个问题,前提是需要人工上传文件,点击页面选择器,然后下载分割后的文件。偶尔一次没问题。但如果扫描仪每天早上都要运行,那就麻烦了。这种流程完全不需要人工干预。
扫描文件保存到 SharePoint 库中。PDF4me 读取文本层,找到每个新记录的起始页,并返回一个包含多个 PDF 文件的数组。一个 For Each 循环遍历该数组,并将每个文件上传到 Dropbox。整个过程只需四个操作,无需编写任何表达式,耗时不到六秒。
基于原因的问答
为什么按文本量而不是页数拆分? 页数统计仅在每条记录长度相同时才有效。但实际批次的数据长度并不统一。一张发票占一页,下一张可能占四页。记录中会包含一个文本标记,因此无论长度如何变化,分页结果都能保持正确。
为什么PDF需要文本层? 该操作搜索的是文档中的文本,而不是像素。如果是未经 OCR 处理的照片或平板扫描件,则没有文本可供查找,因此每次匹配都返回空结果。先运行 OCR,同样的流程也适用于纸质原件。
为什么要在分割后使用 For each 循环? 该操作返回的是一个数组,而不是单个文件。Power Automate 无法一次性将数组写入存储,因此循环会将“三个文档”转换为三个单独的“创建文件”调用。
为什么要将输出发送到 Dropbox 而不是发送回 SharePoint? 主要是习惯使然,而且这样在测试时可以清晰地将输入和输出文件夹分开。只需将最后一个操作替换为 SharePoint 创建文件,流程中的其他任何内容都无需更改。
您将获得
输入: 一个包含多条记录的 PDF 文件被放入 SharePoint 文档库中,其中每条记录都以一行文字开头。 Serial#: SPTEST-A, Serial#: SPTEST-B, 等等。 输出: Dropbox 文件夹中每个记录对应一个 PDF 文件,每个 PDF 文件包含与该记录完全对应的页面。

受监控的 SharePoint 文件夹。任何落入此文件夹的内容都会启动跟踪。

输入一份三页的扫描件,输出三个分别编号的PDF文件。
你需要什么
- 动力自动化。 打开 Power Automate标准的 Microsoft 365 许可证涵盖了这里使用的所有内容。这是一个云端流程,而非 Power Automate Desktop。
- PDF4me API密钥。 获取您的 API 密钥首次添加 PDF4me 操作时进行连接。
- 一个 SharePoint 网站和一个 Dropbox 帐户在构建流程之前,请在 SharePoint 文档库中创建一个输入文件夹,并在 Dropbox 中创建一个输出文件夹,以便两个选择器都有指向的位置。
- 带有重复文本标记的测试 PDF。 scan-batch-sample.pdf三页,每页首页都有一行序列号。
先拿到样品。 保存流程后,请下载输入 PDF 文件并将其上传到 SharePoint 输入文件夹。这里也提供了三个预期输出文件,您可以将其与自己运行生成的文件进行比较。
流程概览
- 当在文件夹中创建文件时 (SharePoint 触发器)指向
/Shared Documents/ScanSplitInput。 - PDF - 按文本拆分 PDF (PDF4me)带有搜索文本
Serial#:(.*)和分割类型before。 - 对于每个 迭代
body/splitedDocuments。 - 创建文件 (Dropbox)写入
/ScanSplitOutput。
完整流程概述

整个流程包含四个步骤。每个计数器显示“1/3”时,分割操作都在执行其功能。
步骤 1:如何监视 SharePoint 文件夹中的新扫描?
目前为止的流程: 目前还没有什么,这是触发点。
当某个特定文档库文件夹中出现文件时,就会触发此触发器。请精确选择文件夹。如果将其指向共享库的根目录,则每次上传不相关的文件都会触发一次运行。
- 创建一个新的 自动化云流 并搜索触发器列表 当在文件夹中创建文件时。
- 配置:
- 网站地址例如,您的网站。
PDF4me Sharepoints - https://ynoox1.sharepoint.com/sites/PDF4meSharepoints - 文件夹 ID:
/Shared Documents/ScanSplitInput
- 网站地址例如,您的网站。
- 打开 高级参数 并打开 推断内容类型然后将其设置为
Yes。
SharePoint 触发器配置

将“推断内容类型”设置为“是”后,触发器将返回真正的 PDF 字节,而不是通用数据块。
提示。 此触发器在选择器中带有“(已弃用)”标签。它仍然可以运行,并且就是这里显示的那个,但对于新的生产流程,请优先选择其他触发器。 创建文件时(仅限属性) 其次是 获取文件内容其余流程完全相同,因为两条路径最终都会获取到文件字节。微软在以下位置列出了每个触发器及其状态: SharePoint 连接器参考。
步骤 2:按文本分割 PDF 如何决定从哪里进行分割?
目前为止的流程: SharePoint触发器。
这是真正执行操作的步骤。它读取文档的文本层,找到包含搜索文本的每一页,并在这些页面处截断文档。其他一切都是基础工作。
- 添加新步骤并搜索 PDF - 按文本拆分 PDF。
- 配置:
- 文件内容:
File Content从触发器 - 文件名:
x-ms-file-name-encoded从触发器 - 文本:
Serial#:(.*) - 分体式:
before - 拆分文件命名:
NameAsPerOrder
- 文件内容:
- 当系统提示连接时,请连接您的 PDF4me 帐户。
按文本参数拆分 PDF
| 范围 | 此处使用的值 | 它控制着什么 |
|---|---|---|
| 文件内容 | File Content 触发器 | 要分割的 PDF 文件字节。必须是带有可搜索文本层的真实 PDF 文件。 |
| 文件名 | x-ms-file-name-encoded | 用于处理识别的源名称,以及作为输出名称的词干。 |
| 文本 | Serial#:(.*) | 开始新记录的标记。匹配区分大小写,所以 serial#: 什么也找不到。 |
| 分体式 | before | 在每个匹配页之前立即剪切,因此标记页会打开自己的文档。使用 after 改为关闭之前的窗口。 |
| 拆分文件命名 | NameAsPerOrder | 按切割顺序对产出物进行编号,产生 name 1.pdf, name 2.pdf, name 3.pdf。 |

分隔符的作用是区分标记是打开其记录还是关闭其上方的记录。如果顺序颠倒,每个文件都会错开一页。
提示。 选择一个在文档中其他任何位置都不能出现的标记。 Serial#: 安全。一个简单的词 Invoice 不,因为它还会匹配页面中间的“发票总额”短语,并在那里进行拆分。
步骤 3:为什么这里需要 For each 循环?
目前为止的流程: SharePoint触发器+按文本拆分PDF。
分割操作返回一个名为 splitedDocuments每个条目都包含一个输出文件。Power Automate 无法在单个操作中将整个数组写入存储,因此必须一次遍历数组中的一个条目。
- 添加一个 控制 行动并选择 对于每个。
- 配置:
- 从之前的步骤中选择一个输出。:
body/splitedDocuments从“按文本拆分 PDF”操作
- 从之前的步骤中选择一个输出。:
- 循环的并发数保持默认值。这些文件很小,而且按顺序运行更便于阅读。微软在文档中详细说明了并发数和嵌套限制。 适用于每份参考文献。
对于每种配置

一个令牌就是整个配置。如果 Power Automate 已自动将您的“创建文件”操作封装在一个循环中,则它已经为您完成了此操作。
这一行代码决定了整个流程是否有效。 如果你将循环指向除以下任何内容之外的任何东西 正文/拆分文档其中的“创建文件”操作要么会运行一次,但有效负载错误,要么根本不会运行。
步骤 4:如何将每个拆分文件保存到 Dropbox?
目前为止的流程: SharePoint 触发器 + 按文本拆分 PDF + 对于每个。
在循环内部,每次迭代都会通过两个标记公开当前拆分的文件: fileName 和 streamFile将它们直线横跨。
- 内部 对于每个 块,添加一个 Dropbox 行动并选择 创建文件。
- 配置:
- 文件夹路径:
/ScanSplitOutput - 文件名:
fileName - 文件内容:
streamFile
- 文件夹路径:
- 出现提示时,请连接您的 Dropbox 帐户。
Dropbox 创建文件配置

fileName 和 streamFile 来自当前循环项,而非触发器。这两个标记都带有 PDF4me 图标。
提示。 输出文件夹应与输入文件夹分开。将拆分后的文件写回触发器正在监视的文件夹会形成一个循环,该循环会因其自身的输出而重新触发,这是一种代价高昂的问题排查方式。
运行流程并验证
- 节省 右上角的流水。
- 上传
scan-batch-sample.pdf触发器正在监视 SharePoint 文件夹中的内容。由于触发器会轮询,因此请耐心等待一分钟,不要期望立即运行。 - 打开流程 运行历史记录 并确认所有四个操作都带有绿色对勾。每个操作块都会显示一个计数器,其内容应为: 1/3 示例文件。
- 打开
/ScanSplitOutput在 Dropbox 中。您应该看到三个 PDF 文件,编号分别为 1、2 和 3,每个文件都包含一条序列号记录。
你实际建造了什么? 内容感知文档分隔符。这四个操作适用于任何批次,其中每条记录都使用一致的字符串来声明自身,无论是发票号、患者 ID、病例参考号还是章节标题。PDF4me 中也存在相同的操作。 制作, Zapier 和 n8n因此,这种模式可以在不同的平台上移动,只有触发步骤和存储步骤会发生变化。
无需重建即可添加的常见变体
| 云流与其他方案的比较 | 无人值守运行 | 内容上的分歧 | 需要一台台式电脑 |
|---|---|---|---|
| Power Automate 云流中的 PDF4me | 是的 | 是的,在任何文本标记上 | 不 |
| 手动在线分线器 | 不,每个文件都是人工上传的。 | 有时,通过页面选择器 | 不 |
| Power Automate 桌面版 | 只有在机器开启时 | 取决于已安装的操作 | 是的 |
常见问题
如何在 Power Automate 中拆分 PDF?
添加 PDF - 按文本拆分 PDF 从 PDF4me 到云流的操作,将 PDF 字节映射到 文件内容并赋予它一个 文本 要查找的值。该操作返回一个包含多个独立 PDF 文件的数组。 body/splitedDocuments封装存储操作,例如 Dropbox 创建文件 在 对于每个 遍历该数组,并将每个元素保存下来。
这里不需要任何表达式写作。这篇文章中展示的四个步骤就是完整的流程。
Power Automate 能否根据内容拆分 PDF 文件?
是的,这正是该流程的功能。Power Automate 本身没有 PDF 分割功能,因此内容感知由 PDF4me 连接器实现。它会读取文档的文本层,并在搜索字符串出现的位置进行分割,这意味着分割是按照记录数而不是固定的页数进行的。
唯一的要求是必须包含真正的文本层。未经OCR处理的扫描件,在搜索看来只是文字的图片而已。
如何在 Power Automate 中将 PDF 文件拆分成多个文件?
分割本身是一个操作,但从中取出多个文件需要两个操作。 按文本拆分 PDF 生成数组,以及一个 对于每个 循环会将该数组转换为每个文档一次的 Create 文件调用。跳过循环是导致最终只有一个输出文件而不是多个输出文件的最常见原因。
在此示例运行中,三条记录的扫描会生成三个名为“ sharepoint-trigger-test 1.pdf 通过 sharepoint-trigger-test 3.pdf, 因为 拆分文件命名 设置为 NameAsPerOrder。
Power Automate Desktop 是否支持拆分 PDF?
此流程是云端流程,这是有意为之。它会在文件上传到 SharePoint 时,利用微软的基础架构运行,无需维护任何服务器,也无需管理网关。Power Automate Desktop 可以调用相同的 PDF4me API,但需要占用一台定时运行的服务器,并需保证其正常运行时间。
如果您的文档已经存储在 SharePoint、OneDrive 或 Dropbox 中,那么云端流程的构建就更简单。
能否按书签而不是文本分割PDF文件?
采取这种行动行不通。 按文本拆分 PDF 仅匹配文本层。如果您的源文档包含可靠的书签,则最接近的 PDF4me 等效项是 拆分 PDF 按页码,或 按条形码分割 PDF 当使用分隔片时。
实际上,在扫描材料上,文本标记比书签更可靠,因为扫描仪不会创建书签,但会保留页面上打印的内容。
故障排除
创建文件操作位于 For Each 循环之外,或者循环指向错误的标记。打开循环并确认其内容正确。 正文/拆分文档并检查 Create 文件是否位于循环边界内,而不是位于循环边界下。
没有页面与搜索文本匹配,因此没有内容可以剪切。请先检查大小写,因为匹配区分大小写。然后打开 PDF 文件,尝试用光标选择标记文本。如果无法选中,则说明文档没有文本图层,需要先进行 OCR 识别才能执行此操作。
拆分类型设置的值错误。 前带有标记的页面会开始一个新的文档。 后它会结束上一个进程。切换设置并重新运行。
输出文件夹与触发器监视的文件夹相同,因此每个拆分的文件都会触发另一次运行。将“创建文件”指向单独的文件夹,在本例中为 Dropbox。 /ScanSplitOutput 路径,循环停止。
后续步骤
同样的四步模式(监视文件夹、按标记分割、循环数组、保存每个部分)可以处理任何需要变成多个的批量文档。