触控魔方 / 使用文档 / 实战配方

OCR 结果整理成表格

实战配方 · 使用文档

它解决什么问题

截图识别出来的是一堆散落的文字块,顺序是识别引擎给的,不是你看的顺序。直接存下来是一坨,没法用。

这条配方把它整理成「一行一条、从上到下」的结构,再用正则挑出你要的字段,最后存成能直接粘进表格的文件。

先理解 OCR 输出是什么

「OCR 识别节点」的输出是两个对象:

输出口 内容
ocrResult 识别结果对象,含每个文字块的内容和置信度
screenOcrResult 同上,但坐标已换算成屏幕坐标

注意它是对象,不是纯文本。 想拿字符串,有两个办法:

先从简单的走:OCR → 整理文本。

分步做

1. 截图,把图交给 OCR

截图节点 captureMode 设 bitmap(不落盘,直接给下游),输出接 OCR 节点的 bitmap。

要识别手机里已有的图,就用 OCR 节点的 imagePath(单张)或 folderPath(一批)。

2. OCR 节点:只认你需要的区域

参数 填什么 为什么
识别区域 recognizeRegion 区域模式,框住表格那部分 全屏会把状态栏、导航栏、广告一起认进来
语言 language 中文 / 英文 / 混合 选错会认成乱码

区域限定这一步能省掉后面一半的清洗工作。宁可多框几次,也别全屏硬认。

3. 整理文本:把散块排成行

加「整理文本节点」,outputMode 填 sequential_all(按顺序全部输出,用换行连接)。

关键参数是 yGroupThreshold(Y 轴分组阈值):同一行里的文字块,纵向差多少像素以内算同一行。

4. 正则提取:只要你要的那一列

加「正则提取节点」:

参数 填什么
输入 input 接整理文本的输出
正则 pattern 捕获你要的部分,比如 (\d+\.\d+) 抓金额
分组 group 1(第 1 个括号里的内容)
全部匹配 outputAll true —— 只取第一条就设 false

outputAll 开着的意义:一屏里通常有多行,只取第一条等于只拿了一行。

5. 存成能粘进表格的格式

「写文件节点」:

参数 填什么
路径 path 比如 识别结果.csv
内容 content 接正则提取的输出
追加 append true

存成 .csv 扩展名,Excel / WPS / 腾讯文档都能直接打开。

分隔符是逗号 —— 如果抓出来的是多行多列,要在正则里就把每行的字段用逗号连好,比如 (\S+),(\d+) 配替换模板 $1,$2。否则整行会挤在一个单元格里。

用到的节点

节点 干什么
截图节点 bitmap 模式,把图交给 OCR
OCR 识别节点 限定区域、选语言,输出结果对象
整理文本节点 按 Y 轴分组把散块排成行
正则提取节点 挑出目标字段,outputAll 拿全部
写文件节点 追加写入 csv
JSON 取值节点 要从结果对象里取特定字段时用

容易踩的坑