2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 模仿全能扫描王实现文档和证件扫描

模仿全能扫描王实现文档和证件扫描

时间:2022-08-31 11:17:42

相关推荐

模仿全能扫描王实现文档和证件扫描

工作中常常会用到扫描全能王这个工具,对于少量的文档电子化管理实在是太方便,并且对于商务人士来说文件的管理、打印、移动办公都是非常有用。

因为对图像处理有一定的了解和实际操作,所以在想扫描王的一些扫描功能是否可以自己实现,参考网上部分资料后搭建了一个 简单的文档扫描系统。

扫描王实现流程:

1 文档定位

文档定位和本人前面一个车牌识别的定位功能大同小异,对于文件扫描一般我们会手动调整一个比较好的位置,所以背景相对来说不会特别复杂。

主要步骤如下:

1、 图片尺寸变换,将图片缩小到一定的尺寸,方便界面显示;

2、将灰度化的图片进行滤波处理,我这里采用的是中值滤波;

3、直接将图片进行二值化处理;

4、图像闭运算;

5、Candy边缘检测;

6、查找轮廓;

7、根据轮廓的大小排序;

8、判断轮廓是否是矩形、轮廓的面积大小、轮廓的周长来定位文档。

2 仿射变换进行文档校正

计算查找到的轮廓四个边的长度,选取长、宽中最大值作为校正的长宽;然后计算旋转矩阵;通过旋转矩阵将图像进行校正变换。

3 图像增强处理

扫描全能王中的扫描功能不是将图片直接进行二值化处理,而是对色彩进行增强和锐化,这样背景中的白、浅黄、灰色等会变成白色,红色、蓝色等文档本身的色彩可以一定程度的保留,在身份证扫描、合同扫描的时候非常有必要。

参考图片增强方式:

python实现图像增强

PIL模块中的ImageEnhance

常用的图像增强方式

在此经过试验采用增强代码如下:

out = 1.5 * input_image #原图像*1.5# 进行数据截断,大于255的值截断为255out[out > 255] = 255# 数据类型转换out = np.around(out)out = out.astype(np.uint8)

4 将原图和增强图片进行显示对比

可以将原图、增强后图片、灰度图、二值化图片显示在一个界面,进行效果对比。

总结:本人搭建的扫描文档功能比较简单,主要是针对图像增强这一块的处理不是简单的二值化,但是在实际测试的过程中发现APP的识别、裁剪、定位、增强等效果都好很多,并且具有较强的泛化性能。

我实现的功能主要有以下几个问题:

1、文档自动定位功能受背景影响比较大,如果是白底白色文档的情况难以自动找到文档的轮廓;

2、背景色比较杂乱的时候简单的形态学处理比较难以区分边界,导致无法定位;

3、图片增强功能的效果鲁棒性还很欠缺,对于只有黑白文字的文档来说增强效果较好,但是对于证件照有反光和颜色深浅不一的情况容易出现过度增强,导致失真。

4、简单的二值化图像会导致文件中黑色背景过多,将原文件内容覆盖。

因此后续还需要对图像处理的算法增强,使应用有很强的泛化性能。

最后附上我的项目地址github,希望指正并完善,谢谢!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。