使用 ImageMagick 修复扫描图像

使用这款开源工具,即使批量处理,也能轻松校正图像。
4 位读者喜欢这篇文章。
Woman sitting in front of her computer

Ray Smith

多年前,我在一家二手书店的书架上翻找时,偶然发现一本名为《Berkeley 4.2 & 4.3 BSD 的 UNIX 系统命令摘要》的小册子,由 Specialized Systems Consultants 出版。我买下它是出于好奇,因为它将近 20 年的历史,但仍然在很大程度上适用于现代 Linux 和 BSD。

这在当时和现在都让我觉得有趣。一本 1986 年编写的小册子在 2016 年仍然在很大程度上具有相关性,而同一书架上关于专有操作系统的书籍则不值一提。(想一想:你认为哪种技术能够在僵尸末日中幸存下来?)我把这本小册子放在自己的书架上好几年了,但我突然想到,对这件文物进行一些数字保存可能是有价值的,所以我决定扫描这本小册子以创建一个 CBZ 电子书

使用 Skanlite 进行扫描很容易,尽管很耗时。但是,当我完成后,我发现有些页面不太水平。

A page of text, including a table of contents and a glossary, that is crooked and distorted

(Seth Kenlon, CC BY-SA 4.0)

在印刷中,这被称为套准问题,意思是正在印刷的内容的位置在页面上没有正确定向。

ImageMagick

ImageMagick 是一款非交互式的基于终端的图形编辑器。在像纯文本终端这样没有图形的环境中尝试编辑图形似乎违反直觉,但实际上这非常常见。例如,当您上传图像以用作 Web 应用程序的个人资料图片时,应用程序服务器上的脚本很可能会使用 ImageMagick 或其库来处理您的图像。非交互式编辑器的优势在于,您可以制定需要对示例图像执行的操作,然后只需按一下按钮即可将这些效果应用于数百个其他图像。

ImageMagick 通常与任何图形编辑器一样强大,只要您花时间发现它的许多功能以及如何组合它们以达到所需的效果。在这种情况下,我想旋转倾斜的页面。在搜索 ImageMagick 的文档后,我发现我需要的解决方案的 ImageMagick 术语称为 deskew(去倾斜)。将您的术语与别人的术语对齐在任何您还不了解的事物中都是一个挑战,因此当您接触 ImageMagick(或任何事物)时,请记住决定的描述问题或解决方案的词可能与其他人使用的词不同。

使用 ImageMagick 去倾斜带有歪斜文本的图像

$ convert page_0052.webp -deskew 25% fix_0052.webp

-deskew 选项表示可接受的倾斜阈值。倾斜度是通过追踪看起来像字母的对象的峰和谷来确定的。根据您的扫描有多歪斜,您可能需要高于或低于 25% 的阈值。我曾经高达 80%,到目前为止,低于 25% 的阈值没有任何效果。

这是结果

The same page of text, now with the text properly aligned

(Seth Kenlon, CC BY-SA 4.0)

已修复!将此应用于文档的其余 55 页,修复了倾斜的页面,而对已经笔直的页面没有任何影响。换句话说,由于我的阈值设置,在不需要调整的页面上运行此命令是安全的。

使用 ImageMagick 裁剪图像

在校正倾斜之后,并且因为我扫描的每个页面都比必要的更多,以防止意外切掉文字,所以我决定裁剪我校正后的页面是有意义的。我很高兴保留边距周围的一些空间,但不想保留太多。我经常对本网站上的图像使用 ImageMagick 的 crop 功能,所以我很熟悉这个选项。但是,我需要确定如何裁剪每个页面。

首先,我需要图像的大小

$ identify fixed_0052.webp
WEBP 1128x2593 1128x2593+0+0 8-bit sRGB 114732B 0.020u 0:00.021

了解了大小后,我能够对我可以承受损失多少像素做出一些估计。经过几次试运行,我想出了这个

convert fix_0052.webp -gravity Center -crop 950x2450+0+0 crop_0052.webp

这不是完全匹配,但当我将其应用于小册子中的其他图像时,它证明很重要。页面的内容和扫描仪放置位置在此处和彼处有所不同,所以我很高兴给每个页面都留出一些喘息的空间。

这是校正和裁剪后的图像

The same page of text, with the previous fixes applied and crooked white margins around the page cropped out.

(Seth Kenlon, CC BY-SA 4.0)

使用开源进行批量图像编辑

ImageMagick 的美妙之处在于,一旦您找到了修复图像的公式,您就可以将该修复应用于所有需要相同修复的图像。我使用 GNU Parallel 来做到这一点,它使用我的所有 CPU 核心来完成数百页图像的校正。这不需要很长时间,结果不言而喻。更重要的是,我得到了 UNIX 历史上一件有趣文物的数字档案。

Seth Kenlon
Seth Kenlon 是一位 UNIX 极客、自由文化倡导者、独立多媒体艺术家和 D&D 爱好者。他曾在电影和计算机行业工作,而且经常同时工作。

贡献者

评论已关闭。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.