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 RuntimeOpenVINO Runtime 可以直接读取模型文件import openvino as ovfrom pathlib import Pathcore 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 HYBRIDdef resolve_ocr_devices(selected_device, available_devices):if selected_device AUTO:det_device GPU if GPU in available_devices else CPUelse:det_device selected_deviceif DEVICE_STRATEGY HYBRID and det_device GPU:rec_device NPU if NPU in available_devices else CPUelse:rec_device det_devicereturn det_device, rec_deviceavailable_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_shapeinput_shape[3] -1rec_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, flipFalse, use_popupTrue, popup_side_by_sideTrue)# video file# source Path(test.mp4)# run_paddle_ocr(source, flipFalse, use_popupTrue, popup_side_by_sideTrue)以下是在 Intel® Core™ Ultra X7 358H笔记本电脑上运行实时摄像头采集视频并进行OCR推理的效果。小结PP-OCRv6 tiny OpenVINO 的首日支持展示的不只是“新模型能跑起来”更是 AI PC 上端侧 AI 应用的一种更合理的部署方式CPU 负责预处理、后处理和 UIGPU 负责整图文本检测NPU 负责文本识别。对于开发者来说这意味着可以在本地 PC 上快速构建实时 OCR 应用减少对云端 OCR 服务的依赖也避免把所有任务都挤到同一个加速器上。对于 AI PC 来说这正是混合架构的价值让不同硬件各做擅长的部分最终得到更顺滑、更稳定、更容易产品化的本地 AI 体验。