第一步:把图片摆正
倾斜的文字会让识别引擎的行分割出错,把一行拆成两行,或者把相邻两行的字混在一起。手持拍摄的文档几乎一定有轻微倾斜,识别前先做旋转校正,把文字基线和水平方向对齐。
判断是否摆正有个简单方法:看文本框的上下边缘,如果与水平线平行,说明已经摆正。竖排文字则要看左右边缘。
第二步:把对比度提上来
光照不均的文档照片,往往一部分偏亮一部分偏暗。这种情况下二值化会丢掉暗部的字。正确做法是先用自适应对比度增强,让整张图的明暗更均匀,再去考虑是否转为灰度。
- 优先做对比度均匀化,而不是直接调亮度
- 灰度图通常比彩色图识别更稳定
- 背景有底纹或水印时,适当提高对比度能弱化干扰
第三步:把噪点去掉
照片上的噪点、扫描时的灰尘点、传真留下的杂线,都会被识别引擎当成笔画处理,变成莫名其妙的字符。轻度去噪能显著减少这类错误,但要注意去噪强度过大也会把细笔画一起抹掉。
对于扫描件,还可以用去背景色的方式,把泛黄的底色去掉,只留下黑色文字,识别率通常会明显提升。
第四步:把字号放大
识别引擎对字高有一个舒适区间。字太小时,笔画之间的差异不足以被区分,「日」和「目」这类形近字就容易混淆。把图片等比例放大到字高足够清晰,识别率会提高。
- 放大时使用平滑插值,避免出现锯齿边缘
- 放大后文件体积会增大,注意工具的上传限制
- 不要通过裁剪再拉伸的方式放大局部,会变形
识别之后必须做的事:校对
无论预处理做得多好,都建议做一轮校对。校对的重点不是通读全文,而是定位高风险字符:数字、小数点、金额、日期、专有名词和英文缩写。这些地方出错代价最大,也最容易被忽略。
- 数字与字母混排处重点核对,例如 0 与 O、1 与 l
- 金额和日期逐个确认,不要依赖视觉印象
- 人名与机构名建议对照原文逐一比对