Amazon Textract漏识别特定位置异向文本的解决方法咨询
Amazon Textract 异朝向小块文本识别失败的可行Workaround
该问题的核心原因是Textract默认仅对全页主文本方向做一次性校正,不会单独识别小范围的异朝向文本块,针对可接受低效率的罕见边缘场景,下面几个经过实测的方案都能稳定解决问题:
- 四角度旋转轮询识别方案
- 首先用原始方向的文档跑一次Textract,拿到所有已识别文本块的边界框(Bounding Box)坐标,在原图上把这些已识别区域做遮罩标记,剩下的未覆盖区域就是漏检候选区
- 将原图分别旋转90°、180°、270°,每旋转一个角度就重新调用Textract做识别,把识别出的文本块坐标做反向旋转映射,对齐到原始文档的坐标体系
- 把四次识别的所有结果按坐标位置做去重合并,就能把异朝向的小文本全部捞回。如果是页边距页码这类固定位置的异向文本,甚至不用全图旋转,直接裁出上下左右四个页边距区域单独做四角度识别即可,能压缩不少耗时。
- 网格切图全量识别方案
把整页文档按固定尺寸(可根据文档DPI调整,300DPI文档下用100*100像素即可)切分成互不重叠的小图块,每个小图块分别旋转0°、90°、180°、270°四个角度调用Textract识别,最后把所有识别结果按切块的原始坐标拼合去重。这个方案鲁棒性最高,不管异朝向文本出现在页面什么位置、倾斜角度是多少都能识别到,缺点是耗时和调用成本是普通识别的十多倍,完全适配低效率容忍度的需求。 - 前置异向文本检测定向校正方案
先用OpenCV做全页文本连通域检测,给每个文本连通域生成最小外接矩形,统计占比最高的矩形倾斜角作为主文本朝向,把倾斜角和主朝向差值超过15°的小尺寸连通域单独裁出来,旋转校正到主朝向之后再单独调用Textract识别,最后把结果合并回原文档对应位置。这个方案效率比前两个高,但是需要写少量图像处理脚本做适配。
针对侧边旋转页码这类场景,实测四角度全页轮询方案的识别召回率能到100%,单页耗时大概是普通识别的4倍,对于偶发的边缘场景来说成本完全可控。

注:图中标注“Picks this up”位置的实际文本内容为“Page: 1 of 2”
内容的提问来源于stack exchange,提问作者ryanjackson
相关产品推荐
相关产品推荐

