一种医疗体检报告单文字识别及纠正方法与流程

文档序号:20601092发布日期:2020-05-01 21:39阅读:693来源:国知局
一种医疗体检报告单文字识别及纠正方法与流程

本发明涉及文字识别技术领域,更具体的是涉及一种医疗体检报告单文字识别及纠正方法。



背景技术:

随着科学技术的进步,医疗领域也在逐渐走向数字化,许多医疗体检报告单是通过纸质形式进行存储的,这就意味着不同医院之间的患者病例数据是独立的,不利于各医院间的信息交互,因此,如何实现表格文字识别,使得纸质的医疗体检报告单数字化很有必要。

目前,市面上存在一些表格文字识别app,通过透视变换对医疗体检报告单图像进行矫正,再经过相关处理识别出文本框中的文字并输出excel,但是这类app无法定位所有文本框,并且文字识别错误率极高,也并不能有效地按格式将图片表格输入excel中。



技术实现要素:

本发明的目的在于:为了解决现有的表格文字识别app无法定位所有文本框,并且文字识别错误率极高的问题,本发明提供一种医疗体检报告单文字识别及纠正方法。

本发明为了实现上述目的具体采用以下技术方案:

一种医疗体检报告单文字识别及纠正方法,包括:

s1:拍摄医疗体检报告单,对其进行内容提取及透视变换,得到医疗体检报告单图像;

s2:采用psenet技术对医疗体检报告单图像进行文本检测,得到多个第一文本框;

s3:根据每个第一文本框的高宽比对不符合预设高宽比条件的第一文本框进行删除,根据每两第一文本框的横向间距和纵向间距对剩下的第一文本框进行合并,得到多个第二文本框;

s4:根据第二文本框之间的横向距离,将符合预设横向距离的两第二文本框按列合并,得到多个列文本框;

s5:根据预设的行判断条件判断第二文本框的行数,同时,根据预设的列判断条件判断当前第二文本框属于的列文本框,得到第二文本框的列数;

s6:将第二文本框中包含的文字按小图形式进行截图,按顺序保存到同一张大图中,并记录每一小图在大图中的位置;

s7:利用训练好的crnn对大图进行文字识别,得到的识别结果包括文字识别结果和文字检测定位结果,将s6中记录的位置与文字检测定位结果进行比对,将对应的文字识别结果添加到数据表的相应位置,然后将数据表中的文字输入到excel中;

s8:利用nlp技术对excel中的文字进行纠正,得到最终识别报告单。

进一步的,所述s3中,预设高宽比条件为第一文本框的高/宽小于等于2。

进一步的,所述s3中,根据每两第一文本框的横向间距和纵向间距对剩下的第一文本框进行合并,得到第二文本框,具体为:取所有第一文本框的高度的中位数作为一个字节长宽,若两第一文本框的横向间距小于1倍字节长宽并且纵向间距小于0.5倍字节长宽,则合并两第一文本框,得到第二文本框。

进一步的,所述s4中,将符合预设横向距离的两第二文本框按列合并,得到多个列文本框,具体为:若两第二文本框的横向距离小于2.5倍字节长宽,则判断两第二文本框为一列合并为大框,遍历所有的第二文本框,即得到多个列文本框。

进一步的,所述s5具体为:

s5.1:设第二文本框分别为box1,box2,...,boxn,其中n为第二文本框个数,boxn(xn,yn,wn,hn),x和y分别是对应的第二文本框的左上角的横坐标和纵坐标,w和h分别是对应的第二文本框的宽度和高度,将n个第二文本框按纵坐标升序排列;

s5.2:定义每一行的上边界y_top为该行第一个第二文本框的y,每一行的下边界y_bottom为该行第一个第二文本框的y+h,若上边界y_top和下边界y_bottom与下一个第二文本框的y和y+h的差分别小于1.5倍字节长宽,或下一个第二文本框的中心(y+y+h)/2与上边界和下边界的中心(y_top+y_bottom)/2的间距小于0.5倍字节长宽,则判断两第二文本框属于同一行,得到第二文本框的行数;

若判断为不属于同一行,则更新上边界y_top和下边界y_bottom为下一行的第一个第二文本框的y和y+h;

s5.3:若第二文本框在列文本框的右侧且左间距不超过2.5倍字节长宽,则判断该第二文本框属于的该列文本框,得到第二文本框的列数;

s5.4:将第二文本框的行数和列数存储为str格式。

进一步的,所述s7中,将s6中记录的位置与文字检测定位结果进行比对,将对应的文字识别结果添加到数据表的相应位置,具体为:若文字检测定位结果与记录的位置一致,且定位处有文字识别结果,则将文字识别结果添加到dataframe的对应位置中,否则将not_readable添加到dataframe的对应位置中。

进一步的,所述s8具体为:

s8.1:准备数据源,将医疗体检报告单中出现的各类实体名称、检查数据格式和检查结果文本结构化后整理入知识库,所述知识库为三元关系组,包括检查项、关系和数值结果;

s8.2:基于相似度对检测出的实体名称进行纠正;

s8.3:对数值结果进行纠正;

s8.4:基于bert-bilstm-crf神经网络和相似度对结构化后的检查结果文本进行修正,得到最终识别报告单。

进一步的,所述7.2具体为:所述实体名称包括检查项题目,寻找检查项题目,将其与知识库中的各实体名称进行匹配,计算两者的编辑距离,比较相似度,输出相似度最高的匹配结果对检查项题目进行修正。

进一步的,所述s8.3具体为:对于数值结果的数据格式,根据数据格式的特殊字符和数据格式所对应的实体名称与知识库中的数据格式进行匹配;对于数值结果的数字,通过图像比对的方法,将识别出的数字与输入的数字进行图像相似度计算,若相似度低于阈值,则计算该数字与0-9数字之间的相似度,输出最高相似度对应的数字作为结果。

进一步的,所述s8.4具体为:

s8.4.1:准备训练数据,选择一段自然语言文本,其中包括医学实体和实体间的关系,所述关系与知识库的三元关系组相同,并标注将该段自然语言文本中的医学实体和实体间的关系;

s8.4.2:将训练数据通过字符编码方式转换成编码向量,训练bert-bilstm-crf神经网络,实现对自然语言文本的自动医学实体的识别;

s8.4.3:将识别出的医学实体与知识库中的实体名称相匹配,计算编辑距离并比较相似度,输出相似度最高的匹配结果对自然语言文本中的医学实体进行修正;

s8.4.4:基于训练好的bert-bilstm-crf神经网络对结构化后的检查结果文本进行自动医学实体标注,然后通过s8.4.3完成纠正。

本发明的有益效果如下:

1、本发明通过对医疗体检报告单图像进行版面分析,有效地对医疗体检报告单图像的文本框及表格进行分割,使得输出的最终识别报告单与医疗体检报告单图像表格一致,且通过nlp技术进行文字纠正,确保了文字识别正确率,取得了精确的文字识别效果。

附图说明

图1是本发明具体实施方式含有第一文本框的医疗体检报告单图像示意图。

图2是本发明具体实施方式含有第二文本框的医疗体检报告单图像示意图。

图3是本发明具体实施方式含有列文本框的医疗体检报告单图像示意图。

具体实施方式

为了本技术领域的人员更好的理解本发明,下面结合附图和以下实施例对本发明作进一步详细描述。

实施例1

本实施例提供一种医疗体检报告单文字识别及纠正方法,包括:

s1:拍摄医疗体检报告单,对其进行内容提取及透视变换,得到医疗体检报告单图像,具体的:

拍摄具有各种背景信息的原始医疗体检报告单照片,对原始医疗体检报告单照片的内容区域标记为1,背景区域标记为0,利用deeplab-v3plus+crf技术训练语义分割神经网络,使得语义分割神经网络能够准确提取原始医疗体检报告单照片内容区域,利用语义分割神经网络分割出原始医疗体检报告单的内容区域后,通过分割出的内容区域的位置信息做透视变换,对内容区域进行矫正,将倾斜的内容区域摆正,并且将倾斜变形的文字矫正,得到医疗体检报告单图像;

s2:采用psenet技术对医疗体检报告单图像进行文本检测,得到如图1所示的多个第一文本框;

s3:根据每个第一文本框的高宽比对不符合预设高宽比条件的第一文本框进行删除,由于一个文字的高宽比接近1:1且表格中的文字皆是横向排列的,因此本实施例中预设高宽比条件为第一文本框的高/宽小于等于2,根据每两第一文本框的横向间距和纵向间距对剩下的第一文本框进行合并,得到如图2所示的多个第二文本框,具体的:

由于中位数受极大极小值的影响较小,因为为了确保方法的稳定性和普适性,本实施例取所有第一文本框的高度的中位数作为一个字节长宽,若两第一文本框的横向间距小于1倍字节长宽并且纵向间距小于0.5倍字节长宽,则合并两第一文本框,得到第二文本框;

s4:根据第二文本框之间的横向距离,将符合预设横向距离的两第二文本框按列合并,得到如图3所示的多个列文本框,具体的:若两第二文本框的横向距离小于2.5倍字节长宽,则判断两第二文本框为一列合并为大框,遍历所有的第二文本框,即得到多个列文本框;

s5:根据预设的行判断条件判断第二文本框的行数,同时,根据预设的列判断条件判断当前第二文本框属于的列文本框,得到第二文本框的列数,具体的:

s5.1:设第二文本框分别为box1,box2,...,boxn,其中n为第二文本框个数,boxn(xn,yn,wn,hn),x和y分别是对应的第二文本框的左上角的横坐标和纵坐标,w和h分别是对应的第二文本框的宽度和高度,将n个第二文本框按纵坐标升序排列;

s5.2:定义每一行的上边界y_top为该行第一个第二文本框的y,每一行的下边界y_bottom为该行第一个第二文本框的y+h,若上边界y_top和下边界y_bottom与下一个第二文本框的y和y+h的差分别小于1.5倍字节长宽,或下一个第二文本框的中心(y+y+h)/2与上边界和下边界的中心(y_top+y_bottom)/2的间距小于0.5倍字节长宽,则判断两第二文本框属于同一行,得到第二文本框的行数;

若判断为不属于同一行,则更新上边界y_top和下边界y_bottom为下一行的第一个第二文本框的y和y+h;

s5.3:若第二文本框在列文本框的右侧且左间距不超过2.5倍字节长宽,则判断该第二文本框属于的该列文本框,得到第二文本框的列数;

s5.4:将第二文本框的行数和列数存储为str格式,如“1405”代表第十五行第六列;

s6:将第二文本框中包含的文字按小图形式进行截图,按顺序保存到同一张大图中,本实施例中该大图的大小为4096*4096,并记录每一小图在大图中的位置,此处所记录的位置的表达方式与s5.1中第二文本框的表达方式一致;

s7:利用训练好的crnn对大图进行文字识别,得到的识别结果包括文字识别结果和文字检测定位结果,将s6中记录的位置与文字检测定位结果进行比对,将对应的文字识别结果添加到数据表的相应位置,然后将数据表中的文字输入到excel中,具体的:

若文字检测定位结果与记录的位置一致,且定位处有文字识别结果,则将文字识别结果添加到dataframe的对应位置中,否则将not_readable添加到dataframe的对应位置中;

s8:利用nlp技术对excel中的文字进行纠正,得到如表一所示的最终识别报告单;

所述s8具体为:

s8.1:准备数据源,将医疗体检报告单中出现的各类实体名称(如“淋巴细胞百分率”、“中间细胞百分值”等体检表格中的题目,每一个检查项都是一个实体名称;体检报告里医生总结病情的文段中也会出现医疗相关名词,这些都是实体名称)、检查数据格式和检查结果文本结构化后整理入知识库,所述知识库为三元关系组,包括检查项、关系和数值结果,如:血小板计数(检查项)-检查结果(关系)-190(数值结果);血液分析(检查项)-包含(关系)-白细胞计数(检查项);

s8.2:基于相似度对检测出的实体名称进行纠正,所述实体名称包括检查项题目,寻找检查项题目,将其与知识库中的各实体名称进行匹配,计算两者的编辑距离,比较相似度,编辑距离最小的相似度最高,输出相似度最高的匹配结果对检查项题目进行修正,所述编辑距离是由其中一个词转换为另一个词所需要的最少单字符编辑操作次数;

s8.3:对数值结果进行纠正,对于数值结果的数据格式,根据数据格式的特殊字符和数据格式所对应的实体名称与知识库中的数据格式进行匹配,如“g/l”被识别成“g|l”;在识别结果表格中找到它所对应的题目为横:血红蛋白,竖:单位;根据知识库中的三元关系组知道血红蛋白的单位格式应该为“g/l”,对其进行纠正;

对于数值结果的数字,通过图像比对的方法,将识别出的数字与输入的数字进行图像相似度计算,若相似度低于阈值,则计算该数字与0-9数字之间的相似度,输出最高相似度对应的数字作为结果;

s8.4:基于bert-bilstm-crf神经网络和相似度对结构化后的检查结果文本进行修正,得到最终识别报告单,具体为:

s8.4.1:准备训练数据,选择一段自然语言文本,其中包括医学实体和实体间的关系,所述关系与知识库的三元关系组相同,并标注将该段自然语言文本中的医学实体和实体间的关系,如:“xxx血脂过高,要注意饮食清淡”中标注出“血脂过高(症状)-注意事项(关系)-饮食清淡(生活方式)”;

s8.4.2:将训练数据通过字符编码方式转换成编码向量,训练bert-bilstm-crf神经网络,实现对自然语言文本的自动医学实体的识别;

s8.4.3:将识别出的医学实体与知识库中的实体名称相匹配,计算编辑距离并比较相似度,输出相似度最高的匹配结果对自然语言文本中的医学实体进行修正;

s8.4.4:基于训练好的bert-bilstm-crf神经网络对结构化后的检查结果文本进行自动医学实体标注,然后通过s8.4.3完成纠正。

表一

值得注意的是,本实施例中对于高宽比的设定、字节长宽、横向间距、纵向间距以及横向距离等超参数的选择,均是可以根据实际情况进行调整的,本实施例仅是提供了其中一种参考选择,并不用以限制本发明。

以上所述,仅为本发明的较佳实施例,并不用以限制本发明,本发明的专利保护范围以权利要求书为准,凡是运用本发明的说明书及附图内容所作的等同结构变化,同理均应包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1