PP-OCRv6 来了:OpenVINO™ 首日支持,让 AI PC 本地 OCR 在 CPU/GPU/NPU 上跑起来

如果你最近在做文档智能、屏幕文字提取、工业字符识别,或者希望在 PC 本地实现一个"看得懂图片中文字"的 AI 应用,大概率绕不开 OCR。

OCR 看起来是一个很成熟的任务,但真正做成产品时,开发者很快会遇到几个现实问题:

  • 云端 OCR 调用方便,但数据出端、网络延迟和成本都可能成为限制。

  • 大模型 OCR 能力强,但在实时摄像头、边缘部署、批量扫描场景里未必划算。

  • 传统 OCR pipeline 足够轻,但要想在 CPU、GPU、NPU 上跑得稳、跑得快,部署链路仍然需要工程优化。

这也是为什么 PaddleOCR 系列一直很受开发者欢迎。它不是"什么都做"的大模型,而是一个专注 OCR 场景、工程链路成熟、模型轻量、适合部署的实用系统。随着 PaddleOCR 3.x 生态持续演进,PP-OCRv6 新版模型也已经可以被 OpenVINO 首日支持,并在 英特尔AI PC 的 CPU、GPU、NPU 上运行。

下面我们用一个实时摄像头 OCR demo,重点看看 PP-OCRv6 tiny 的价值,以及 OpenVINO 如何在 AI PC 上通过混合架构部署整条 OCR pipeline。

为什么 PP-OCRv6 tiny 值得关注

PP-OCRv6 tiny 的核心价值不在于"参数更大",而在于继续坚持 OCR 专用模型的工程路线:轻量、低延迟、输出可控,并且更适合被嵌入到真实业务流程中。相比把所有视觉文字任务都交给通用多模态大模型,OCR 专用模型在文本定位、连续帧处理、批量扫描和本地部署场景中通常更经济,也更容易做成稳定产品。

一个典型 OCR 应用并不是单模型任务,而是一条 pipeline:

图像输入

-> 文本检测

-> 文本框裁剪与排序

-> 文本识别

-> CTC 解码

-> 可视化或业务后处理

PP-OCRv6 tiny 延续了 PP-OCR 系列的轻量化设计,把检测和识别拆成两个小模型:

复制代码
PP-OCRv6_tiny_det_onnxPP-OCRv6_tiny_rec_onnx​​

这种拆分方式对开发者非常友好。一方面,检测模型负责从整张图像中定位文本区域,识别模型只需要处理裁剪后的文本图像;另一方面,开发者可以更灵活地根据输入类型、文本数量和业务需求调整整条 OCR pipeline。对于实时摄像头 OCR、屏幕文字提取、批量文档扫描和工业字符识别等场景,PP-OCRv6 tiny 提供的是一种更轻量、更可控、更容易落地的 OCR 方案。

Day 0 支持:不只是能跑,更要跑得顺

很多模型支持文章会停在"模型能成功 compile"这一步。但对于真实 OCR 应用来说,模型推理只是端到端体验的一部分。摄像头采集、图像缩放、文本框后处理、多个文本区域裁剪、CTC 解码、结果绘制和窗口显示,都会共同影响应用是否流畅、稳定、可用。

这也是 OpenVINO 在 AI PC 上部署 PP-OCRv6 tiny 的价值所在。AI PC 同时具备 CPU、GPU 和 NPU 等不同计算资源,而 OCR pipeline 本身又包含多种不同类型的任务。因此,开发者不必把所有模型和处理逻辑都集中到同一个设备上,而是可以根据任务特点进行更合理的异构部署。

例如,在实时 OCR 场景中,GPU 可以用于处理整图文本检测,发挥其图像并行计算能力;NPU 可以用于执行文本识别模型,降低对 GPU 资源的占用;CPU 则继续负责预处理、后处理、排序、解码和 UI 逻辑。这样的分工方式,让不同计算单元各自处理更擅长的任务,从而在性能、功耗、稳定性和用户体验之间取得更好的平衡。

对于开发者来说,OpenVINO 的优势不只是让 PP-OCRv6 tiny 在 CPU、GPU、NPU 上分别跑起来,更重要的是提供了一套统一的 Runtime,让 OCR pipeline 可以在 AI PC 的混合异构架构上灵活部署。无论是实时摄像头 OCR、批量文档处理、屏幕文字提取,还是工业字符识别,开发者都可以基于同一套代码,根据实际设备和应用负载调整模型部署策略,把 demo 更快推进到真实应用。

分步运行指南:用 OpenVINO 部署 PP-OCRv6 tiny

下面我们以 PP-OCRv6 tiny ONNX 模型为例,展示如何用 OpenVINO 在 AI PC 上完成模型读取、设备分配和编译运行。整个过程可以概括为三步:读取 detection 和 recognition 模型,按照异构策略分配运行设备,最后编译模型并接入实时 OCR pipeline。

Step 1:读取 PP-OCRv6 tiny 模型

PP-OCRv6 tiny 由文本检测模型和文本识别模型组成。这里我们直接使用 ONNX 格式模型,因此无需额外安装 PaddlePaddle Runtime,OpenVINO Runtime 可以直接读取模型文件:

复制代码
import openvino as ovfrom pathlib import Path
core = ov.Core()
# PP-OCRv6 tiny ONNX modelsdet_model_file_path = Path("model/PP-OCRv6_tiny_det_onnx/inference.onnx")rec_model_file_path = Path("model/PP-OCRv6_tiny_rec_0515_onnx/inference.onnx")
det_model = core.read_model(det_model_file_path)rec_model = core.read_model(rec_model_file_path)

Step 2 :为 OCR pipeline 分配运行设备

设备选择部分保留一个简单的 Hybrid 策略:当用户选择 GPU 或 AUTO 时,检测优先放到 GPU,识别优先放到 NPU;如果没有 NPU,则回退到 CPU。

复制代码
DEVICE_STRATEGY = "HYBRID"
def resolve_ocr_devices(selected_device, available_devices):    if selected_device == "AUTO":        det_device = "GPU" if "GPU" in available_devices else "CPU"    else:        det_device = selected_device
    if DEVICE_STRATEGY == "HYBRID" and det_device == "GPU":        rec_device = "NPU" if "NPU" in available_devices else "CPU"    else:        rec_device = det_device
    return det_device, rec_device
available_devices = core.available_devicesdet_device, rec_device = resolve_ocr_devices("AUTO", available_devices)

Step 3 模型编译

编译时,根据设备设置合适的 shape:

复制代码
# Detection: fixed shape for GPU/NPUif det_device in ["GPU", "NPU"]:    det_model.reshape({det_model.input(0): ov.PartialShape([1, 3, 640, 640])})
det_compiled_model = core.compile_model(det_model, det_device)
# Recognition: NPU/GPU use fixed shape; CPU keeps dynamic widthif rec_device == "NPU":    rec_model.reshape({rec_model.input(0): ov.PartialShape([1, 3, 48, 320])})elif rec_device == "GPU":    rec_model.reshape({rec_model.input(0): ov.PartialShape([6, 3, 48, 320])})else:    for input_layer in rec_model.inputs:        input_shape = input_layer.partial_shape        input_shape[3] = -1        rec_model.reshape({input_layer: input_shape})
rec_compiled_model = core.compile_model(rec_model, rec_device)

Step 4 :接入实时 OCR pipeline

最后即可接入摄像头或视频文件运行实时 OCR:​​​​​​​

复制代码
# webcamsource = 0run_paddle_ocr(source, flip=False, use_popup=True, popup_side_by_side=True)
# video file# source = Path("test.mp4")# run_paddle_ocr(source, flip=False, use_popup=True, popup_side_by_side=True)

以下是在 Intel® Core™ Ultra X7 358H笔记本电脑上运行实时摄像头采集视频并进行OCR推理的效果。

小结

PP-OCRv6 tiny + OpenVINO 的首日支持,展示的不只是"新模型能跑起来",更是 AI PC 上端侧 AI 应用的一种更合理的部署方式:CPU 负责预处理、后处理和 UI,GPU 负责整图文本检测,NPU 负责文本识别。

对于开发者来说,这意味着可以在本地 PC 上快速构建实时 OCR 应用,减少对云端 OCR 服务的依赖,也避免把所有任务都挤到同一个加速器上。对于 AI PC 来说,这正是混合架构的价值:让不同硬件各做擅长的部分,最终得到更顺滑、更稳定、更容易产品化的本地 AI 体验。

相关推荐
天天代码码天天3 天前
OpenCV 5 + PP-OCRv6 + OpenVINO:C# 本地 OCR 推理更快、更稳、更好集成
opencv·c#·openvino
椒颜皮皮虾྅4 天前
OpenVINO™ C# API 3.3 全新发布!正式接入 OpenVINO GenAI,C# 本地大模型开发全面启航!
人工智能·开源·c#·openvino
victory_li11 天前
OpenVINO + Yolov26 + C# + .net framework4.8实现分类推理
yolo·c#·openvino
OpenVINO 中文社区14 天前
飞桨黑客松Intel赛道Meetup×Intel龙虾Skills城市巡回首场·上海站
人工智能·openvino·英特尔
OpenVINO 中文社区20 天前
用 OpenVINO™ 部署 MiniCPM5-1B:端侧 1B 推理模型与 Hybrid Reasoning 实战
人工智能·openvino
2zcode1 个月前
基于改进YOLOv5n与OpenVINO加速的课堂手机检测系统设计与实现
yolo·智能手机·openvino
OpenVINO 中文社区1 个月前
从零开始构建机器人数据:用 Physical AI Studio 搭建你的第一个模仿学习流水线
人工智能·openvino
xiaoyaohou112 个月前
032、部署优化(三):OpenVINO与ARM平台(NCNN、TNN)部署
arm开发·人工智能·openvino
OpenVINO 中文社区2 个月前
OpenVINO™正式进入 llama.cpp:GGUF 模型现已支持 Intel CPU、GPU 与 NPU
人工智能·openvino·英特尔