一种医疗票据图像数据结构化方法及系统

2023-05-14 18:57黄叶珏褚一平
计算机时代 2023年5期

黄叶珏 褚一平

摘  要: 提出一种医疗票据图像数据结构化方法,针对医疗票据图像,设计了红章去除、文字定位、文字识别和费用明细项目数据结构化等方法。在此基础上,设计了一套医保零星报销系统,实现医疗票据从图像扫描、OCR识别、医保目录匹配到数据入库自动化操作。经多个省市使用,累计处理10万份票据,使用该系统后报销票据每份处理时间由原先的2小时缩短到15分钟。

关键词: 医疗票据图像; 红章去除; 文字定位; 文字识别

中图分类号:TP391          文献标识码:A    文章编号:1006-8228(2023)05-99-04

Data structuring method and system for medical bill image

Huang Yejue1, Chu Yiping2

(1. Zhejiang Institute of Economics and Trade, Hangzhou, Zhejiang 310018, China; 2. Hangzhou Mass Information Technology Co., Ltd)

Abstract: In this paper, we propose a medical bill image data structuring method, which is designed for medical bill images, including red stamp removal, character positioning, character recognition and expense item data structuring. Based on this, a medical insurance sporadic reimbursement system is designed to realize automated operation of medical bills such as image scanning, OCR recognition, medical insurance catalog matching and data warehousing. It has been used in many provinces and cities, and 100,000 bills have been processed in total. The processing time of each reimbursement bill has been shortened from 2 hours to 15 minutes after using this system.

Key words: medical bill image; red stamp removal; character positioning; character recognition

0 引言

我国在跨地区就医的事情上,要实现异地医保直接结算还需要走较长的路。现今,异地就医的医保结算流程由患者先提交医保经办部门相关报销凭证,医保经办人员人工审核费用明细项目,确定各项报销比例,并按报销大类名称录入到系统中。由于报销时费用明细众多,花费时间巨大,手工计算又容易产生错误,所以医保主管部门开始要求把费用明细项目也录入到系统中,把报销流程制度化、系统化和透明化,以减少出错概率。但是如此多的费用明细录入到系统中,目前的人手根本無法用手工完成。

光学字符识别(OCR)技术是图像处理领域中一项历史悠久的技术,近几年随着深度学习技术的发展,OCR技术获得了长足的进步,不但识别准确率大幅提高,而且对各种环境的应用能力也大大增强。采用OCR技术替代人工对医疗票据图像中的费用明细进行录入,可以大大减轻工作量,提高录入效率。由于医疗票据图像存在一定的特殊性,采用通用的OCR引擎无法取得高识别准确率。本文提出了一种医疗票据图像数据结构化方法,针对医疗票据图像进行专门的优化,实现对医疗票据图像数据的检测、识别和版面结构化,使得结构化的费用明细数据项可以直接入库。

本文提出的医疗票据图像数据结构化方法的贡献如下:①针对医疗票据图像中存在印章,影响文字的检测和识别效果,提出了一种红章去除方法;②针对医疗票据中大量存在容易漏检的短数字问题,提出一种改进的方法;③针对通过OCR不能很好识别医疗票据中医学术语的问题,通过构造专门的数据集对模型进行微调;④针对医疗票据数据,提出了一种版面结构化方法,提取费用明细中项目名称、数量、单价和金额这些结构化的数据。

1 医疗票据图像数据结构化方法

医疗票据图像数据的结构化方法由图像预处理、文字检测、文字识别和费用明细结构化四个部分组成。

1.1 医疗票据图像中的红章去除方法

很多医疗票据都有红章,而且这些红章一般会盖在文字上。如果不对医疗票据图像中的红章进行处理,会影响OCR识别效果。医疗票据图像中文字一般呈黑色或者深色,而红章是鲜艳的红色。观察图像红色通道上的直方图可以发现,图像中的常规文字信息与红章信息分布直方图的两端,所以可以通过分割的方法把红章去除。令[H]为医疗票据图像红色通道的直方图,对应的累积直方图可以通过下式计算:

[Γi=Γi-1+Hi]  ⑴

其中,[Γ0=0],[0≤i≤255]。接着可以在累积直方图[Γ]上搜索分割的阈值:

[th=argmin Γi+1-Γi-1]  ⑵

得到分割阈值[th]之后,则逐像素扫描医疗票据图像,如果当前像素的红色分量值大于阈值[th],则令该像素的三通道分量都为255。处理完所有像素之后,即可得到去除红章的医疗票据图像(图1)。

1.2 医疗票据图像文字定位方法

医疗票据中,版面上会出现很多单个字符,比如数量那一列中,存在很多单独的“1”。考虑到标注成本,目前通用的OCR商业引擎都采用单词级别文字定位方法[1,2]。但是这些单词级别文字定位方法对医疗票据中单独数字的漏检率非常高。为了解决这个问题,本文设计了一种基于字符级别的文字定位方法。受字符文字定位方法CRAFT算法[3]的启发,采用高斯热力图来表示单个字符的标签。为了提高运行速度采用MobileNetV3网络[4]作为模型的编码网络,解码网络由4层解码模块组成,每层解码模块先对上一层解码模块的输出作线性插值进行上采样,再和同一层的编码网络的输出进行通道合并,再把合并的结果输入到由两个卷积层构成的卷积模块中,其输出作为该层解码模块的输出。模型采用平方损失函数进行训练。

由于医疗票据图像中单个字符在图像尺寸上的占比很小,精确标注图像中的每一个字符给标注人员带来很大麻烦。为了解决该问题,编写脚本工具把医疗票据图像等分成16个图像块,标注人员在每个图像块上对每个字符进行标注,标注完成之后又通过脚本代码把16块的标注合成到一起。复核人员通过脚本工具把标注结果生成高斯热力图绘制到医疗票据图像全图上,以检查标注是否准确。大约标注了3万张各类医疗票据图像,利用这些数据对模型进行训练,获得了预期的效果(图2)。

1.3 医疗票据图像文字识别方法

由于各地医院打印设备各不相同,醫疗票据图像上的文字质量参差不齐,而且费用明细项目中存在很多医学药学专用术语,通用OCR的识别效果不是很理想。本文的文字识别模型采用典型的CRNN算法[5],主干网络采用Resnet18网络结构[6]。先在通用文字识别数据集上进行训练,直至收敛,得到通用文字识别模型[ma]。

收集大约20万张不同类型的医疗票据图像,先用本文的文字定位方法进行文字定位,根据文字的外接包围盒把文字切成图像块,并等比缩放到高度为32的图像块中。把该图像块输入到文字识别模型[ma],得到识别结果。根据识别结果中判断每个字符的识别置信度是否大于85%,如果是,则把该图像块和对应识别结果归入数据集[A]中;否则把该图像块归入数据集[B]中。用人工对数据集[B]进行标注,得到数据集[C],合并数据集[A]和数据集[C],得到最终的训练数据集[D]。

冻结识别模型[ma]的主干网络参数,在训练数据集[D]上对识别模型[ma]以较小的学习率进行微调,直至收敛,得到医疗票据图像文字识别[mb]。

1.4 医疗票据图像数据结构化方法

医疗票据图像数据结构化需要提取图像中每项费用的“项目名称”、“单价”、“数量”和“金额”,以便后继的医保目录匹配和报销比例的计算。通过观察可以发现,“项目名称”以中文字符为主要构成,而后三项以字符为0~9的数字、小数点和逗号分隔符构成。构建一张与医疗票据图像同大小的字符类型掩码图像[M],并把所有像素值初始化为0。如图3,根据文字识别结果的UTF-8编码判断字符类型,如果属于中文,则在掩码图像[M]中把该字符外接包围内的所有像素值置为128;如果字符属于中文0~9的数字、小数点或者逗号,则在掩码图像[M]中把该字符外接包围内的所有像素值置为255。

对掩码图像[M]作垂直投影,统计每列中像素值为128的像素个数,得到中文像素直方图[HC]。计算直方图[HC]极大值[mv]以及其下标[mx],令搜索阈值[t=mv/5],从下标[mx]开始分别向两端搜索直方图[HC],当[HC]的元素值小于阈值[t]时停止,则可以得到左边界的下标[hl]和右边界的下标[hr]。区间[[hl,hr]]即为“项目名称”的左右边界,在识别的文字内容中,搜索该区间内的关键字“项目名称”,可以得到上边界。按类似的方式,可以得到“单价”、“数量”和“金额”的左右边界和上边界。

对掩码图像[M]作水平投影,统计每行中像素值不为0的像素个数,得到中文像素直方图[HZ]。按阈值[t=5],可以把每行文字切分开来,结合上一步切分得到的列边界结果,就可以逐行提取“项目名称”、“单价”、“数量”和“金额”的内容,实现数据结构化。

2 医疗票据图像数据结构化应用系统

基于医疗票据图像数据结构化方法为核心,结合当前医保经办部门的需求,设计开发了一套医保零星报销系统。该系统由业务受理、扫描票据、票据识别、结构化数据、医保目录匹配、人工审核和生成报销清单等7个业务流程模块组成。系统可以实现从医保核心业务系统中接受患者报销材料开始,辅助经办人员完成医疗票据的扫描、自动实现医疗票据识别和数据结构化、自动实现医保目录匹配和报销费用的清算、辅助审核人员对结果审核,最终生成报销清单,上传到医保核心业务系统中。

该系统已在浙江、广西、山西、湖北、黑龙江、四川、陕西和天津等省市中使用(试用),据后台数统计,至今年以来已完成医疗票据约10万份。据山西某地市医保经办人员统计,使用该系统后每份报销单的处理时间由2小时降低到15分钟,大大提高了业务处理的效率。报销系统界面如图4所示。

3 结论

本文提出了一种医疗票据图像结构化方法,针对医疗票据图像的特点,分别设计了医疗票据图像预处理模块、文字定位模块、文字识别模块和数据结构化模块。根据异地医保报销的现状,设计了一套医保零星报销系统,把本文的方法应用于该系统中,经多个省市使用(试用)反馈,取得了良好效果,大大节省了报销处理时间。

虽然系统已经取得了很好结果,但目前设计的流程是处于医疗票据图像质量可控的环境下,即医疗票据图像要求经办人员使用高速扫描仪进行扫描获得,这就要求报销人报销时需跑一次经办窗口,只能实现“最多跑一次”的目标。下一步,需要对医疗票据图像质量检测和多视角校正方法进行研究,以便报销人员可以通过手机拍摄医疗票据图像数据并提交,以实现“零跑路”的目标。

參考文献(References):

[1] Minghui Liao, Zhaoyi Wan, Cong Yao, et al. Real-time

Scene Text Detection with Differentiable Binarization.AAAI,2020

[2] Liao, Minghui and Zou, Zhisheng and Wan, Zhaoyi and

Yao, Cong and Bai.Real-Time Scene Text Detection with Differentiable Binarization and Adaptive Scale Fusion.IEEE Transactions on Pattern Analysis and Machine Intelligence,2022

[3] Youngmin Baek, Bado Lee, Dongyoon Han, et al.

Character region awareness for text detection. IEEE/CVF Conference on Computer Vision and Pattern Recognition,2019

[4] Andrew Howard, Mark Sandler, Grace Chu, et al.

Searching for MobileNetV3. IEEE/CVF International Conference on Computer Vision (ICCV),2019

[5] Baoguang Shi, Xiang Bai, Cong Yao. An End-to-End

Trainable Neural Network for Image-Based Sequence Recognition and Its Application to Scene Text Recognition. IEEE Transactions on Pattern Analysis and Machine Intelligence,2017,39(11):2298-2304

[6] Kaiming He, Xiangyu Zhang, Shaoqing Ren, et al.

Deep Residual Learning for Image Recognition.IEEE Conference on Computer Vision and Pattern Recognition (CVPR),2016