没有 GPU 时,很多人会直接问:PaddleOCR 的 CPU 推理怎么调才更快?这个问题如果
没有固定材料、固定字段和复核记录,通常得不到可复用的答案。一次测试变快,可能
只是图片更小、模型已加载,或者这一批材料更简单;一次结果看起来正常,也可能只
是没有碰到字段歧义页。
对于要把资料整理到 Excel 的任务,“优化”至少要同时回答两件事:端到端过程是否
更可控,字段结果是否仍能回到原图复核。下面给出一套不预设性能结论的本地测试方法。
1. 先把优化目标改成一个完整任务
只测单张图片的 OCR 耗时,不能代表实际交付。资料整理通常还包含字段定位、结果
归位、Excel 导出和人工复核。建议把一次任务写成:
原始材料 → OCR → 目标字段 → Excel → 原图复核
然后为这条链路定一个验收表:
| 目标 | 要检查什么 |
|---|---|
| 可运行 | 同一台机器能按约定启动并处理固定样本 |
| 可比较 | 每轮只调整一个变量,其他条件保持不变 |
| 可交付 | Excel 有固定列、来源定位和异常状态 |
| 可复核 | 每个字段能回到对应文件和页面 |
这样“快”不再只是一个感觉,而是某个明确阶段的记录。更重要的是,任何时间变化都
不能掩盖字段取错、格式丢失或异常页未处理的问题。
2. 固定四类条件,避免无效对比
在 CPU 场景里,输入材料、模型加载状态和运行环境都会影响结果。开始前先固定以下
四类条件:
| 条件 | 需要记录的内容 |
|---|---|
| 机器 | 操作系统、CPU、内存、电源模式与可用磁盘 |
| 任务 | 同一批样本、页数、文件格式和字段模板 |
| 运行 | PaddleOCR、模型与运行时版本,是否重启与预热 |
| 交付 | Excel 列规则、来源定位方式和人工复核口径 |
同一批样本至少应包含一张清晰页、一张模糊页、一张版式变化页和一张字段缺失页。
只用最清晰的一页测试,很容易把结论建立在不具代表性的材料上。
不要同时改多个变量
若同一轮既换模型、又改图像尺寸、又修改运行时设置,结果变化无法归因。每轮只
调整一个变量,才能知道下一步是否值得保留。
3. 按阶段计时,不要只报一个总数
PaddleOCR 3.7 模块文档
将预处理、推理、后处理与端到端耗时分别列示,并特别说明模型推理时间不含预处理和
后处理。做本机测试时,可以沿用这个思路,再加上字段整理和 Excel 导出:
| 阶段 | 记录问题 |
|---|---|
| 模型加载 | 从启动到模型可用用了多久 |
| 预处理 | 图像方向、尺寸或格式调整用了多久 |
| OCR 推理 | 模型实际识别页面用了多久 |
| 后处理 | 候选文字、坐标或结果结构整理用了多久 |
| 字段与导出 | 指定字段落表、Excel 生成用了多久 |
| 人工复核 | 异常值回到原页确认需要多少处理 |
第一轮可记录完整启动流程,后续轮次在同样的预热规则下记录稳定处理。不要用首次
加载时间替代每页处理时间,也不要把人工复核漏出端到端任务之外。
4. 将 CPU 参数视为测试变量,而不是答案
官方 3.7 文档提供了cpu_threads和limit_side_len等配置项。它们说明可以调节
线程数和检测输入边长,但不能替代你的本机验证:不同 CPU、页面尺寸、文字密度和
字段任务,可能得到不同结果。
做法是先建立一个基线,再每轮只改一项。例如:
| 轮次 | 唯一变化项 | 不变条件 |
|---|---|---|
| 基线 | 当前配置 | 同一机器、同一模型、同一批样本、同一字段模板 |
| 轮次 2 | 仅改线程数 | 其余条件与基线一致 |
| 轮次 3 | 仅改输入边长 | 其余条件与基线一致 |
不要在同一轮同时改线程数、模型和输入边长。这样即使总时间改变,也无法判断是哪个
因素造成的。对于字段任务,速度之外还要检查字段是否仍然完整、格式是否仍然可用。
5. CPU 测试先看字段结果,不只看文字输出
一页文字读出来,并不说明字段已可用。特别是编号、日期和金额等内容,常见问题是
前导零丢失、小数点或负号遗漏、同页多个候选值被取错。
真实客户端的页面会把原始页面与字段结果放在同一工作区中。右上角显示的是 CPU
执行状态,它能帮助确认当前使用的是哪一种运行路径,但它本身不是速度结论。
图 1:真实产品客户端中的 CPU 执行状态、原始页面和字段结果。截图用于说明测试
时应保留的复核界面,不代表任何配置的性能。
每一轮测试结束后,按字段填写复核表:
| 样本编号 | 字段 | 识别值 | 复核值 | 状态 |
|---|---|---|---|---|
| 文件名 + 页码 | 金额 | 模型输出 | 原图确认 | 一致 / 待复核 |
出现空值、格式异常、多个候选或看不清的字段时,保留“待复核”状态。不要因为相邻
记录看起来相似,就在 Excel 中直接猜补一个值。
6. Excel 是测试结果的一部分
如果只把耗时记在笔记里,最终导出的 Excel 仍然没有来源和状态,测试对交付帮助很
有限。字段导出后,建议至少保留下面几列:
| 来源定位 | 字段 | 识别值 | 复核值 | 状态 | 差异说明 |
|---|---|---|---|---|---|
| 文件名 + 页码 | 目标字段 | 模型输出 | 人工确认 | 一致 / 待复核 | 原图原因 |
图 2:真实字段结果导出后的 Excel 示例。实际测试表可在此基础上补充复核状态和
差异说明。
当某项调整缩短了某一阶段,但增加了待复核字段或造成导出格式问题,它不一定适合
你的实际任务。CPU 优化的判断应回到交付目标:能否稳定得到可复核的字段表。
7. 只想完成资料整理时,减少环境维护成本
研究 PaddleOCR 的 CPU 推理适合需要维护本地模型、运行时或测试链路的读者。如果
你的目标是把图片、PDF 或文件夹中的指定字段整理成可复核 Excel,而不是持续调试
OCR 环境,可以直接使用文档工作台。一键安装、打开即用的桌面工具更适合把注意力
放回字段、结果和复核;具体结果仍应结合原图确认。
文档工作台下载链接https://pan.quark.cn/s/82ef5efcf992
先建立一张能重复执行、能回到原图的测试表,再讨论某项 CPU 调整是否值得保留。
这样记录下来的不是一句“更快”,而是一套能服务实际资料整理任务的判断依据。