OCR主要分为三个步骤:检测、分割、文字识别。其中文字识别无论是英文还是中文相对比较成熟。只要检测到位,标准的印刷体识别率还是非常高的。
文书OCR检测主要有文字检测和表格检测。文本段落基于行的检测通过DBNet加人为后期纠正能够获得非常高的准确率(此部分以后再写),反而是表格的检测花费了很多时间,网上常规的方法:先对图像进行二值化,然后使用霍夫变换,检测出其中的直线,并在直线中,找到围成一个矩形的区域,将这块区域提取出来就好了。但是难点在于印刷或打印表格线条的过程中清晰度不高,线条粗细和清晰度不一,再次扫描后更加不清晰,同时有些表格里面的文字是多行的,情况非常复杂,必须一个个方框切割下来进行文字识别。例如下面整个图片,表格线条粗细不一,清晰度欠佳,采用霍夫变换直线检测准确率很低,经过多次实验,我把目前稳定性和准确率最高的方法记录下来。这个算法灵活运用了自适应阀值二值化、腐蚀和二次膨胀,让表格乖乖的现形了
网上随便下载的一个原图
(注意:此图有点斜,为了后面更高的检测和文字识别率,需要先摆正,此文不讲了)
第一步,直接以灰度图读入图片
img=cv2.imread("D:\\Python37\\code\\timg.jpg",0)
第二步是关键,自适应阈值二值化处理
binary = cv2.adaptiveThreshold(~img,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,7, -2)
自适应阈值&#x