如果你最近在做文档智能、屏幕文字提取、工业字符识别,或者希望在 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 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 = "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_deviceif DEVICE_STRATEGY == "HYBRID" and det_device == "GPU":rec_device = "NPU" if "NPU" in available_devices else "CPU"else: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, 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 体验。