文字扫描图像去噪脚本: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_{} \;

注意结尾的 \; 可不能少哦。


  1. 在 Fred 的网站 Fred's ImageMagick Scripts 里,他整理了大量常用图像处理任务的脚本。

标签: tricks, imagemagick

赞 (10)

添加新评论