有没有办法制作一个自动纠正扫描文件的脚本?

时间:2012-04-20 17:31:51

标签: linux shell imagemagick gimp

我经常扫描手写文档以发送给同事,并且需要在扫描后对数字文件进行更正。 (例如,我将原始文档上的错误更改为白色。)

我正在考虑一些可以执行以下操作的脚本:

将彩色扫描图像(比如tiff)作为输入,并根据图像中的彩色校正自动进行简单校正。

例如,最简单的情况是:我只在白色上写黑色。有一个区域我犯了错误,所以我在那个区域周围绘制了一个红色的闭合圆圈(在实际纸张上用笔)。然后我扫描图像(或通常很多)。现在我希望脚本擦除所有图像中的每个区域,这样我的错误就会在结果图像中消失。

如何在Linux环境中实现这一点的任何想法,例如:与Image Magick合作?


看起来像带有script-fu的Gimp可能是它应该足够强大的方式。有人可以通过指出上面的例子看起来像在script-fu中来给我一个提示吗?

2 个答案:

答案 0 :(得分:2)

我正在考虑基于ImageMagick的解决方案。我们需要以下步骤:

  1. 找到用于在扫描文档中绘制的颜色(现在称为目标颜色);
  2. 在图片中找到其xy坐标;
  3. 将此位置作为种子传递到Flood Fill算法。
  4. 我们可以根据ImageMagick的功能使用以下脚本:

    1. 输出图片中所有独特的颜色。这将用于找出目标颜色(command source)的RGB分量。

      convert <image> -unique-colors -depth 8 txt:- > output.txt
      
    2. 输出文本文件中每种颜色的坐标:

      convert <image> txt:- > coord.txt
      
    3. 找到目标颜色的xy坐标(command source)。假设步骤1获得的目标颜色为红色:

      grep red coord.txt
      
    4. 最后,使用xy作为floodfill的种子,用您想要的颜色(command source)替换圆圈区域。在这种情况下,我使用white来删除区域:

      convert <image> -fill white -fuzz 13% \
              -draw 'color <x>,<y> floodfill' <image_floodfill_output>
      
    5. -fuzz参数将避免原来red并因噪音而损坏的颜色也会被替换。

      tutorial提供了有关floodfill功能的更多信息,例如如何替换边缘颜色。

答案 1 :(得分:0)

我建议查看一下扫描器扫描器(也许是scansnap 3100)。捆绑软件可以做的一些事情可能会有所帮助。

您可能会发现您找到的任何软件/脚本都无法按照您的喜好运行。听起来很多这些编辑都需要用人眼来看待。也许你可以聘请一位私人助理来为你做出这些更正。 :)