真实面经题目 · 原创解析
OCR 检测阶段遇到相邻或重叠文字时,如何分离文字区域,并与识别和后处理链路联动?
这道题考察 OCR 检测阶段对相邻或重叠文字的实例分离能力。好的回答要从检测表示、后处理、识别反馈和业务规则联动,而不是只说调阈值。
真实面经题目 · 原创解析
这道题考察 OCR 检测阶段对相邻或重叠文字的实例分离能力。好的回答要从检测表示、后处理、识别反馈和业务规则联动,而不是只说调阈值。
相邻或重叠文字分不开,首先要判断是检测模型把多个实例合成一个框,还是后处理/NMS 把实例误合并,或者识别阶段的行切分和阅读顺序出了问题。检测侧可以选择更适合文本形态的表示:水平框、旋转框、四边形、多边形、文本中心线、字符/文本实例 mask。对于弯曲、密集、倾斜文字,DBNet/PSENet/TextSnake/instance segmentation 一类方法比简单矩形框更容易表达分离边界。 后处理上要围绕实例分离调参和加约束:调整二值化阈值、膨胀腐蚀、连通域、最小间距、NMS/Soft-NMS、watershed、中心线扩张和 polygon merge 规则;同时利用文字方向、行间距、字符间距、语言模型和版面结构判断哪些区域应合并为一行,哪些应拆成多个词或多行。识别结果也可以反向校验检测:如果一个框内识别出异常长文本、重复字符、置信度低或语言模型困惑度高,触发重新切分。最后用标注集按密集文本、弹幕、字幕、海报、倾斜文字等场景评估 precision、recall、Hmean、识别准确率和端到端字段正确率。
先区分检测框合并、后处理误合并、NMS 过强、识别切行错误和阅读顺序错误。不同环节的修复方式不同,不能只调一个阈值。
密集文字不一定适合普通矩形框。旋转框、多边形、中心线、文本实例 mask 或字符级热力图能更细地表达重叠和倾斜边界。
可以用连通域、腐蚀膨胀、watershed、渐进扩张、Soft-NMS 和 polygon merge/split 规则分离实例。阈值要按场景和尺度验证。
文字通常有方向、行距、字符间距和阅读顺序。利用投影、baseline、文本行方向和邻接关系,可以避免把上下两行或相邻两列错误合并。
识别置信度、语言模型得分、异常长度和字符重复能提示检测区域是否过大或过小。端到端 OCR 应允许识别结果触发重切分或候选重排。
除了检测 Hmean,还要看端到端识别准确率、字段级 F1、密集/倾斜/低清/遮挡场景分层和误检漏检案例,确保分离收益真的传导到识别。
要看业务目标是字符级还是文本行级。如果语义上属于同一词或同一行,不必强拆;如果属于不同实例,可用识别置信度和语言模型比较拆分/合并候选。
只能解决部分重复框问题。若检测模型本身输出的是一个合并区域,NMS 无法拆开;需要改检测表示、训练数据或后处理分割策略。
收集真实密集场景,做合成文本贴图、随机字体、角度、间距和遮挡,加入字符级或 polygon 标注,并保持与生产环境的图像噪声、压缩和分辨率一致。
检测框更漂亮不一定让最终字段更准。OCR 最终服务识别结果,要看字段正确率、行顺序、召回和业务可用性。