如何快速应对井喷下的 OCR 需求?
扫一扫就能识别文字,这是近年来出现在很多应用中的新功能。比如,输入身份证信息时,直接用手机摄像头扫一扫,软件就能提取身份证上的相关信息。这里用到的技术正是 OCR-光学字符识别技术(Optical Character Recognition)。其利用机器将图像中手写体或印刷体的文本转换为计算机可以直接处理的格式。作为计算机视觉领域的重要分支,OCR 典型应用是通过图像文字识别实现信息录入。
在实际 OCR 相关的能力场景中,偏向模板类(固定证件和票据等)的文字识别仍是需求较为旺盛的能力场景。目前项目实施过程中仍有较多问题影响整体 OCR 识别的效率和准确率,导致项目实施效果受到影响。主要问题和难点如下:
问题 1:
项目实施过程中,需求提出方往往提供不了较大规模和较高质量的样本,而固定模板往往需要进行针对性训练,小样本数据量无法支撑深度网络模型训练。
问题 2:
模板类字段检测目前主要采用将目标字段转化为图像目标检测的方式,检测后再进行文字识别或利用正则规则进行简单纠错,图片目标检测方式对图片旋转等情况的检测鲁棒性不佳,极其容易出现漏检多检的情况。正则规则需为不同场景编写匹配规则,难以覆盖所有场景情况,导致准确性不高的同时也拉长了项目周期。
问题 3:
基于小样本情况下图文识别容易存在泛化能力不好的问题,无法覆盖兼容生僻字,字体多样、字号不一、变形倾斜、过亮过暗等问题。当出现新样式时,重新训练成本高。
问题 4:
背景噪声对识别准确率影响较大,需通过生成不同背景下的样本来增加对背景的鲁棒性。
在技术落地的基础上,更多的是寻求在实际场景的低误差应用,以及如何高速高效保质保量地应对。
过去:兵来将挡,水来土掩
纯定制的形式,根据各个项目的需求,进行各类样本收集,样本收集阶段需充分考虑各种不同模板之间的差异,针对每类模板进行样本收集、标注和开发。这种方式在有限的场景下依然是一种可行的方式。随着需求的日趋增加,该方式存在的问题日渐暴露。
以某项目中的房产证文字识别为例,调研后发现该项目存在诸多难题:
该城市房产证样式存在十几种,新证老证间无论检测内容还是内容坐落位置均存在较大差异,需根据不同房产证类型逐一标注和训练。开发周期长,人力耗费大。
对于部分旧证,客户侧无法提供足够量的样本,无法达到训练所需数量。
使用者为房产从业人员,无法进行一一培训,拍摄的房产证图片质量不可控,倾斜、角度旋转和背景杂乱等情况均存在,对文字识别产生极大的干扰。
地址过长,存在跨行,单单凭借文字识别,准确率不甚理想。
现在:多措并举、多策并用
样本生成器,破“小样本”之局
基于深度学习理论的模型训练对数据量要求较高。实际场景中由于业务局限或数据安全问题导致很难搜集到足够的训练样本。基于少量训练样本训练的模型通常达不到很好的泛化能力。
构建标准化样本生成器:通过项目中少量真实样本生成大规模业务样本数据集,辅助模型训练。
(对应上面第一张图)通过项目整理不同字段文本的业务规则,收集海量语料数据。例如:公司机构名字段、地址字段、人名字段和时间期限字段等。
(对应上面第二张图)对真实图片使用 GAN 方法去除标注区域文字得到模板图片,再结合语料库中的文本数据生成文本图片,进行亮度、对比度和形状的变换后,合成到模板图片中,从而生成样本。
(对应上面第三张图)生成贴近业务场景的大量样本,弥补样本不足的问题。
底层能力重构优化,稳 OCR 根基
1 四方向分类
在实际识别中,由于拍摄设备的不规范,图片拍摄角度存在 90°、180°、270°旋转的情况,导致后续流程无法正常识别。
基于 efficientnet 构建轻量级图片四方向分类器,矫正图片的四方向角度,最终输出正向的图片。
2 关键内容检测
一般模板类 OCR 识别流程中,文字检测通常使用通用文字检测,会提取图片上大量无关的内容区域,并且检测区域通常存在截断。传统方法对识别内容进行分类时需要结合文字识别结果,编写大量规则进行分类。故针对规则难以全面覆盖真实情况,可改造文本检测算法 DBNet,在文本检测阶段同时对检测结果分类,分类对文字识别结果、规则化的依赖重新训练 DBNet 模型,只检测图片中的关键内容,减少无效检测结果的干扰,同时降低检测结果截断的情况。
3 文字识别
通用文字识别字典覆盖汉字不够全面,在无法识别的生僻字、形近字和字体扭曲的情况下,识别准确率低,容易误识别。
数据提升
构建新识别字典,涵盖数字、英文、汉字和符号,共 6600 多个字符,覆盖常见汉字及出现频率较高的生僻字。
基于句子生成百万级数据优化文字识别模型,提升基础文字识别模型的识别效果。
模型提升
训练过程基于 CRNN 文字识别方法,引入 center loss 提升形近字识别准确率,引入 focal loss 专注困难样本的训练,提升生僻字、易错字的识别准确率。
引入 NLP 能力,携文本之手
1.针对单场景模板数≤3 的情况,引入文本纠错流程,提升 OCR 识别准确率
针对识别后的结果,引入文本纠错能力,根据字段实体类型的不同纠错逻辑,常见的纠错类型包括常识性纠错、语言模型纠错和知识引入纠错。
常识性纠错即通过引入常识性知识对错误的文本进行纠正,如统一信用代码在 ocr 识别后带有汉字;语言模型纠错则通过建立语料库并将语料数据进行清洗得到高质量语料库,利用 N-Gram 语言模型对长句子进行语病判断,例如营业执照识别场景中,采用语言模型对经营范围字段进行纠错;知识引入纠错是指通过建立先验知识库,对特定的字段进行有参照性的纠正,如地址字段中“清运市”会依据《中国行政区域对照表》修正为“清远市”。
2.针对单场景模板数≥3 的情况,通过实体识别、文本分类等 NLP 能力,对于单场景多模板的 OCR 需求进行结构化(例如名片、发票等),减少图像多模板标注的工作量
总体流程包括实体提取、文本纠错和实体校验三个步骤。实体提取模块结合文本分类模型和命名实体识别模型,对 OCR 识别的单行文本进行实体提取并结构化存储;文本纠错模块会识别文本中有错误的片段,进行错误提示并给出正确的建议文本内容;实体校验可对拆分的部分进行合并,对错误合并的实体进行拆分,起到二次验证优化的效果。
采用该架构仅需对实体属性和实体类型进行标注,工作量为单模板 2 人/周(以营业执照 200 张图片标注为例),且单场景只需进行一次标注,实体类型可跨模板跨场景沉淀复用。
成效
以营业执照为例,使用了 12 个模板生成 1800 个样本进行训练,通过地址纠错能力,基于现场收集的 500 张真实样本进行验证,识别统一社会信息代码、名称、类型、住所、法定代理人、注册资本、成立日期、营业期限。竖版营业执照全图识别准确率从 0.6 提升到 0.9303(不含经营范围)。
版权声明: 本文为 InfoQ 作者【鲸品堂】的原创文章。
原文链接:【http://xie.infoq.cn/article/f789dc3c415b1dcc3bbfdc951】。文章转载请联系作者。
评论