如何基于外围实线边框对OCR逐行识别的文本做板块分组?
基于实线边框的OCR逐行文本分组实现方案
边框检测与板块标定
- 先对原图做基础预处理:转灰度图后做二值化,分离深色实线边框与浅色背景,再通过Canny边缘检测提取图中所有轮廓
- 轮廓过滤:根据已知条件,所有目标板块都是闭合实线矩形,直接对提取到的轮廓做形状校验,仅保留符合「4个顶点、轮廓闭合、宽高比在合理区间、轮廓内为可承载文本的空白区域」特征的矩形,过滤掉文字笔画、图像杂点产生的无效轮廓
- 板块信息规整:给每个有效矩形记录边界坐标:左上角坐标
(x_min, y_min)、右下角坐标(x_max, y_max),如果矩形内部自带Board A、Board B、C这类板块标识,优先将标识文本和对应矩形绑定,给每个矩形打上明确的板块类别标签
注意:这一步输出的所有坐标,要和后续OCR结果的坐标保持同一图像坐标系,避免后续匹配出现偏移
OCR文本与板块的匹配
- 先确认OCR逐行输出自带每行文本的外接矩形坐标:目前主流OCR引擎(PaddleOCR、Tesseract等)默认输出逐行结果时都会附带对应坐标,如果你的现有输出只有纯文本,先调整OCR输出配置补上坐标信息,没有位置数据无法完成空间归属判断
- 基础归属判断:遍历每一行OCR文本,取该行文本外接框的中心点,判断中心点落在哪个板块矩形的坐标范围内(即满足
x_min < 中心点x坐标 < x_max且y_min < 中心点y坐标 < y_max),直接将该行文本归入对应板块 - 异常场景兼容:如果出现文本中心点落在多个边框重叠区域、或者不在任何边框内的情况,额外计算文本行外接框和每个板块矩形的交并比(IOU),取重叠面积占比最高的板块作为归属;所有边框外的文本统一标记为未归类内容即可
- 嵌套边框适配:如果图中存在边框嵌套的情况,归属判断时优先选择完全包含文本中心点、且面积最小的矩形作为所属板块即可
结果存储结构
直接用键值对结构存储即可,结构参考如下:
{ "Board A": { "board_bbox": [x_min, y_min, x_max, y_max], "text_lines": [ {"content": "第一行文本内容", "text_bbox": [x1,y1,x2,y2,x3,y3,x4,y4]}, {"content": "第二行文本内容", "text_bbox": [x1,y1,x2,y2,x3,y3,x4,y4]} ] }, "Board B": { ... }, "Board C": { ... }, "unclassified": [ ... ] // 存放未归入任何板块的文本 }
内容的提问来源于stack exchange,提问作者harpan
相关产品推荐
相关产品推荐

