跳到主要内容

OCR Solution

OCR 扩展(ocr-device-inference 把 NE101/NE301 采集的图像自动变成可检索的文字——绑定图像流后每帧自动识别,结果进仪表板、自动化规则与 AI Chat。


1. 方案概述

NeoMind 的 OCR 扩展(ocr-device-inference 可对设备采集的图像进行通用文字识别:扩展基于 PP-OCRv4 模型(DB 文本检测 + SVTR 文本识别,支持中英文切换),绑定设备图像流后对每一帧图像自动提取文字内容,并在仪表板中展示。识别结果还可通过 AI Chat 以自然语言方式查询。

典型应用场景

场景说明
铭牌读取识别设备铭牌上的型号、序列号、参数等信息
标签识别读取产品标签、条码旁的文字说明
文档数字化将纸质文档、告示牌等内容转为可检索的文字
仪表读数识别数字仪表盘上的读数(如电表、水表)

数据流向

环节说明
图像采集NE101/NE301 通过定时抓拍或事件触发获取图像
OCR 识别OCR 扩展自动对图像进行文字提取(检测 + 识别,可绘制文本框、支持 ROI 区域过滤)
结果展示仪表板实时展示识别结果,支持查看历史记录
AI Chat 查询通过自然语言查询已识别的文字内容

2. 物料清单(BOM)

开始前先确认手头物料:一台能抓拍图像的智能相机、一套 NeoMind 平台,再加一个 OCR 扩展即可,无需 GPU 等额外硬件。

物料规格用途必需
智能相机NE101 或 NE301图像采集
NeoMind 平台v0.9.0+(下载边缘 AI 管理
OCR 扩展ocr-device-inference 2.7.x文字识别推理

推理硬件自动适配:macOS 走 CoreML,Linux 有 NVIDIA GPU 时走 CUDA,其余回退 CPU,无需手动配置。


3. 前置准备

3.1 NeoMind 安装与配置

请先完成 NeoMind 的安装、注册和基本配置,详细步骤请参考 NeoMind 快速入门

3.2 设备接入

将 NE101 或 NE301 注册到 NeoMind 平台:

  1. 在 NeoMind 中进入 设备管理 页面
  2. 点击 添加设备,选择对应的设备类型(NE101 或 NE301)
  3. 确认设备信息(设备 ID 与 Topic 由平台自动生成,也可自定义)
  4. 保存并等待设备上线

设备上线

详细的设备接入步骤请参考 NeoMind 快速入门 - 设备管理

3.3 验证设备上线

  • Devices 页出现新添加的设备(如 ne301-new),状态为在线。
  • 设备详情中确认存在图像指标——OCR 绑定默认使用名为 image 的图像指标,请确认设备抓拍时该指标持续更新。
  • 记下设备 ID,后续绑定与指标引用(DataSourceId 形如 device:<设备ID>:<指标名>)都会用到。

4. 安装 OCR 扩展

OCR 扩展发布在官方扩展市场,当前版本为 2.7.x(本文以 2.7.8 为例)。

4.1 通过扩展市场安装(推荐)

步骤 1:进入 Extensions(扩展) 管理页面,点击工具栏的 扩展市场(地球图标),在搜索框输入 ocr-device-inference 找到扩展

扩展市场搜索 ocr-device-inference

步骤 2:点击 Install,NeoMind 自动选择与当前平台 / ABI 匹配的 .nep 包并下载安装

点击 Install 安装扩展

步骤 3:安装完成后扩展自动出现在扩展列表中并启动,确认状态为已启用(Running)

扩展已安装并运行

此外,扩展市场还提供两个更新的 OCR 扩展:paddle-ocr-v6(PP-OCRv6 本地 ONNX 推理,多档模型)与 paddle-ocr-vl(高精度多语言识别、表格与关键信息抽取)。复杂版面/表格场景建议改用后者,见 NE101 摄像头 OCR 应用案例PaddleOCR-VL 用例

4.2 CLI 安装(可选)

neomind extension market-list                     # 查看市场可用扩展
neomind extension market-install ocr-device-inference # 从市场安装(默认最新版)
neomind extension market-install ocr-device-inference --version 2.7.8

4.3 验证安装状态

  • 扩展列表卡片与扩展详情页顶部状态应为 Running(绿色圆点)。
  • 点击扩展卡片进入 扩展详情页,确认存在 总览 / 配置 / 命令(Commands)/ 指标(Metrics)/ 日志(Logs)标签。
  • 切到 指标(Metrics) 标签,应能看到扩展级指标 bound_devicestotal_inferencestotal_text_blockstotal_errors 开始上报(初始为 0)。

命令调用入口说明:OCR 绑定与管理既可以在仪表板 OCR 组件中完成(见 5.2),也可以通过扩展命令完成——扩展详情页 命令(Commands) 标签填参数执行,或 REST API POST /api/extensions/:id/command,请求体 {"command":"...","args":{...}}


5. 仪表板配置与设备绑定

5.1 创建仪表板

进入 Dashboard(仪表板) 管理页面,点击 创建仪表板

5.2 添加 OCR 面板并绑定设备

在仪表板编辑模式点击 Add Component,在 Extensions 页签选择 OCR 组件(由 ocr-device-inference 扩展提供),并绑定目标设备:

绑定完成后,OCR 面板将自动接收并处理该设备采集的图像:

OCR 面板绑定设备

用户可在 Dashboard 页面添加其他所需的组件,提供更多的数据和内容展示。

OCR 组件同时支持上传单张图片即时识别与管理设备绑定,可在组件配置中开启 drawBoxes(绘制文本框)与 showPreview(结果预览)。

5.3 命令方式绑定与管理(可选)

仪表板组件适合单人配置;如果需要用脚本 / API 批量绑定多台设备,就要走命令通道。可在扩展详情页 命令(Commands) 标签执行 bind_device 绑定(或经 REST 调用):

{
"command": "bind_device",
"args": {
"device_id": "ne301-new",
"image_metric": "image",
"draw_boxes": true,
"language": "chinese"
}
}

执行成功返回:

{ "success": true, "device_id": "ne301-new" }

device_id 必填,其余参数省略时取默认值(image_metric: imagedraw_boxes: truelanguage: chinese)。绑定会持久化到扩展配置,扩展重启后自动恢复,无需重新绑定。绑定成功只是第一步,还需要按 5.4 确认识别真的在跑。

命令关键参数说明
bind_devicedevice_idimage_metric(默认 image)、draw_boxes(默认 true)、languagechinese / english绑定设备,图像更新即自动 OCR
unbind_devicedevice_id解除绑定
toggle_bindingdevice_idactive启用 / 暂停已有绑定
get_bindings查看所有绑定及状态
update_roidevice_idroi_regionsroi_overlap_threshold(默认 0.5设置 ROI 多边形区域,只识别区域内文字(顶点为 0.0–1.0 归一化坐标)
recognize_imageimage(base64)、language对单张 base64 图片做一次性 OCR
get_status查看扩展状态与统计

REST 调用示例(绑定设备):

curl -X POST -H "X-API-Key: $NEOMIND_API_KEY" \
-H "Content-Type: application/json" \
-d '{"command":"bind_device","args":{"device_id":"ne301-new","image_metric":"image","draw_boxes":true,"language":"chinese"}}' \
http://localhost:9375/api/extensions/ocr-device-inference/command

5.4 验证绑定

bind_device 返回 success: true 只代表参数被接受,真正的确认标准是三件事:指标开始增长、get_status 能看到活跃绑定、识别结果指标开始写入。

  • 扩展详情页 指标 标签:bound_devices ≥ 1;设备抓拍后 total_inferences 持续增长、total_errors 不增长。
  • 扩展详情页 命令 标签执行 get_bindings,确认绑定为 active 状态;或执行 get_status 一次拿到模型加载状态、累计统计与每个绑定的状态:
{ "command": "get_status", "args": {} }

返回(字段无需转换,可直接断言):

{
"success": true,
"data": {
"model_loaded": true,
"model_error": null,
"total_inferences": 128,
"total_text_blocks": 342,
"total_errors": 0,
"bindings_count": 1,
"bindings": [
{ "device_id": "ne301-new", "active": true, "total_inferences": 128 }
]
}
}

判读方法:model_loadedfalse 属正常(模型在首次推理时才懒加载),但若同时 model_error 有值,说明模型文件加载失败,按第 10 节排查;bindings 里目标设备应为 "active": true,且其 total_inferences 随抓拍增长。

  • 每次识别都会向设备写入 virtual.ocr.* 结果指标,DataSourceId 形如:
    • device:ne301-new:virtual.ocr.full_text(识别全文)
    • device:ne301-new:virtual.ocr.count(文本块数量)
    • device:ne301-new:virtual.ocr.confidence(平均置信度 0.0–1.0)
    • device:ne301-new:virtual.ocr.annotated_image(绘制文本框后的标注图)

关于标注图:draw_boxes: true(默认)时,扩展把每个识别到的文本框绘制在原图上,编码为 JPEG 后以 data:image/jpeg;base64,… 格式写入 virtual.ocr.annotated_image。把该指标绑定到仪表板图片组件即可看到「框随字走」的效果——这也是核对识别位置、ROI 区域是否准确最直观的方式。


6. 触发测试与查看结果

6.1 触发抓拍测试

设备绑定后,可通过手动触发抓拍来验证 OCR 识别效果。设备采集到图像后,OCR 扩展会自动进行文字识别。

6.2 查看识别结果

在仪表板的 OCR 面板中可以查看实时识别结果,包括原始图像和提取的文字内容:

OCR 面板实时识别结果

6.3 查看历史识别记录

在设备详情中可以查看所有历史 OCR 识别记录,包括每次识别的原始图片和提取结果:

📷 待补截图|设备详情 · 历史 OCR 识别记录列表 · 建议路径 …/neomind/ocr-solution/device-history.png


7. AI Chat 查询

OCR 识别结果存储后,可以在 AI Chat 中通过自然语言查询已识别的文字内容。例如:

Hello, what's the OCR result of my device ne301-new? Reply in English.

AI Chat 查询 OCR 结果

提示:AI Chat 功能需要配置 LLM 后端(如 Ollama),配置方法请参考 NeoMind 快速入门配置 LLM 后端


8. 下游使用

OCR 识别结果以 device:<设备ID>:<指标名> 格式进入平台,仪表板、规则、AI Chat 引用时都用这一格式:

结果指标名DataSourceId 示例
识别全文virtual.ocr.full_textdevice:ne301-new:virtual.ocr.full_text
文本块数量virtual.ocr.countdevice:ne301-new:virtual.ocr.count
平均置信度virtual.ocr.confidencedevice:ne301-new:virtual.ocr.confidence
标注图virtual.ocr.annotated_imagedevice:ne301-new:virtual.ocr.annotated_image
  • 仪表板:把上述 DataSourceId 绑定到文本卡 / 数值卡 / 图片卡,实时展示识别全文、文本块数与置信度(见 使用仪表板)。
  • 自动化规则:例如「识别置信度过低时提醒人工复核」——对 virtual.ocr.confidence 设阈值(自动化规则)。规则 JSON 示例:
{
"name": "OCR 识别置信度过低告警",
"trigger": { "trigger_type": "data_change" },
"condition": {
"condition_type": "comparison",
"source": "device:ne301-new:virtual.ocr.confidence",
"operator": "less_than",
"threshold": 0.6
},
"actions": [
{ "type": "notify", "message": "电表读数识别置信度过低({value}),请人工复核", "severity": "warning" }
]
}
  • AI Chat:自然语言查询,如「最近一小时 ne301-new 识别出了什么文字」。

9. 典型场景

场景推荐配置做法
仪表读数(电表 / 水表)ROI 聚焦表盘 + chineseupdate_roi 设置仅覆盖读数区域的多边形(0–1 归一化坐标),过滤表盘外文字,降低误识别;对 virtual.ocr.confidence 配置低置信度告警,及时人工复核
铭牌 / 标签识别draw_boxes: true开启文本框绘制,在标注图上核对识别区域;用手动抓拍 + recognize_image 先单张调通再绑定自动识别
文档数字化分辨率优先提高抓拍分辨率与对焦,文字过小会导致漏检;文档语种与 language 参数保持一致(当前支持 chinese / english
复杂版面 / 表格 / 多语种改用 paddle 系扩展ocr-device-inference 面向通用文字行识别;表格还原与关键信息抽取建议改用 PaddleOCR-VL,摄像头端到端流水线见 NE101 摄像头 OCR 应用案例

10. 故障排查

先用三件套定位:扩展详情页 日志 标签看进程输出、指标 标签看 total_errors 是否增长、命令 标签执行 get_bindings / get_status 看绑定与统计。常见故障:

故障现象可能原因解决方案
绑定后 total_inferences 不增长,无识别结果image_metric 与设备实际图像指标名不一致;绑定处于 inactive 状态确认设备图像指标名(默认 image)与 bind_device 参数一致;get_bindings 查看状态,用 toggle_bindingactive: true)恢复
virtual.ocr.count 为 0,识别不到文字图像分辨率过低、文字过小或模糊;language 与文字语种不符(默认 chinese,仅支持中 / 英)提高抓拍分辨率与光照;把 language 切换为与场景一致的语种;先用 recognize_image 对单张清晰图验证,排除设备抓拍质量问题
识别框偏移、把无关文字也识别进来全图识别混入背景文字;draw_boxes 标注框与期望区域不符update_roi 设置只覆盖目标区域的多边形(顶点 0.0–1.0 归一化坐标),并按需调整 roi_overlap_threshold(默认 0.5,越大要求文字块与 ROI 重叠越多)
total_errors 持续增长,推理失败PP-OCRv4 模型文件(det_mv3_db.onnx / rec_svtr.onnx / rec_en.onnx)缺失或损坏;ONNX Runtime 异常查看 日志 标签的具体报错;重新安装扩展或按扩展 README 重新下载模型;首次推理需加载模型,属正常慢
中英文混排识别乱码 / 漏字扩展按单一语种识别(chineseenglish 二选一)以主要语种选择 language;中英混排、多语种或表格场景建议改用 paddle-ocr-v6 / paddle-ocr-vl(见 4.1 说明)
virtual.ocr.confidence 长期偏低图像模糊、反光、拍摄角度倾斜改善抓拍条件(对焦、补光、正对拍摄);用 ROI 聚焦关键文字区域;配合 8. 下游使用 的低置信度告警规则兜底

11. 附录

相关文档


最后更新: 2026-09-08