文字扫描图像去噪脚本:textcleaner
扫描文档得到的图像中一般会有灰色背景,阅读不方便,打印也费墨水。有什么方法可以去掉背景,只留下文字呢? ImageMagick 作为图像处理的瑞士军刀,背景去噪那是小意思,只是它的选项实在是太多了,让人无所适从。别着急,Fred1 贴心地写了一个包装脚本 textcleaner,专门处理文字图像去噪。
用法
USAGE: textcleaner [-r rotate] [-l layout] [-c cropoff] [-g] [-e enhance ] [-f filtersize] [-o offset] [-u] [-t threshold] [-s sharpamt] [-s saturation] [-a adaptblur] [-T] [-p padamt] [-b bgcolor] infile outfile
USAGE: textcleaner [-help]
当然前提是你要安装了 ImageMagick ,并下载了 textcleaner 咯。
命令参数
参数仍然不少啊,每次用的时候都得重新查文档。为了方便以后快速查找,我整理了主要参数用法。
-g
(grayscale) 先转成灰度再处理。-f filtersize
用于清除背景的平滑尺度。取值越小越好,但必须大于文字的粗细。值太大了可能会损失文字。默认是15。-o offset
过滤背景的百分比。取值太小可能会留下较多噪点;值越大,过滤得越干净,但可能会让文字变得不连续。默认是5。-t threshold
文本平滑阈值。取值范围为 0-100。以50为界:小值平滑/加粗文本,大值削弱文本,可能会让文字变得不连续。-s sharp_amount
锐化,单位是像素。应该用小值,推荐值为 1。-u
(unrotate) 自动校正旋转,注意无法校正超过5度的偏移。-r rotate
-l layout
-c crop_offset
-e enhance
先增强亮度再处理,可选:none,stretch,normalize。默认值是 stretch。一般不用特意指定。-S saturation
文字颜色饱和度。-a adapt_blur
自适应模糊。-T
(trim) 裁剪多余空白。-p pad_amount
边框大小,单位是像素。-b bgcolor
想要的背景色,默认值是 white。
常用参数做了加粗处理,括号里的英文是用于理解参数缩写的来历,不是要填的参数。
以上主要根据我对文档的个人理解写的,不对准确性作担保 :D
例子
可以去 textcleaner 的页面查看例子。具体使用时需要根据自己的情况来调整参数。
比如,我参考网上的代码运行以下命令
textcleaner -g -f 25 -o 10 -s 1 a.jpg b.jpg
发现文字被损得太严重,笔划都不连续了。将 offset
参数减小到 3 再试
textcleaner -g -f 25 -o 3 -s 1 a.jpg b.jpg
文字效果就好多了。当然,同时也保留了更多噪点。
批量处理
利用 find
命令可以批量处理
find *.jpg -exec textcleaner -g -f 25 -o 3 -s 1 {} cleaned_{} \;
注意结尾的 \;
可不能少哦。
- 在 Fred 的网站 Fred's ImageMagick Scripts 里,他整理了大量常用图像处理任务的脚本。 ↩
- 上一篇: linux 下常用 pdf 处理工具
- 下一篇: Python 图像处理