本博客的图片均来自百度图片的搜索结果.
讲解的demo图片.
需求:结构化医疗数据, 比如病例,入院记录等的信息.输出一个字典类型的key-value信息.
解决方案:
- 图像的矫正
目前没找到太好的开源或者api接口来解决这个.
https://cloud.tencent.com/product/tie
腾讯的方案:
可以看到校正后图像依然倾斜.对于非刚性形变没什么太好解决思路.
自己目前的一个方案:
先进行ocr拿到每一个识别结果的多边形, 然后我们分别计算每一个倾斜角.进行聚类操作, 得到纸张每一个局部的形变情况,局部用仿射变换都变回正常矩形,再拼接每一个部分. - 图像的ocr
-
https://cloud.tencent.com/product/smart-ocr
这个接口很智能可以结构化数据.但是不能自动做图像矫正.后续可以持续关注.目前最好的效果.可以看到腾讯的这个ocr自动结构化的技术非常领先.非常推荐项目中大量测试一下.可以注意到, 他能识别表格信息, 然后分成每一条.表格1, 表格2....然后里面各个字段都写的很清楚.
-
https://cloud.tencent.com/product/ocr
里面的印刷体高精度版本.
可以看到识别结果返回一个多边形的框和文字结果.
后续需要自己进行结构化处理代码的视线. 但是识别精度比1里面要高许多, 1里面有漏检测的情况,高精度基本都检测到了.官方写的百分之99识别率.
-
- 自己进行结构化数据的思路:
如果使用2.2的方案.那么需要自己在2.2基础上来做结构化数据的代码. 有如下思路:
假设我们可以矫正准图片, 那么我们对图像做一个目标检测.识别他的表格里面的水平竖直切割线.所以在切割线内的信息.我们当做表格信息. 切割线以外的作为非表格信息.表格信息的每一条数据一定是表头的列作为key, 表内数据作为value.只需要切割线的最上一行的识别结果作为key即可.其他作为value. 非表格的信息,一定是他的两个key,value部分距离很近.并且里面有大量的冒号作为keyvalue的提示.
其实识别表格的分割线可以cv2.hopf直线,或者一个yolo的目标检测任务. - 以上介绍了腾讯的三个接口,最好是都买下,然后分别进行大规模数据测试.看看那种方案最适合.